SGI / 3dfx使用的快速反平方函数,尤其是在Quake中使用的快速反平方函数通常被引用为比汇编指令等效更快,但是帖子声称看起来很过时。我对它在更现代的硬件上的性能感到好奇,特别是在像iPhone这样的移动设备上。如果Quake sqrt不再是桌面系统上值得优化的话,我不会感到惊讶,但对于涉及大量3D数学的iPhone项目怎么样?这是否值得包含?
答案 0 :(得分:13)
没有
NEON指令集(与所有其他矢量ISA *一样)具有硬件近似平方根指令,其比经常引用的“技巧”快得多。如果倒数平方根实际上是代码中的性能瓶颈,则使用它(一如既往,首先是基准;如果没有确凿的证据表明其性能很重要,请不要花时间优化某些东西)。
您可以通过使用vrsqrte.f32
指令编写自己的程序集(内联或其他),或者通过包含<arm_neon.h>
标头并使用{{C},C ++,C ++,C ++或C ++来编写它{1}}内在的。
[*]在SSE上vrsqrte_f32( )
/ rsqrtss
;在Altivec上rsqrtps
/ frsqrte
。