У меня возникли проблемы с пониманием того, что "как удвоенное, так и медленнее, чем float, мы будем использовать 64-битное целое число".Предполагать, что производительность всегда была черным искусством, требующим большого опыта, на современном оборудовании это еще хуже, учитывая ряд факторов, которые необходимо учитывать.Даже измерение сложно.Я знаю несколько случаев, когда микро-тесты давали одно решение, но в контексте измерения показали, что другое было лучше.
Первое замечание, что два из факторов, которые были даны для объяснения заявленной более медленной двойной производительности, чем float,здесь не уместно: необходимая пропускная способность будет такой же для double, как и для 64-битного int, а векторизация SSE2 даст преимущество для удвоения ...
Тогда рассмотрим, чем использование целочисленных вычислений увеличит нагрузку на целочисленные регистры ивычислительные единицы, когда, видимо, с плавающей точкой один будет оставаться на месте.(Я уже видел случаи, когда выполнение целочисленных вычислений в двойных числах было победой, связанной с дополнительными доступными вычислительными единицами)
Поэтому я сомневаюсь, что использование собственной арифметики с фиксированной запятой было бы выгоднее, чем использование двойных (но я мог быбыть показанным неправильно мерами).