变量声明位置的编译器优化

时间:2012-09-27 09:24:51

标签: c++ compiler-optimization

我从C++ faq读到“当地人应该在他们第一次使用时宣布”。 Scott Meyer的Effective C ++ Item 26也出于性能原因提出了建议。但是我最近碰巧听到有人认为编译器非常聪明,无论在函数中实际使用的范围如何,都可以优化变量。并且他建议在函数顶部声明变量以便于理解(尽管我不买这个原因)。他对编译器优化是否正确?

(问题在于性能和编译器优化。不是代码可读性)。

4 个答案:

答案 0 :(得分:4)

编译器与它无关。有两个一般规则 关于定义变量(本地或其他):保持范围和 可见性尽可能小,如果可能的话,初始化 定义。这些规则适用于人类读者,而不适用于编译器。 两者都导致“在第一次使用附近宣布当地人”,作为一个 推论。

答案 1 :(得分:2)

是的,他们足够聪明。

但是还有一个软件技术答案:你应该这样做,因为它是一种更好的编程风格。

答案 2 :(得分:0)

将变量声明放在使用变量的位置附近可以增加局部性,并且可以使代码和程序流更容易理解。此外,如果变量放在嵌套范围内,那么当离开声明的范围时,它将被“破坏”,从而帮助实现RAII等。

答案 3 :(得分:0)

您应该始终努力编写易于理解和理解的源代码。

即使编译器能够优化它,仍然可以做到这一点。它为您提供提高的可读性,您不需要缓存并记住在块开始时变量被初始化的值。