忍者ブログ
  • 2024.03
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 2024.05
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/04/29 16:07 】 |
インクリメントは前置のほうが速い
++i;
i++;

を比べると
++i;
のほうが速い。

違いはもちろん
前置インクリメントは、インクリメントを先に行う。
後置インクリメントは、インクリメントを後に行う。
ということだ。


前置の場合、自身のインスタンスをインクリメントし、自身を戻り値として返せば良い。
なぜなら、インクリメントが先だから。インクリメント後の値をその次の計算で使うので、インクリメントしたものをそのまま戻り値にすればよい。

後置の場合、そうはいかない。
インクリメントするが、戻り値として返すのはインクリメントする前の元の値である。
ということで、「インクリメントするまえに自身のコピーインスタンスを作成している」のだ。
そして、戻り値として返すのはこのコピーインスタンスなのである。

このコピーの手間分だけ、後置インクリメントは遅くなる。

クラスインスタンスなどはもとより、intなどのプリミティブ型でもその差は出てくる。


試しに以下の処理を実行してみる




その結果は以下のようになった。



何度もやると時間は変化するし、まれに逆転することもあるが、
後置は前置より遅くなる。
(この処理の前置と後置の順番を逆にしてもやはり後置が遅い)


というわけで、インクリメント処理は理由が無い限り前置を使うこと。
PR
【2015/06/22 14:22 】 | C/C++ | 有り難いご意見(0)
<<cocos2d-xのラベルはグローバルZが実質使えない | ホーム | Eclipseの起動時に"Android SDK: resolving error markers"で動かないとき>>
有り難いご意見
貴重なご意見の投稿














<<前ページ | ホーム | 次ページ>>