C#编译器优化那点事

使用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自带)

猜你喜欢

转载自www.cnblogs.com/podolski/p/8975340.html
今日推荐