2012-06-03 42 views
3

我有一個關於Java的一般性問題。Java速度和內存佔用「比賽」

有什麼更好?

殼體1:

a = method1(7); 
b = method2(a); 
c = method3(b); 

c = method3(method2(method1(7))); 

殼體2:

String a = method1(1); 
String b = method2(2); 
String c = method3(3); 
String d = a+b+c; 

String d = method1(1)+method2(2)+method3(3); 

我想知道什麼會更好的速度... 我想第二種方式(在兩個)是更好的內存佔用明智,但我總是想知道如果一個比另一個更快或者如果他們需要相同的時間量執行。我正在製作一個多次調用相同函數的程序,因此每個毫秒都是重要的!

如果還有其他類別可以競爭(速度等除外),請告訴我!

+2

不要猜測,[profile it](https://www.google.com/search?btnG=1&pws=0&q=java+profiler)。 –

+1

編譯器可能會爲所有這些情況產生相同的字節碼......它不一定會很快成爲任何實際代碼中的瓶頸,那麼爲什麼要優化它呢? – ChristopheD

回答

4

執行速度沒有可辨別的差異。爲中間結果使用臨時變量的代碼之間的唯一區別是,您可以在調試器中看到中間值。此外,如果在調用目標函數之後未使用中間變量的值,則編譯器很可能會優化這些變量,從而生成相同的字節碼。

+0

謝謝你,那正是我想知道的! =) – Karlovsky120