我在几个月内就.Net性能和优化做了一个演示,我想提供一些不必要的优化样本,无论如何都会由编译器完成。
在哪里可以找到一些关于编译器在代码之前和之后的实际优化能力的解释?
答案 0 :(得分:2)
查看这些链接
同时查看MSIL上的这本书 1. Microsoft中间语言:C#和VB.NET / Niranjan Kumar之间的比较
答案 1 :(得分:1)
我认为甚至比“编译器将要完成的事情”更好的例子将是编译器不执行“优化”的情况的示例,开发人员< em>假设会产生性能提升,但事实上并非如此。
例如,有时开发人员会假设在本地缓存一个值会提高性能,而实际上,在堆栈上减少一个值的节省超过了可以内联的字段访问的微不足道的成本。
或者开发人员可能会认为“强制内联”方法调用(主要是通过剥离调用本身并替换为复制/粘贴代码)是值得的,而实际保持方法调用原样会导致只有当它有意义时(当内联的好处超过代码大小的增长时)才会被编译器内联。
当然,这只是一个大概。我没有具体的代码示例,我可以指出;但是如果你找他们,也许你可以找到一些。