3

以下の方法のどれがより効率的であると考えられるか知りたいです。最初のものは非常に単純で、2つのforループを使用します。最後のものは1つしか使用しないので、私の個人的なお気に入りです。どちらもかなり高速なので、それぞれの方法の長所と短所についてはよくわかりません。

これらは、CanvasPixelArrayまたは同様の方法で構造化されたもので使用することを目的としています。2次元行列の幅と高さを表します
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

最初の方が効率的です。最初の方法で実行している操作の数を考えてみましょう: ピクセルごとに 1 つの増分と、行ごとに追加の増分です。もう 1 つの方法は、行ごとの余分な増分を節約しますが、それをはるかに複雑なものに置き換えます。%高価な丸めと に加えて、y値は毎回再計算されますが、方法 1 では行ごとに 1 回しか計算されません。ピクセルあたり。これは、2 番目の方法を使用すべきではないと言っているわけではありませんが、投稿したコードを考えると、最初の方法のパフォーマンスが向上します。

于 2012-12-05T09:48:06.823 に答える