0
如果你在Java中有例如:Java方法調用優化
void methodA(int i) { ... }
void wrapperMethodArg1() { methodA(1); }
wrapperMethodArg1();
當你調用第二種方法,將JVM最終做兩個或一個方法調用?
如果你在Java中有例如:Java方法調用優化
void methodA(int i) { ... }
void wrapperMethodArg1() { methodA(1); }
wrapperMethodArg1();
當你調用第二種方法,將JVM最終做兩個或一個方法調用?
您正在談論內聯方法wrapperMethodArg1
。
答案是:你不能提前告訴。編譯器可能不會內聯它,因爲這會阻止反射調用,但是JVM可能會在運行時動態執行它,如果該方法經常被調用到足以進行優化。
如果它已經過優化,它將在運行時進行JIT分析。我懷疑Java編譯器會採用與g ++編譯器相同的方式。 – 2015-02-18 00:14:10
顯而易見2它的機器 – 2015-02-18 00:01:31
它最終會做兩個或一個方法調用。 – isnot2bad 2015-02-18 00:02:50
編譯器可以選擇通過內聯方法調用來優化代碼。 – shmosel 2015-02-18 00:03:44