Насколько большой выиграш при данных алгосах пересылки

Тема в разделе "WASM.BEGINNERS", создана пользователем zoool, 21 дек 2007.

  1. zoool

    zoool New Member

    Публикаций:
    0
    Регистрация:
    1 дек 2007
    Сообщения:
    412
    САБЖ
    Есть два самопальных алгоса копирования одного буффера в другой

    Первый такой

    Код (Text):
    1. mov ecx, [BufSize]
    2. mov esi, [pBuf1]
    3. mov edi, [pBuf2]
    4. rep movsb
    Второй такой:

    Код (Text):
    1. push edx
    2. mov esi, [pBuf1]
    3. mov edi, [pBuf2]
    4. mov ecx, [BufSize]
    5. mov edx, ecx
    6. and edx, 3
    7. shr ecx, 2
    8. rep movsd
    9. or edx, edx
    10. jz @F
    11. mov ecx, edx
    12. rep movsb
    13. @@:
    14. pop edx
    Размер буффера примерно около метра

    1. Даст ли второй алгос какой-то более-менее ощутимый выиграш в скорости или проще заюзать первый?
    2. При каких размерах буффера примерно выигрыш по скорости станет ощущаться
    3. Можно ли еще как-то ускорить алгос пересылки из одного буффера в другой?
     
  2. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Про это уже несколько раз говорилось -- rep movsd медленнее чем ее "разложенный" эквивалент:

    Код (Text):
    1. .l00p:
    2. mov eax, [esi]
    3. mov [edi], eax
    4. add esi, 0x4
    5. add edi, 0x4
    6. sub ecx, 0x1
    7. jnz .l00p
     
  3. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Слышал звон ? ;)
    На больших объемах выравненных данных rep movsd работает быстрее даже развернутого варианта простого копирования, не говоря уж о твоем сверхпростом

    PS: К сожалению одна хорошая давняя тема вылетела в трубу - по скорости копирования данных разными методами (memcopy by S_T_A_S_). У меня чуток переделанный вариантик memcopy сохранился - могу выложить, если кого червь сомнения грызть будет :)
     
  4. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Было бы неплохо, а то, я уже запутался, что таки скорее (и при каких условиях).
     
  5. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Mika0x65
    А в мануальчики давно заглядывал ? (Фог, AMD Optim, P6 Optim)

    Держи исходник на фасме, перед запуском желательно параметры cacheline и cachesize под свой проц поставить (на перетряску кэша влияют, иначе при повторных проходах могут заниженные результаты получиться)