Android の 2 つのオペレーター内でパフォーマンスまたは消費電力の違いがあるかどうかを判断するために、事前インクリメントと事後インクリメントでいくつかのテストを行いました。
違いは見つかりませんでした。
基本的な論文はここでよく説明されています: http://www.roman10.net/pre-increment-and-post-increment/ (temp-var が生成されないため、pre の方が高速です)。
私はこれをc ++で学びました。このWebサイトはc実装を示していますが、Androidで実装がどのように行われるかを理解できませんでした(おそらく異なる)。
テストに使用されるコードは
int lPlotRangeCtr = 0;
while (lPlotRangeCtr != mPlotRange){
int lTMP = ++lPlotRangeCtr;
}
ご想像のとおり、これはプリインクリメント用のチャンクであり、ポストワーク用のチャンクでもあります。tamp var "lTMP" を使用して、演算子の戻り値が割り当てられ、コンパイラがインクリメント演算子を変換しないようにしました。
実装を見つける方法を教えてください。コンパイラは、承認されたときに、「lTMP」が読み取られないという演算子を変換できますか? そのようなステートメントはコンパイル中に自動的に削除されますか?