CLR编译器优化的示例

我在几个月内就.Net性能和优化做了一个演示,我想提供一些不必要的优化样本,无论如何都要由编译器完成。

我在哪里可以找到关于编译器在代码之前和之后实际能够进行哪些优化的一些解释?

看看这些链接

  1. C#编译器优化
  2. 编译器优化
  3. MSDN

还可以在MSIL上查看这本书
1. Microsoft中间语言:C#和VB.NET / Niranjan Kumar之间的比较

我认为甚至比“编译器将要完成的事情”的例子更好的例子是编译器执行开发人员假设的 “优化”会产生性能提升的情况,但事实上,不会。

例如,有时开发人员会认为在本地缓存值会提高性能,而实际上,在堆栈上减少一个值的节省超过了可以内联的字段访问的微不足道的成本。

或者开发人员可能会认为“强制内联”方法调用(主要通过剥离调用本身并替换为复制/粘贴的代码)将是值得的,而实际上保持方法调用按原样将导致其内联只有在有意义时(当内联的好处超过代码大小的增长时)才由编译器编译。

当然,这只是一个普遍的想法。 我没有具体的代码示例,我可以指出; 但是如果你找他们,也许你可以找到一些。