アカウント名:
パスワード:
b = a[i++] みたいな場合、 まず a[i] の中身を取りに行く もう i は参照しちゃったので、i は変更可 a[i] の中身を取りに行きながら、並行して i もインクリメント => 速い
だけど、b = a[++] だと まず i をインクリメント インクリメントが終わらなきゃ、どこにアクセスしていいか分からない 並行不可 => 遅い
for( ほげ; ふが; i++) とか for( ほげ; ふが; ++i) の場合 コンパイラが最適化しちゃうので、どっちも同じ
結論: 習慣化する (≒考えずにやる) なら、後置で。
本体部分の小さいループ最適化などではどちらのタイプを使用する変形を行うかによって1~2割変わることもありますループ終了が回数指定などによって容易に推定可能であれば、ループをオーバーラップさせることでロードのレイテンシによるストールを回避できたりするんです。これは私がよく使う最適化の手です。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
Stay hungry, Stay foolish. -- Steven Paul Jobs
こういうこと? (スコア:2)
b = a[i++] みたいな場合、
まず a[i] の中身を取りに行く
もう i は参照しちゃったので、i は変更可
a[i] の中身を取りに行きながら、並行して i もインクリメント => 速い
だけど、b = a[++] だと
まず i をインクリメント
インクリメントが終わらなきゃ、どこにアクセスしていいか分からない
並行不可 => 遅い
for( ほげ; ふが; i++) とか for( ほげ; ふが; ++i) の場合
コンパイラが最適化しちゃうので、どっちも同じ
結論: 習慣化する (≒考えずにやる) なら、後置で。
Re: (スコア:1)
Re:こういうこと? (スコア:0)
本体部分の小さいループ最適化などではどちらのタイプを使用する変形を行うかによって1~2割変わることもあります
ループ終了が回数指定などによって容易に推定可能であれば、ループをオーバーラップさせることでロードのレイテンシによるストールを回避できたりするんです。
これは私がよく使う最適化の手です。