1. 程式人生 > >C#託管的中間程式碼IL為什麼和機器程式碼執行速度一樣快,與Java對比

C#託管的中間程式碼IL為什麼和機器程式碼執行速度一樣快,與Java對比

C#託管的中間程式碼IL為什麼和機器程式碼執行速度一樣快,IL是即時編譯的(JIT),java位元組碼是解釋型的。java會把所有的程式碼都編譯完,在下次執行時就不需要再去編譯已經編譯過的程式碼。微軟對編譯做了優化,JIT只編譯呼叫的程式碼,因為程式執行過程中,大部分程式碼都不會被呼叫,因此也沒有必要編譯,JIT不回去編譯這種程式碼。

微軟的JIT還會提高效能,因為編譯過程的最後一部分是在CLR中執行的,JIT編譯器確切的知道程式執行在什麼型別的處理器上,因此可以利用處理器提供的任何特性和特定的機器程式碼指令去優化最後的可執行程式碼,傳統編譯器的優化程式碼不能區別程式會允許在什麼處理器上,知識簡單的優化程式碼