Najszybszy odwrócony pierwiastek kwadratowy na iPhone

Pracuję nad aplikacją iPhone'a, która zawiera pewne obliczenia fizyczne, które są wykonywane tysiące razy na sekundę. Pracuję nad optymalizacją kodu, aby poprawić szybkość odtwarzania. Jednym z elementów, na które patrzę, jest poprawa odwrotności pierwiastka kwadratowego. W tej chwili używamQuake 3 szybki odwrotny pierwiastek kwadratowy metoda. Jednak po przeprowadzeniu badań usłyszałem toistnieje szybszy sposób używania NEON zestaw instrukcji. Nie znam się na montażu inline i nie wiem, jak korzystać z NEON. Próbowałem wdrożyćmatematyka-neon ale mam błędy kompilatora, ponieważ brakuje większości funkcji opartych na NEONreturn.

EDYTOWANIE: Nagle otrzymałem „niejasne” głosy. Chociaż uważam, że jest to dość jasne, a ci, którzy odpowiedzieli w oczywisty sposób zrozumieli, może niektórzy ludzie potrzebują tego wyraźnie:Jak używać Neon do wykonywania szybszych obliczeń? I czy jest to naprawdę najszybsza metoda na uzyskanie odwrotnego pierwiastka kwadratowego na iPhonie?

EDIT: Zrobiłem dzisiaj kilka bardziej formalnych testów na Neon VS Quake, ale jeśli już, to jestem jeszcze bardziej niepewny co do wyniku:

Testowanie w aplikacji: (aplikacja, która jest obecnie w sklepie z aplikacjami ze zmodyfikowaną metodą invsqrt)

Metoda Quake (prowadząca przez marginalny wzrost średniej FPS w stresujących warunkach)Neon (To było naprawdę blisko, ale wydawało się, że Quake był nieco szybszy)1 / sqrtf () (nieco bardziej zauważalna różnica, spadek 1-3 FPS).

„Formalne” testowanie (aplikacja, która pochłania procesor mojego telefonu. Czasy, jak długo trwa każda metoda, aby przejść przez tablicę 10000000 losowo wygenerowanych pływaków)

Neon (najwyraźniej najszybszy i podwaja prędkość, jeśli jest używany do robienia dwóch sqrts na raz).1 / sqrtf () (Tylko nieznacznie wolniej niż Neon. Ten zaskakujący wynik prowadzi mnie do uznania tego testu za „niejednoznaczny”, dopóki nie zbadam dalej)Quake (Ta metoda, co zaskakujące, była o kilka rzędów wielkości wolniejsza niż pozostałe dwie metody. Jest to szczególnie zaskakujące, biorąc pod uwagę jej wydajność w drugim teście).

Podczas gdy quake vs neon był zbyt blisko, by powiedzieć coś na pewno w teście wydajności aplikacji, quake vs 1 / sqrtf () było dość wyraźnie wyłączone w pierwszym teście, a drugi test był wyjątkowo spójny z wartościami, które wyprowadził. W końcu ważne jest jednak działanie aplikacji, więc podejmę ostateczną decyzję na podstawie tego testu.

questionAnswers(2)

yourAnswerToTheQuestion