Вопрос

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top