iPhone上的快速反平方根

Tay*_*orP 6 iphone floating-point optimization performance mathematical-optimization

SGI/3dfx使用的快速反平方函数,尤其是在Quake中使用的快速反平方函数通常被引用为比汇编指令等效更快,但是帖子声称看起来很过时.我对它在更现代的硬件上的性能感到好奇,特别是在像iPhone这样的移动设备上.如果Quake sqrt不再是桌面系统上值得优化的话,我不会感到惊讶,但对于涉及大量3D数学的iPhone项目怎么样?这是否值得包括?

Ste*_*non 13

没有.

NEON指令集(与所有其他矢量ISA*一样)具有硬件近似倒数平方根指令,比指定的"技巧" 快得多.如果倒数平方根实际上是代码中的性能瓶颈,则使用它(一如既往,首先是基准;如果没有确凿的证据证明其性能很重要,请不要花时间优化某些东西).

您可以通过使用vrsqrte.f32指令编写自己的程序集(内联或其他),或者通过包含<arm_neon.h>标头和使用vrsqrte_f32( )内在函数从C,Objective-C或C++ 编写.

[*]在SSE上它是rsqrtss/ rsqrtps; 在Altivec它是frsqrte/ vrsqrte.

  • @phkahler:我在他的回答中说出这是近似的事实; 就此而言,"地震黑客"也是近似的.关于NEON的一个好处是,通过`vrsqrts.f32`指令也可以为Newton步骤提供硬件支持,该指令应该用于代替通用的Newton迭代. (2认同)