JavaScript Math.sqrt性能

use*_*284 5 javascript optimization profiling numeric numerical-methods

通过代码分析,我发现Math.sqrt函数特别是在程序中每个时间步运行的大型双嵌套循环中的主要瓶颈。有什么办法可以改善其性能?我应该内联某种迭代计算还是基于查找表的计算?

任何帮助将不胜感激!

我不能用平方计算代替它,因为它不是比较。

编辑:代码的相关部分大致如下

var width = 2000;
var height = 2000;

function update() {
    for (var j = 0; j < height; ++j) {
        for (var i = 0; i < width; ++i) {
            array[i][j] = Math.sqrt(/* some expression involving i and j */);
        }
    }
}

var fps = 60;
setInterval(update, 1000 / fps);
Run Code Online (Sandbox Code Playgroud)

Woo*_*ody 0

当您在二维数组中迭代时,您可以将迭代次数减少~2

例如:

如果你的表达式是ixj,并且你的数组大小是 3-3 从 0 开始,你将在循环中计算:

  • 0*11*0
  • 0*22*0
  • 1*22*1

这是相同的

0x0 1x0 2x0

0x1 1x1 2x1

0x2 1x2 2x2