Быстрый обратный квадратный корень на iPhone - PullRequest
6 голосов
/ 12 июля 2011

Функция быстрого обратного квадрата, используемая SGI / 3dfx и особенно в Quake, часто упоминается как более быстрая, чем эквивалентная инструкция по сборке, однако сообщения, утверждающие, что они выглядят довольно устаревшими. Мне было интересно узнать его производительность на более современном оборудовании, особенно на мобильных устройствах, таких как iPhone. Я не удивлюсь, если Quake sqrt больше не будет полезной оптимизацией для настольных систем, но как насчет проекта iPhone, включающего много 3D математики? Это что-то, что стоит включить?

1 Ответ

13 голосов
/ 12 июля 2011

Нет.

В наборе команд NEON (как и в любом другом векторе ISA *) имеется аппаратная примерная инструкция обратного квадратного корня, которая на намного быстрее , чем та, которую часто цитируют.Вместо этого используйте его, если взаимный квадратный корень на самом деле является узким местом производительности в вашем коде (как всегда, сначала в тесте; не тратьте время на оптимизацию чего-либо, если у вас нет веских доказательств того, что его производительность имеет значение).

Вы можете получитьдля этого, написав свою собственную сборку (встроенную или иную) с помощью инструкции vrsqrte.f32 или из C, Objective-C или C ++, включив заголовок <arm_neon.h> и используя собственный vrsqrte_f32( ).

[*] На SSE это rsqrtss / rsqrtps;на Altivec это frsqrte / vrsqrte.

...