2017-08-03 49 views
0

假設我需要訪問變量'asdf'大約1000次。什麼是函數中更快的傳遞對象或靜態調用它

什麼會更快:創建對象Foo並將其作爲參數傳遞給bar構造函數,並通過getter訪問它或靜態訪問Foo的數字。或者這兩種方法具有相同的性能?

Class Foo { 
    public int asdf; 
} 

Class Bar { 
    Foo foo; 
    Bar(Foo foo1) { 
     this.foo = foo; 
    } 
    public void funcBar() { 
     foo.asdf; 
    } 
} 

Class Foo { 
    public static int asdf; 
} 

Class Bar { 
    public void funcBar() { 
     Foo.asdf; 
    } 
} 
+4

傳遞引用具有可忽略的性能開銷,並且更乾淨。 –

+1

請注意,1000倍是非常微小的,你應該使用最清潔的方式,而不是最快的 - 除非你正在做reeeaaally高性能的東西(你可能不應該用java做) – luk2302

+0

一般來說,你應該只擔心性能增強時你有一個性能問題 – ControlAltDel

回答

2

根據SO用戶Mike Nakis的說法,作爲純問題的答案,靜態調用將是最快的,其次是非虛擬的,然後是虛擬的。你可以看到他的回答here。儘管如此,去代碼的可讀性。最好是有一個明確的,可維護的代碼,而不是其他的開發人員能夠理解的每一個性能指標。在很多情況下,檢索的速度可以忽略不計。

7

1000次沒什麼。

因此,您可以使用簡潔而「乾淨」的方式編寫完成工作的代碼。

擔心好設計,而不是浪費時間解決不存在的性能問題。

相關問題