我正在开发一个iPhone应用程序,该应用程序涉及每秒进行数千次的某些物理计算。我正在优化代码以提高帧率。我要改善的部分之一是平方根倒数。现在,我正在使用Quake 3 fast inverse square root方法。但是,在进行了一些研究之后,我听到了there is a faster way by using the NEON指令集。我不熟悉内联汇编,无法弄清楚如何使用NEON。我尝试实现math-neon库,但由于大多数基于NEON的函数都缺少return
,因此出现编译器错误。
编辑:我突然得到一些“不清楚的问题”接近的投票。尽管我认为它很清楚,并且回答者也很清楚,但也许有些人需要它明确指出:
您如何使用Neon进行更快的计算?这真的是在iPhone上获得平方根倒数的最快方法吗?
编辑:今天我在Neon VS Quake上做了一些更正式的测试,但是如果有的话,我现在对结果更加不确定:
尽管在应用程序性能测试中,quake vs neon几乎无法肯定地说什么,但在第一个测试中却很清楚地将quas vs 1/sqrtf()切掉了,第二个测试与其输出的值极其一致。不过,最重要的是应用性能,因此我将根据该测试做出最终决定。
最佳答案
accepted answer的question you've linked已经提供了答案,但没有给出答案:
#import <arm_neon.h>
void foo() {
float32x2_t inverseSqrt = vrsqrte_f32(someFloat);
}
header 和功能已由iOS SDK提供。
关于ios - iPhone上最快的逆平方根,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21038641/