几个月后我正在做一个关于 .Net 性能和优化的演讲,我想提供一些不必要的优化示例,无论如何编译器都会做这些事情。
我在哪里可以找到一些关于编译器实际上能够在代码之前和之后进行哪些优化的解释?
几个月后我正在做一个关于 .Net 性能和优化的演讲,我想提供一些不必要的优化示例,无论如何编译器都会做这些事情。
我在哪里可以找到一些关于编译器实际上能够在代码之前和之后进行哪些优化的解释?
我认为比“无论如何都将由编译器完成的事情”的示例更好的是编译器不执行开发人员认为会产生性能改进的“优化”的场景示例,但实际上,不会。
例如,有时开发人员会假设在本地缓存一个值会提高性能,而实际上在堆栈上少一个值所节省的成本超过了可以内联的字段访问的微不足道的成本。
或者开发人员可能认为“强制内联”方法调用(主要是通过剥离调用本身并替换为复制/粘贴的代码)是值得的,而实际上保持方法调用原样会导致其被内联仅在有意义时才由编译器执行(当内联的好处超过代码大小的增长时)。
当然,这只是一个普遍的想法。我没有可以指出的具体代码示例;但是,如果您寻找它们,也许可以找到一些。