Double vs float на iPhone

Я только что слышал, что iphone не может делать двойным путем, тем самым делая их намного медленнее, чем обычный плавающий.

Это правда? Доказательства?

Меня очень интересует проблема, потому что моя программа требует высокоточных вычислений, и мне придется идти на компромисс по скорости.

IPhone может выполнять как одно-, так и двойную точность арифметики в оборудовании. На 1176 (оригинальный iPhone и iPhone3G) они работают примерно с одинаковой скоростью, хотя вы можете вставлять больше данных с одной точностью в кэш. На Cortex-A8 (iPhone3GS, iPhone4 и iPad) арифметика с одной точностью выполняется на блоке NEON вместо VFP и значительно быстрее.

Обязательно отключите режим большого пальца в настройках компиляции для armv6, если вы выполняете интенсивные вычисления с плавающей запятой.

Это слайд-шоу дает представление о том, почему нет хорошей точки с плавающей точкой и почему существует (векторная единица с плавающей запятой). По-видимому, важно проверить «режим большого пальца», который влияет на поддержку поддержки с плавающей запятой. Это не всегда является улучшением. Он показывает, как найти правильные инструкции в коде сборки.

Это также зависит от того, какую версию телефона вы хотите запустить. Самый последний из них кажется «более способным» при выполнении математики с плавающей запятой.

EDIT: вот интересное чтение оптимизаций с плавающей запятой на ARM с VFP и NEON SSE.

В руководстве ARM1176JZF-S говорится, что он поддерживает числа с плавающей запятой с двойной точностью. Вы должны быть в хорошей форме. Вот ссылка на документацию в формате PDF. Позже iPhones являются чипами Cortex и, безусловно, не должны быть менее способными.

  • Построение 32-битного поплавка из 4 составных байтов
  • Как я могу написать функцию питания самостоятельно?
  • Разница между десятичной, плавающей и двойной в .NET?
  • "F" после числа / float в Objective-C / C
  • Какой диапазон чисел может быть представлен в 16-, 32- и 64-битных системах IEEE-754?
  • поплавковые биты и строгий псевдоним
  • Арифметика с плавающей точкой не дает точных результатов
  • Операции с плавающей запятой в C-ассоциативном?
  • В MATLAB переменные ДЕЙСТВИТЕЛЬНО двойной точности по умолчанию?
  • Как обнаружить переполнение и переполнение двойной точки с двойной точностью?
  • Эмуляция «double» с использованием 2 "float" s
  • Давайте будем гением компьютера.