2012-04-29 46 views
1

在多線程程序中使用函數或使用靜態方法會更快嗎?請解釋爲什麼它更快。函數與靜態方法

+4

鑑於「函數」並不是真正用於Java的術語,您應該澄清一下您的問題。理想情況下,舉一個例子來展示兩種方法。 – 2012-04-29 07:38:21

+1

你應該使用靜態方法和非靜態方法。 – 2012-04-29 07:39:50

+1

我認爲他的意思是方法,而不是功能。 – 2012-04-29 07:40:19

回答

2

您可能已經聽說「純函數」更適合多線程。一個純函數通常可以像Java中的靜態方法一樣實現,但它也可以作爲實例方法實現。主要的一點是,如果你沒有任何可以改變的全局變量,那麼多線程時總是更好。所以如果你有一個不可變的對象,那就像靜態方法實現一個純函數一樣好。

10

即使兩種方法之間存在明顯的區別(我認真地懷疑),您不應該基於此設計您的程序。良好的設計應該(幾乎)永遠不會犧牲以實現更好的性能。因爲你收穫不大,但是你輸了很多。

+1

+1:即使你發現有一個小的差異,你可能會失望的發現,隨着JVM的改進,差異會發生變化。這意味着,如果您爲了適應而大幅改變設計,並且發現實際上稍後會變慢,那麼可能會令人失望。堅持你簡單明瞭,不用擔心每一個納秒,除非你可以說它會給業務帶來多大的差異。 – 2012-04-29 08:42:16

+0

完全同意。決定靜態還是實例應根據此方法*邏輯*屬於 - 來指定給特定對象實例還是指向特定類的所有對象。雖然可能會有小的性能損失(公共非最終方法是虛擬調用),但它通常可以忽略,再加上JVM變得更加智能,並且越來越高效地處理它。如果這種差異真的對您的應用程序很重要,也許Java是一個糟糕的選擇。 – 2012-04-29 10:19:40