Двойной против плавать на iPhone - PullRequest
47 голосов
/ 26 октября 2009

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

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

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

Ответы [ 3 ]

71 голосов
/ 26 октября 2009

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

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

12 голосов
/ 26 октября 2009

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

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

РЕДАКТИРОВАТЬ: вот интересное прочтение оптимизаций с плавающей запятой в ARM с VFP и NEON SSE.

10 голосов
/ 26 октября 2009

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

...