【发布时间】:2015-06-08 13:31:00
【问题描述】:
我一直认为 C# 编译器的 /optimize 标志作用不大。像this one 这样的文章描述了在 IL 中进行的优化相对较少:大多数都归入 JIT。
但是,最近我试图加快一些 CPU 密集型代码的速度(想想很多对数组和字典以及简单数字的迭代),我尝试打开优化只是为了好玩。结果是速度提高了 3 倍。请注意,这纯粹是单击 VS 项目属性页面中的“优化”复选框。切换 DEBUG 和 TRACE 常量对性能没有影响。
虽然小的 IL 优化完全有可能导致这种变化,但这对我来说似乎相当令人惊讶。阅读优化,我在MSDN docs 中发现了这个花絮:
/optimize 还告诉公共语言运行时在 运行时。
我很好奇这意味着什么。这是否意味着 JIT 不对未优化程序集中的代码进行优化?这可以实现哪些优化?
【问题讨论】:
-
@DanielA.White:这似乎专注于 IL 优化。你能指出解决运行时问题的部分吗?
-
@downvoter:为什么要反对?
标签: c# performance optimization compiler-optimization jit