Арифметическая производительность Float и Integer на современных чипах - PullRequest
3 голосов
/ 06 января 2010

Рассмотрим декодер Витерби на аддитивной модели. Это тратит свое время, делая дополнения и сравнения. Теперь рассмотрим два: один с C / C ++ float в качестве типа данных, а другой с int. На современных чипах можно ожидать, что int будет работать значительно быстрее, чем float? Или чудеса конвейерной обработки (и отсутствие умножения и деления) сделают все это равномерным?

1 Ответ

3 голосов
/ 06 января 2010

Зависит от того, что вы подразумеваете под значительно . Я обычно ожидаю увидеть, как ints работает примерно в 2 раза быстрее, но все зависит от того, что еще происходит. Современные процессоры, которые могут обрабатывать набор инструкций AMD64 (AMD / Core2), обычно могут эффективно выполнять 1 операцию с плавающей запятой за цикл , если они могут поддерживать конвейер загруженным

Они также обычно могут выполнять 2 или 3 целочисленных операции за одно и то же время. и даже может сделать оба сразу.

Но не так сложно написать код, который останавливает конвейер, вы должны избегать использования результата вычисления сразу после его завершения, иначе конвейер остановится, и вы получите больше как 3 цикла на умножение, а не 1.

Инструкции за цикл для PowerPC в большинстве случаев такие же или лучше, чем у AMD / Intel.

Приложение:

Кстати, вы можете обнаружить, что сравнения (или, скорее, ответвления, которые подразумевают сравнения) заканчиваются тем, что стоят намного больше, чем дополнения. ошибочно предсказанные ветки стоят дорого, особенно на процессоре Pentium 4.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...