SGI/3dfx 使用的快速平方反比函数(尤其是在 Quake 中)经常被认为比等效的汇编指令更快,但声称这一点的帖子似乎相当过时。我对它在更现代的硬件上的性能感到好奇,特别是在 iPhone 等移动设备上。如果 Quake sqrt 在桌面系统上不再是值得优化的,我不会感到惊讶,但对于涉及大量 3D 数学的 iPhone 项目呢?这是值得包含的东西吗?
最佳答案
没有。
NEON 指令集(与所有其他矢量 ISA* 一样)具有硬件近似倒数平方根指令,它比经常引用的“技巧”快得多。如果倒数平方根实际上是代码中的性能瓶颈,请使用它(一如既往,首先进行基准测试;如果没有确凿的证据表明其性能很重要,则不要花时间优化某些内容)。
您可以通过使用 vrsqrte.f32
编写自己的程序集(内联或其他方式)来获取它。指令,或者通过包含 <arm_neon.h>
来自 C、Objective-C 或 C++ header 并使用 vrsqrte_f32( )
内在的。
[*] 在上交所是 rsqrtss
/rsqrtps
;在 Altivec 上是 frsqrte
/vrsqrte
.
关于iphone - iPhone 上的快速平方根反比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6666451/