Dynamic compilation and performance measurement 大意大概是:
目前 Java 的 HotSpot JVM 是在程式執行過程中,選擇性地將執行得最頻繁的程式部分編譯成 machine code 並作最佳化,而且還會持續根據程式執行過程得到的資料,將某些已經轉成 machine code 的部分重新編譯和作更進一步的最佳化,然後取代掉先前編譯好的 machine code。這些編譯和置換動作都需要花時間,而且無法確定什麼時候發生,使得要測量程式碼執行速度時,測到的通常不是想測的東西。
另外,加上參數 -server 執行的 server VM,會作更多清除不必要程式碼的動作,所以以 server VM 執行得到的測量結果遠遠快於預設 client VM 的情形,很有可能是大部分的程式碼都被精簡掉了,而不是 server VM 真的那麼快。
很值得讀的好文章。