Float vs удвоенная производительность в C # с учетом кеша - PullRequest
2 голосов
/ 31 мая 2011

Я проверил и смог найти множество сообщений о производительности float против double ( здесь - это одно, а здесь - это другое). В большинстве случаев говорят, что они имеют одинаковую производительность, потому что они конвертируются FPU в 10-байтовые действительные числа. Но я все еще не убежден. Что, если вопросы местности будут рассмотрены надлежащим образом? Рассмотрите возможность выполнения побитового XOR для большого числа битов, если не считать 0 битов, потребуется значительно меньше времени, когда данные помещаются в кэш (с плавающей запятой). Выполнение XOR и подсчета битов с помощью регулярных (не SIMD-инструкций) увеличит время обработки. Я пытался написать какой-то тест, чтобы подтвердить это, но все не так просто.

Один вопрос: преобразованы ли эти два типа в кеш одинакового размера?

В общем, мне было интересно, может ли кто-нибудь охарактеризовать поведение этих 2 вариантов в разных ситуациях?

1 Ответ

3 голосов
/ 31 мая 2011

Что, если проблемы с местностью будут рассмотрены надлежащим образом?

Все так же, потому что они обычно не так высоки, как вы думаете.Если вы имеете дело с float и double, кроме как просто копируете его, на вычисление тратится значительное время.Ваш пример XOR является хорошим примером, где вы думаете неправильно.XOR - это ПРОСТОЙ ЛЕГКО БЫСТРАЯ операция, поэтому важна согласованность.В большинстве случаев с поплавками вы тратите гораздо больше времени на математику.

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