私はチュートリアルやポストインクリメント注文の古典的なfor-loop witoutを示した講義を見たことがありません。プリインクリメントとポストインクリメント - forループの速度
for (int i=0; i<array.length; i++) {}
POSTインクリメントを使用すると、変数「i」がインクリメントされる前にキャッシュされます。しかし、コマンドは直接終了するので、これは意味をなさない。私の意見で
、これはより理にかなって:
for (int i=0; i<array.length; ++i) {}
あなたが今まで理解していなかった場合、私は(私の英語のためのSRY)さらに少し行く:最初のループでは
:
- iの実際の値をキャッシュします。
- インクリメント私に直接
- ゴー:(注:これを行うので、理由もなく、間には移動)は、第2のループでは
- インクリメント私
- 移動先
先に。
したがって、2番目のループは、品質の低下がないためにパフォーマンスが向上します。他の意見はありますか?
2番目のループがより性能が高いかどうかを知る唯一の方法は、それを測定することです(生成されたアセンブリコードが異なると仮定して)。 'int'では、それは違いを生むのではないかと疑います。おそらく、いくつかのイテレータタイプを使用します。 **編集**私はここでC++を話しています。 – juanchopanza
"変数*がキャッシュに入れられる*"と言えば、状況の理解や研究を利用しているのですか、まったく推測していますか? –
私はC++のタグを見ましたが、それは消えてしまいました。私はJavaしか見ないので、javaのdupを投稿しました。 –