我一直覺得C#編譯器的/ optimize標誌沒有太大的作用。諸如this one之類的文章描述了IL中相對較少的優化:大部分都歸入JIT。然而,最近我試圖加速一些CPU密集型代碼(想想很多遍歷數組和字典以及簡單的數字),並且我嘗試開啓優化只是爲了踢。結果是速度提高了3x改進。請注意,這純粹是通過點擊VS項目屬性頁面中的「優化」複選框。切換DEBUG和TRACE常量沒有性能影響。/optimize標誌啓用哪些運行時優化?
儘管小的IL優化可能會導致這種改變是完全可能的,但這對我來說似乎很令人驚訝。在優化閱讀時,我發現這個珍聞在MSDN docs:
/優化也告訴公共語言運行庫在 運行時優化代碼。
我很好奇這是什麼意思。這是否意味着JIT不會優化非優化程序集中的代碼?這可以啓用什麼類型的優化?
http://blogs.msdn.com/b/ericlippert/archive/2009/06/11/what-does-the-optimize-switch-do.aspx – 2015-04-03 12:53:59
@ DanielA.White:這似乎是集中在IL優化。你能把我指向處理運行時間的部分嗎? – ChaseMedallion 2015-04-03 14:15:12
@downvoter:爲什麼倒戈? – ChaseMedallion 2015-04-03 14:15:26