3

我想知道以下哪种方法可以被认为更有效。第一个非常简单,它使用两个 for 循环。最后一个是我个人最喜欢的,因为它只用了一个。不过,我不太确定每种方法的优缺点,因为它们都非常快。

它们旨在与CanvasPixelArray或以类似方式构造的那些一起使用。代表二维矩阵的宽度和高度
wh

for (var y = 0; y < h; y++) {
    for (var x = 0; x < w; x++) {

        // ...
    }
}


for (var i = 0, l = w*h; i < l; i++) {

    var x = i%w;
    var y = Math.floor(i/w);

    // ...
}
4

1 回答 1

1

第一个会更有效率。想想您在第一种方法中执行的操作数量:每像素一次增量加上每行的额外增量。另一种方法节省了每行的额外增量,但用更复杂的东西代替了它。除了四舍五入和%代价高昂之外,y每次都会重新计算该值,而方法1中每行仅计算一次。总之,每行的额外增量将远远快于添加所有这些补充操作每个像素。这并不是说您不应该使用第二种方法,但是鉴于您发布的代码,第一种方法的性能会更好。

于 2012-12-05T09:48:06.823 回答