2011-08-08 49 views
10

我喜歡用Java編寫真正可讀的代碼。爲此,我使用了構建器模式並且有很多靜態方法。但是在某些時候,我會調用或鏈接很多方法,所以我想出了這個問題:它是否有任何性能問題調用了很多方法?方法調用如何影響Java中的性能?

+0

如果您正在使用代碼的人不知道是否存在可衡量的嚴重性能影響,我們應該如何知道? –

回答

9

該方法的作用遠遠大於方法調用本身。這是一個過早的優化,你會被建議避免。

您不知道JVM本身內置的運行時優化會如何影響性能。他們會比你的嘗試更聰明。

編寫您的應用程序,剖析它,看看是否有任何明顯的改進。重複,直到表現可以接受。

1

一般來說:不是真的。

然而,一個能夠提供大量不必要開銷的情況是在執行大的遞歸調用時。如果是這種情況,性能是一個問題,你應該研究一種動態編程方法或者實現你自己的堆棧。

否則,您的方法在其邏輯中應該相當複雜,以超過其獲得的任何性能。

+0

您是否有任何證據支持您有關大型遞歸調用的說法? [以下內容暗示](http://www.ahmadsoft.org/articles/recursion/index.html) – nerdytenor

+2

@nerdytenor:是的,我從個人經歷做起(我不會讓你知道細節,而是鼓勵你參考基準如果你有任何疑問,你自己吧)。請閱讀您鏈接的帖子的底部,其中解釋了性能差異。這裏是一個更準確的比較(在同一個網站上):http://www.ahmadsoft.org/articles/recursion/ubuntu.html – tskuzzy

+0

+1爲鏈接 – nerdytenor

4

可讀性幾乎總是要走的路。對函數調用的性能有影響,但不可讀的代碼可能會受到其他實現問題的影響,這些問題的性能會受到更高的影響。

在適當的地方使用關鍵詞final,以便建議爲這些函數內聯。

您不想使用大量函數調用的情況是嚴密的循環。發生數十萬次的事情。如果需要優化軟件,通常可以優化這些地方。

+1

同意在這裏,並重申:除非你使數百幾秒鐘內完成數千次呼叫,這不是您需要擔心的事情。 –