Quake III的Fast Inverse Square Root似乎使用了浮点技巧。据我了解,浮点表示可以有一些不同的实现。
那么有可能在Javascript中实现快速逆平方根吗?
它会返回相同的结果吗?
float Q_rsqrt(float number) {
long i;
float x2, y;
const float threehalfs = 1.5F;
x2 = number * 0.5F;
y = number;
i = * ( long * ) &y;
i = 0x5f3759df - ( i >> 1 );
y = * ( float * ) &i;
y = y * ( threehalfs - ( x2 * y * y ) );
return y;
}
让我知道是否最好在StackOverflow上问这个问题。这似乎更合适,因为它具有游戏开发者的根源,并且主要是游戏开发者的应用程序。
—
Atav32 2012年
JavaScript有指针吗?
—
Pubby 2012年
尽管它试图使用“特殊”功能来加快整个程序的速度,但很可能是您引入了错误或根本就没有加快任何速度(例如,请参见下面的凯文·里德的回答)。c2.com/cgi/wiki?PrematureOptimization
—
Daniel Carlsson
抱歉,将低级FP优化与Javascript结合使用看起来像是订购4个肥肉汉堡,薯条和减肥可乐,以保持瘦身。不要那样做,这是毫无意义和荒谬的。
—
没关系
快速反向sqrt在游戏编程中是非常常见的操作,并且所有游戏机都在硬件中实现此操作。ES6绝对应该考虑将Math.fastinvsqrt(x)添加到语言中。
—
约翰·亨克尔