矩阵迭代 - 哪种方法更有效?

时间:2012-12-05 09:39:21

标签: javascript arrays canvas pixel

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

它们旨在与CanvasPixelArray或以类似​​方式结构化的方式一起使用 wh代表2d矩阵的宽度和高度。

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);

    // ...
}

1 个答案:

答案 0 :(得分:1)

第一个会更有效率。考虑一下您在第一种方法中所做的操作次数:每个像素增加一次,每行增加一次。另一种方法是每行节省额外的增量,但用更复杂的东西替换它。除了舍入和昂贵的%之外,每次都会重新计算y值,而在方法1中每行只计算一次。简而言之,每行额外增加比每个像素添加所有这些补充操作要快得多。这并不是说你不应该使用第二种方法,但考虑到你发布的代码,第一种方法会更好。