我有興趣是否應該手動內聯一些在性能敏感算法中稱爲100k-100萬次的小方法。首先,我認爲,通過不內聯,我招致了一些開銷,因爲JVM將不得不查找是否要內聯這個方法(甚至不這樣做)。Java - 調用靜態方法vs手動內聯 - 性能開銷
但是,有一天,我用靜態方法調用了這個手動內聯代碼,並看到性能提升。這怎麼可能?這是否表明實際上沒有開銷,並且讓JVM以「其意志」內聯來實際提升性能?或者這很大程度上取決於平臺/架構?
(發生性能提升的例子是用靜態方法調用swap(int[] a, int i, int j)
替換了數組交換(int t = a[i]; a[i] = a[j]; a[j] = t;
)。另一個沒有性能差異的例子是當我將一個被稱爲1000000次的10-liner方法)
幾乎沒有任何現代建築的速度。 – Puppy 2011-02-11 14:34:03