快速反平方根iPhone上
SGI / 3dfx使用的快速反平方函数,最常见的是在Quake中引用速度快于汇编指令的速度,但声称看起来相当过时。 我很好奇它在更现代化的硬件上的表现,尤其是在像iPhone这样的移动设备上。 如果Quake sqrt不再是桌面系统上的有价值优化,我不会感到惊讶,但对于涉及大量3D数学的iPhone项目,该怎么办? 这是否值得包含?
没有。
NEON指令集(与其他矢量ISA *类似)具有硬件近似倒数平方根指令,其速度远远超过引用的“技巧”。 如果倒数平方根实际上是代码中的性能瓶颈(如往常一样,首先是基准;如果没有确凿证据表明它的性能很重要,则不要花时间优化某些东西)。
您可以通过使用vrsqrte.f32
指令编写您自己的程序集(内联或其他方式),或者通过包含<arm_neon.h>
头文件和使用vrsqrte_f32( )
内部函数从C,Objective-C或C ++编写自己的程序集。
[*]在SSE上是rsqrtss
/ rsqrtps
; 在Altivec上它是frsqrte
/ vrsqrte
。