我最近阅读了关于托管语言是否比本机语言(特别是C#vs C++)更慢(或更快)的讨论.一位参与讨论的人说,托管语言的JIT编译器能够对使用指针的语言中无法实现的引用进行优化.
我想知道的是什么样的优化可以在引用而不是指针上?
请注意,讨论是关于执行速度,而不是内存使用情况.
在C++中,与优化方面相关的引用有两个优点:
引用是常量(指整个生命周期内的相同变量)
因此,编译器更容易推断哪些名称引用相同的底层变量 - 从而创建优化机会.无法保证编译器在引用方面做得更好,但它可能......
假设引用引用某些内容(没有空引用)
可以创建"不引用任何内容"(相当于NULL指针)的引用,但这并不像创建NULL指针那么容易.因此,可以省略对NULL的引用的检查.
但是,这些优点都不会直接传递给托管语言,因此我不会在讨论主题的上下文中看到它的相关性.