Что быстрее?

Тема в разделе "WASM.A&O", создана пользователем MeteO, 8 ноя 2007.

  1. MeteO

    MeteO New Member

    Публикаций:
    0
    Регистрация:
    17 май 2003
    Сообщения:
    9
    Адрес:
    Russia
    Код 32 бита.
    что быстрее
    mov ecx, 0xD

    или
    xor ecx, ecx
    mov cl, 0xD
    ?
     
  2. Proteus

    Proteus Member

    Публикаций:
    0
    Регистрация:
    19 июн 2004
    Сообщения:
    344
    Адрес:
    Russia
    В принципе первое. Но это немного от ситуации зависит.
     
  3. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    MeteO

    Однозначно первое, во втором случае -- две команды, связанные между собой по данным, что не позволяет процессору параллельно их выполнить.
     
  4. Proteus

    Proteus Member

    Публикаций:
    0
    Регистрация:
    19 июн 2004
    Сообщения:
    344
    Адрес:
    Russia
    Скорость не только от конвеера может зависеть. Если это будет какой-то цикл, который не помещается в кеш, то может размер спасёт. Разумеется сам по себе первый способ быстрее, но можно нарошно напридумать немного этакой экзотики, когда ....
     
  5. bPED

    bPED New Member

    Публикаций:
    0
    Регистрация:
    19 янв 2008
    Сообщения:
    52
    короче будет
    mov eax,$d
    и наверное быстрее.
     
  6. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    SII
    Никакие они не связные.
    очистка xor reg, reg специально оптимизированна.
    У Intel тоже подобное написанно.

    Быстрее разумеется первый способ. Так как команда одна.
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Первое быстрее, пока выполняется xor ebx,ebx, процессор не сможет выполнить вторую команду, потому что в ней используется регистр первой. Да и наиболее быстро выполняется загрузка 32 разрядных чисел в регистр.
     
  8. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    Неверно, xor одна из инструкций, как уже сказали, которая рвёт цепочку зависимости.
    Далее
    "Какие ваши доказательства?"(с)
    Я считаю, что выполняется одинаково быстро на современных микроархитектурах.
     
  9. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    P4/3014MHz
    Код (Text):
    1. cli
    2. rdtsc
    3. mov ebx,eax
    4. xor ecx,ecx
    5. mov cl,0Dh
    6. rdtsc
    7. sub eax,ebx
    8. sti
    Возвращает Eax=69h
    Код (Text):
    1. cli
    2. rdtsc
    3. mov ebx,eax
    4. mov ecx,0Dh
    5. rdtsc
    6. sub eax,ebx
    7. sti
    Возвращает Eax=61h
    Второе быстрее на 8 тактов.
     
  10. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    ога, набирается >100 тактов на 3-4 команды не оперирующих памятью. прочитай хотя бы криса про точность rtdsc.
     
  11. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    Люди, составляющие Latency Tables для Intel Core 2 и AMD64 K7-K10 тоже так считают :)
     
  12. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    n0name
    Ты прав, неудачный способ, попробую с RTC.
     
  13. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    я обычно для таких целей vtune юзаю.