Я хочу оценить, например, насколько дороже деление по отношению к добавлению, причем IEEE 754 удваивается на процессорах Intel. Мне нужно, чтобы оценить, какие операции могут привести к более высокой производительности в конкретном внутреннем цикле.Насколько дороги IEEE 754 двойные операции по отношению друг к другу на чипах Intel I7?
ответ
Intel 64 and IA-32 Architectures Optimization Reference Manual С, страницы 14-14 и 14-15,
ADDSD
имеет задержку 5 циклов и пропускную способность 1/цикл.DIVSD
имеет задержку в 62 цикла и пропускную способность 1/61 циклов.
Итак, если ваш код имеет жесткие проблемы с зависимостью данных, добавление примерно в 12 раз быстрее, чем деление. Однако при тщательной оптимизации вы можете сделать дополнение в 61 раз быстрее, чем деление. Другие факторы, вероятно, сделают разрыв более крупным.
Прежде всего, если вы не пишете сборку, вы можете только гадать, какие инструкции генерирует ваш компилятор. –
Или вы можете просто посмотреть, какая сборка сгенерирована (без догадок); который IMO является довольно хорошим способом записи сборки (запись источника и контроль выхода компилятора). Компиляторы большую часть времени пишут удивительную сборку, но иногда им нужен обзор кода от человека. – Apriori
http://www.agner.org/optimize/instruction_tables.pdf – Mysticial
-1 из-за отсутствия исследовательских усилий, плюс он не имеет ничего общего с тегами 'c' или' C++ '. –
Почему бит-манипуляции? – harold