1. 程式人生 > >C#編譯器優化那點事

C#編譯器優化那點事

代碼質量 配置 需要 但是 strong -a tool -- dbo

使用C#編寫程序,給最終用戶的程序,是需要使用release配置的,而release配置和debug配置,有一個關鍵區別,就是release的編譯器優化默認是啟用的。
優化代碼開關即optimize開關,和debug開關一起,有以下幾種組合。
| 編譯器開關設置 |C#IL代碼質量 | JIT本地代碼質量 |
| ------------- |:-------------:| -----:|
| /optimize- /debug-(默認) | 未優化 | 有優化 |
| /optimize- /debug(+/full/pdbonly) | 未優化 | 未優化 |
| /optimize+/debug(-/+/full/pdbonly) | 有優化 | 有優化 |

?
在Visual Sutdio中新建一個C#項目時,
項目的“調試”(Debug)配置的是/optimize-和/debug:full開關,
而“發布”(Release)配置指定的是/optimize+和/debug:pdbonly開關

optimize-/+決定了編譯器是否優化代碼,optimize-就是不優化了,但是通常,有一些基本的“優化”工作,無論是否指定optimize+,都會執行。

optimize- and optimize+

該項功能主要用於動態語義分析,幫助我們更好地編寫代碼。

  • 常量計算
  • 簡單分支檢查

optimize+ only

.NET的JIT機制,主要優化在JIT中完成,optimize做一點簡單的工作。

Tools:
Visual studio 2017 community targeting .net core 2.0
IL DASM(vs自帶)

C#編譯器優化那點事