違いはおそらくごくわずかであるか、存在しませんが、どちらがより効率的で、その理由は何ですか?
int nItems = param.getItemList().size();
for (...) {
if (nitems == 1) doSomething();
}
また
for (...) {
if (param.getItemList().size() == 1) doSomething();
}
違いはおそらくごくわずかであるか、存在しませんが、どちらがより効率的で、その理由は何ですか?
int nItems = param.getItemList().size();
for (...) {
if (nitems == 1) doSomething();
}
また
for (...) {
if (param.getItemList().size() == 1) doSomething();
}
理論的には、最初のほうが高速になります (プロファイリングしましたか? すべきです!)。これは、頻繁に使用されるメソッド呼び出しをループの外に引き出すためです。ただし、十分な時間があれば、JIT コンパイラーはメソッド呼び出しを最適化/インライン化して、パフォーマンスの点で両方のソリューションを区別できないようにする可能性があります。
このようなマイクロマイクロ最適化は努力する価値がありません。より明確で理解しやすいソリューションを目指したほうがよいでしょう。どの私見がたまたま最初のものですか。
ループ外でメソッド呼び出しを行う方が効率的です。時にはそれが問題になることさえあります。2 番目のアプローチがより効率的である可能性がある 1 つの状況は、for
ループの条件によってループが完全にスキップされる場合です。
最初の方法は、メソッドを何度も呼び出す必要がないため、より効率的です。ただし、両方ともgetItemList()
アクセサーsize()
のように見えるため、違いはごくわずかです。
最初のもの。ループの反復ごとに 2 つの呼び出しを行う必要がないためです。