La racine carrée inverse la plus rapide sur iPhone

Je travaille sur une application iPhone qui implique certains calculs physiques effectués des milliers de fois par seconde. Je travaille sur l'optimization du code pour améliorer le framerate. L'une des pièces que je cherche à améliorer est la racine carrée inverse. En ce moment, j'utilise la méthode de la racine carrée inverse rapide de Quake 3 . Après avoir fait quelques searchs, cependant, j'ai entendu dire qu'il y avait un moyen plus rapide d'utiliser le jeu d'instructions NEON . Je ne suis pas familier avec l'assemblage en ligne et je n'arrive pas à comprendre comment utiliser NEON. J'ai essayé d'implémenter la bibliothèque math-neon mais j'ai des erreurs de compilateur car la plupart des fonctions basées sur NEON manquent de return .

EDIT: J'ai soudainement eu une certaine "question incertaine" votes serrés. Bien que je pense que c'est assez clair et ceux qui ont répondu ont évidemment compris, peut-être que certaines personnes ont besoin de cela explicitement: Comment utilisez-vous Neon pour effectuer des calculs plus rapides? Et est-ce vraiment la méthode la plus rapide pour get la racine carrée inverse sur l'iPhone?

EDIT: J'ai fait quelques tests plus formels sur Neon VS Quake aujourd'hui, mais si quelque chose, je suis encore plus incertain sur le résultat maintenant:

Alors que quake vs neon était trop proche pour dire quelque chose de sûr dans le test de performance de l'application, le tremblement vs 1 / sqrtf () était clairement coupé dans le premier test, et le second test était extrêmement cohérent avec les valeurs qu'il produisait. Ce qui est important à la fin, cependant, c'est la performance de l'application, donc je vais prendre ma décision finale basée sur ce test.

La réponse acceptée de la question que vous avez liée fournit déjà la réponse, mais ne l'énonce pas:

 #import <arm_neon.h> void foo() { float32x2_t inverseSqrt = vrsqrte_f32(someFloat); } 

L'en-tête et la fonction sont déjà fournis par le SDK iOS.

https://code.google.com/p/math-neon/source/browse/trunk/math_sqrtf.c <- il y a une implémentation au néon d'invsqrt là, vous devriez pouvoir copyr le bit d'assembly tel quel