Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

На всех ли процессорах арифметическая операция "умножение" выполняется дольше чем "сложение" (числа с плавающей запятой)

Эдуард Нугуманов Профи (948), закрыт 13 лет назад
Дополнен 13 лет назад
В настоящее время занимаюсь подсчетом вычислительной сложности одного алгоритма. Много где слышал, что достаточно подсчитать только количество умножений и делений в алгоритме, т. к. операции сложения выполняются намного быстрее.
Дополнен 13 лет назад
Проводил экспериментальный расчет:
в цикле запустил N умножений, замерил время работы цикла
в цикле запустил N делений, замерил время работы цикла
в цикле запустил N сложений, замерил время работы цикла
в цикле запустил N вычитаний, замерил время работы цикла

Получилось
20 с
6 с
3 с
3 с

Но на всех ли процессорах умножение затратнее сложения?
Дополнен 13 лет назад
Спасибо за ответы!
Я и сам придерживаюсь мнения, что "умножение" сложнее "сложения". Но недавно я наткнулся на статью (ВАКовскую статью) где автор пишет, что на железе, на котором он испытывал свой алгоритм "умножение" и "сложение" на его вычислительной системе выполняется с одинаковой скоростью.
Лучший ответ
Alex Dark Профи (738) 13 лет назад
с точки зрения банальной эрудиции - на всех
потому что операция сложения самая простая

Хотя может и придумали какой нибудь проц, в котором умножение работает шустрее, но как то сомнительно
Остальные ответы
0xDD Искусственный Интеллект (149083) 13 лет назад
Вместо умножения на 2 или 3 лучше использовать сложение, а во всех других случаях умножение всё равно лучше.
Антон ХарченкоПросветленный (49614) 13 лет назад
А вместо умножения на два - сдвиг влево.
ignat Гуру (3663) 13 лет назад
умножение - несколько сложений.
ваш кэп
Krab Bark Искусственный Интеллект (191708) 13 лет назад
Да, так как умножение всегда сводится процессором к многим сложениям и сдвигам. Однако всем этим занимается сейчас обычно не основной процессор, а объединенный с ним в одном кристалле специальный математический сопроцессор, который за счет аппаратной реализации операций с плавающей запятой работает значительно быстрее, чем это делали бы арифметико-логические устройства основного процессора (который с числами с плавающей запятой может работать только при программной реализации этих сложений и сдвигов) . Поэтому разница, как это видно по твоему эксперименту, не столь уж велика. Кстати, пока математический сопроцессор перемалывает данные ему числа, основной может заниматься, и обычно занимается, другими делами вроде целочисленной арифметики, логики и адресации.
Похожие вопросы