Вопрос про быстрое вычитание 32-хбайтных чисел.

Тема в разделе "WASM.CRYPTO", создана пользователем Moul, 21 июл 2008.

  1. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Moul
    В P4 латентность зависимых adc\sbb составляет 6-8 тактов, против 2 тактов в P6 и атлонах. Поэтому об эффективности, тем более "шибкой" говорить не приходится.
    PS: При сложении чисел можно поизвращаться за счет ускоренного вычисления переноса для всех сочетаний кроме a+b=-1, считая его сравнительно редким. Такая "статистическая" оптимизаций дает ускорение в ~1.5 раза (см.пример). Но с вычитанием сложнее, т.к. ускоренное вычисление переноса возможно для случаев кроме a-b=0, а это отнюдь не редкий случай если брать в расчет лидирующие нулевые разряды a=b=0
     
  2. chAlx

    chAlx New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2008
    Сообщения:
    74
    Я тоже считаю, что оптимизация сильно преждевременна: узкое место в такой операции может быть только при очень кривой реализации..

    Но вопрос любопытный. Я бы советовал подняться уровнем повыше и подобрать код на C (или либу, или параметры транслятора), который компилируется в наиболее производительный асм (заодно посмотреть, что они вообще напридумывали). Всё же разработчики компиляторов оптимизацией занимаются довольно плотно, особенно Intel под свои камни.

    Ещё вариант -- заюзать что-нибудь более разрядное, чем регистры общего назначения. Например, какое-нибудь SSE или чип видеокарты..