2013-09-23 60 views
1

我目前正在通過一些非常古老的代碼挖掘我的方式,以擴展它,並且我一直在遇到可能很容易返回void的方法。最臭名昭著的一個在我腦海裏的線沿線的打算:使返回類型超出void的性能影響是什麼?

public int dbInsert(int userID) 
{ 
    Map<String, Integer> foo = new HashMap<String, Integer>(); 
    foo.put("bar", 0); 
    foo.put("user", userID); 

    sqlInsert(foo); 
    return foo.get("bar") != null ? (Integer) foo.get("bar") : 0; 
} 

我覺得有一個很大的重新做上來了,無論如何,但我只是想知道有多大的影響剔除法這樣的空白返回類型(如上面的代碼片段總是返回0)會影響性能或者編譯器是否會認識到冷漠並忽略它?

+4

要麼是方法需要返回一個值,要麼是沒有。這很簡單。 –

+3

你假設'sqlInsert'不修改'foo';這是合理的嗎? –

+1

該代碼中有足夠的外部開銷,將該方法更改爲無效的影響將不顯着,達到幾個數量級。爲什麼你認爲這個「臭名昭着」對我來說是個謎。 – EJP

回答

7

這是微不足道的。您的方法簽名應根據從API使用的角度來看有意義來確定。

1

通常編譯器將無法消除返回值,因爲它不知道誰將使用該方法。至於性能,最好的辦法是編寫一個樣本,並通過足夠次數的循環調用它來測量它,至少可以獲得幾秒鐘的運行時間。基於除測量以外的任何其他性能問題的答案只是受過教育的猜測。

相關問題