2009-02-27 46 views

回答

9

靜態方法將是非常輕微更好的性能和內存明智的:虛函數調用的

  1. 避免的(潛在的)的開銷。
  2. 消除實際類的實例所需的內存。
  3. 當您使用它時,不需要獲取該類的實例。

但老實說,我可能仍然會使它成爲singleton反正。如果不這樣做,你會得到的收益可能非常小,即使在移動環境中,它們也不會產生差異。

2

以你的面值問題,靜態調用可能只需要最少的CPU功率。原因在於普通方法是動態綁定的,需要在運行時進行一些查找,而靜態方法則需要編譯時間。

話雖如此,它可能不會影響您的應用程序。差別非常小。如果您的應用程序使用gui,xml渲染,互聯網連接或其他外部操作來做任何事情,那麼您會發現這些活動使得簡單的方法查找變得相當龐大。

即使你不這樣做,性能分析,期間更容易遇到瓶頸,單一阻礙了您的應用程序,並發現它是沒有方法查找,但一些邏輯,你做你的自我。例如,你使用了一個ArrayList而不是一個hashset,而contains方法的代價很高。因爲在這些情況下的性能並不重要,所以我建議在靜態方法上面使用單例實現,因爲設計稍微靈活一點。儘管在你提供的選擇之外,我會完全放棄幫助類,並將你的pojo中的方法內聯。

4

不要擔心這種荒謬的微觀優化。擔心可維護性。

這聽起來像應用程序是用一個完全非面向對象的風格,可以從消除了大部分的這些「輔助方法」,並把他們受益匪淺屬於他們的地方,以及它們操作的數據。

+0

好吧,那麼JDK是寫在非面向對象的風格,以及所有它的Arrays.sort(),Long.valueOf()的,等等。;) – yanchenko 2009-03-02 06:15:17

相關問題