我正在繼續我的編譯器類的C#編譯器。目前,我幾乎完成了我的教科書中關於Compiler Optimizations的章節。C#編譯器和JIT都做了什麼樣的優化?
大多數情況下,我的教科書在編寫時並沒有將Just-In-Time編譯出來,我很好奇C#編譯器執行的靜態,pre-jit優化的類型與它的功能在JIT過程中?
當我和人們談論CLR編譯時,我通常會聽到諸如「大多數優化都是由JIT完成」的事情。
類似循環展開,常量摺疊/傳播,指令交織由C#的編譯器完成之前的Jit或由抖動處理?如果它們不是由抖動處理的,那麼抖動對於即時編譯器來說獨特的優化是什麼樣的?
您提到的大多數優化都是由抖動完成的。 C#編譯器進行常量摺疊,因爲這是語言語義所需的。運行/ o的C#編譯器只是簡單地進行IL控制流優化,就像消除「分支到下一個指令」一樣。這是一個很好的話題;我會看看我是否可以敲一篇關於我們在IL級別做什麼優化的博客文章。細節請在下個月左右觀看我的博客。 - – 2009-06-02 06:14:16
@Eric Lippert,尼斯!沒有預料到微軟編譯團隊的高級開發人員的迴應!如果你記得,當你做博客文章時,一定要從這裏鏈接到它。無論如何,我會密切留意。謝謝埃裏克。 – mmcdole 2009-06-02 07:33:27
不客氣。文章將在6月11日上升。 – 2009-06-02 17:02:45