【发布时间】:2012-10-08 08:40:04
【问题描述】:
考虑以下
while(true)
{
if(x>5)
// Run function A
else
// Run function B
}
如果 x 总是小于 5,Visual Studio 编译器会做任何优化吗?即 like 从不检查 x 是否大于 5 并始终运行函数 B
【问题讨论】:
-
进行优化的是编译器,而不是 Visual Studio。
-
我是说VS编译器;真的是这样吗?有没有办法确认?
-
是的 - 检查反汇编。同样优化这将取决于变量
x的类型是: const 可能会导致检查被优化,但如果x是覆盖operator>的复杂类型,它可能不会。请记住,优化依赖于编译器标志,对于调试,这些标志是关闭的,所以你要么没有优化,要么得到最低限度的优化。 -
如何检查反汇编?
-
此外,CPU 也执行branch prediction。它能够“记住” if 语句的哪一部分执行得更频繁。然后它将相应地优化代码执行。
标签: visual-studio-2010 performance c#-4.0 optimization compiler-optimization