2014-11-17 4 views
-1

Я хочу оценить, например, насколько дороже деление по отношению к добавлению, причем IEEE 754 удваивается на процессорах Intel. Мне нужно, чтобы оценить, какие операции могут привести к более высокой производительности в конкретном внутреннем цикле.Насколько дороги IEEE 754 двойные операции по отношению друг к другу на чипах Intel I7?

+1

http://www.agner.org/optimize/instruction_tables.pdf – Mysticial

+1

-1 из-за отсутствия исследовательских усилий, плюс он не имеет ничего общего с тегами 'c' или' C++ '. –

+0

Почему бит-манипуляции? – harold

ответ

4

Intel 64 and IA-32 Architectures Optimization Reference Manual С, страницы 14-14 и 14-15,

  • ADDSD имеет задержку 5 циклов и пропускную способность 1/цикл.

  • DIVSD имеет задержку в 62 цикла и пропускную способность 1/61 циклов.

Итак, если ваш код имеет жесткие проблемы с зависимостью данных, добавление примерно в 12 раз быстрее, чем деление. Однако при тщательной оптимизации вы можете сделать дополнение в 61 раз быстрее, чем деление. Другие факторы, вероятно, сделают разрыв более крупным.

+0

Прежде всего, если вы не пишете сборку, вы можете только гадать, какие инструкции генерирует ваш компилятор. –

+0

Или вы можете просто посмотреть, какая сборка сгенерирована (без догадок); который IMO является довольно хорошим способом записи сборки (запись источника и контроль выхода компилятора). Компиляторы большую часть времени пишут удивительную сборку, но иногда им нужен обзор кода от человека. – Apriori