簡體   English   中英

哪一個更有效率? 用於for循環的緩存方法調用結果

[英]Which one is more efficient? Caching method call result used in for loop

差異可能是微不足道或不存在,但哪一個更有效,為什么?

int nItems = param.getItemList().size();
for (...) {
    if (nitems == 1) doSomething();
}

要么

for (...) {
    if (param.getItemList().size() == 1) doSomething();
}  

從理論上講,第一個會更快(你有沒有描述它?你應該!),因為它在循環之外拉出一個經常使用的方法調用。 但是,如果有足夠的時間,JIT編譯器可能會優化/內聯方法調用,使兩個解決方案在性能方面無法區分。

這種微觀微觀優化不值得努力,更好地瞄准解決方案,使其更清晰,更易於理解。 哪個恕我直言恰好是第一個。

在循環外調用方法更有效。 有時它甚至可能很重要。 第二種方法可能更有效的一種情況是, for循環的條件導致循環被完全跳過。

第一種方法更有效,因為不需要多次調用該方法。 但是,由於getItemList()size()似乎都是訪問器,因此差異微乎其微。

第一個,因為你不需要為循環的每次迭代進行兩次調用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM