タグ

*Javaと*Cに関するyamadarのブックマーク (1)

  • i++ と ++i、++i の方が高速という都市伝説を解明 - satosystemsの日記

    昔、ある時、ふと気がついた。 int i; for (i = 0; i < 10; i++) { } for (i = 0; i < 10; ++i) { } 同じ動作をする for ループなんだけど、i++ と ++i の部分で、i++ の方が処理に無駄がある(下の値とインクリメントした値の両方を保持しなきゃならない)から性能面で劣っていないか、と。 結構ずーっと気になっていたんだけど、腰を上げて確認してみたら、gcc ではどちらも同じだった。以下は for ループ内のインクリメント部分の抜粋 movl _i, %eax /* i を eax に読み込み */ addl $1, %eax /* 1 を eax に足し込み */ movl %eax, _i /* eax を i に戻す */ インクリメントの部分は i++ でも ++i でもこのようになっていて、副作用がないので最小のコー

    i++ と ++i、++i の方が高速という都市伝説を解明 - satosystemsの日記
  • 1