我想知道以下哪种方法可以被认为更有效。 第一个很简单,它使用两个for循环。最后一个是我个人最喜欢的,因为它只使用一个。我不太确定每种方法的优点和缺点,因为它们都非常快。
它们旨在与CanvasPixelArray或以类似方式结构化的方式一起使用
w
和h
代表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);
// ...
}
答案 0 :(得分:1)
第一个会更有效率。考虑一下您在第一种方法中所做的操作次数:每个像素增加一次,每行增加一次。另一种方法是每行节省额外的增量,但用更复杂的东西替换它。除了舍入和昂贵的%
之外,每次都会重新计算y
值,而在方法1中每行只计算一次。简而言之,每行额外增加比每个像素添加所有这些补充操作要快得多。这并不是说你不应该使用第二种方法,但考虑到你发布的代码,第一种方法会更好。