Двойной против плавать на iPhone
-
06-07-2019 - |
Вопрос
Я только что слышал, что iphone не может выполнять двойное воспроизведение, тем самым делая их намного медленнее, чем обычное плавание.
Это правда? Доказательства?
Я очень заинтересован в этой проблеме, потому что моя программа нуждается в высокоточных вычислениях, и мне придется идти на компромисс по скорости.
Решение
iPhone может выполнять аппаратную арифметику одинарной и двойной точности. На 1176 (оригинальные iPhone и iPhone3G) они работают примерно с одинаковой скоростью, хотя вы можете разместить больше данных с одинарной точностью в кешах. На Cortex-A8 (iPhone3GS, iPhone4 и iPad) арифметика одинарной точности выполняется на устройстве NEON вместо VFP и работает значительно быстрее.
Обязательно отключите режим большого пальца в настройках компиляции для armv6, если вы интенсивно выполняете вычисления с плавающей точкой.
Другие советы
Это слайд-шоу дает представление о том, почему нет хорошей плавающей запятой и почему она есть (векторная единица с плавающей запятой). По-видимому, важно проверить «режим большого пальца» который влияет на то, включена ли поддержка с плавающей запятой. Это не всегда улучшение. Он показывает, как найти правильные инструкции в коде сборки.
Это также зависит от какой версии телефона вы хотите запустить свой код. Самый последний из них кажется «более способным» в математике с плавающей запятой.
РЕДАКТИРОВАТЬ: вот интересное чтение на оптимизации с плавающей запятой в ARM с VFP и NEON SSE.
В руководстве ARM1176JZF-S говорится, что оно поддерживает числа с плавающей запятой двойной точности. Вы должны быть в хорошей форме. Вот ссылка в PDF документацию. Более поздние айфоны - это чипы Cortex, и они не должны быть менее способными.