我一直觉得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