我想知道以下代码的性能有什么不同吗?例如,有三个变量,每个变量都定义了。
bool myFunc()
{
string networkName;
if ( !Parse(example, XML_ATTRIBUTE_NAME, networkName) )
{
return false;
}
BYTE networkId;
if ( !Parse(example, XML_ATTRIBUTE_ID, networkId) )
{
return false;
}
string baudRate;
if ( !Parse(example, XML_ATTRIBUTE_BAUDRATE, baudRate) )
{
return false;
}
}
上面和下面的代码是否有任何性能差异?
bool myFunc()
{
string networkName;
string baudRate;
BYTE networkId;
if ( !Parse(example, XML_ATTRIBUTE_NAME, networkName) )
{
return false;
}
if ( !Parse(example, XML_ATTRIBUTE_ID, networkId) )
{
return false;
}
if ( !Parse(example, XML_ATTRIBUTE_BAUDRATE, baudRate) )
{
return false;
}
}
答案 0 :(得分:1)
推荐做法是将声明尽可能接近使用变量的第一个位置。这也最小化了范围。 来自 Steve McConnell" Code Complete" 书:
理想情况下,声明并定义每个变量,使其接近第一个变量 使用。声明建立变量的类型。定义分配 变量是一个特定的值。在支持它的语言中,例如 C ++和Java,变量应该声明并定义在哪里接近 他们是第一次使用。理想情况下,每个变量都应该在 同时它被宣布。
然而,少数来源建议在块的开头({}
)放置声明。
来自过时 Java Code Conventions:
仅在块的开头放置声明。 (一个块是任何代码 被花括号包围" {"并且"}"。)不要等待申报 变量直到第一次使用;它会让那些粗心的程序员感到困惑 并阻碍了范围内的代码可移植性。
在函数顶部声明仅 的变量被视为不良做法。将声明放在最本地的块中。
事实上,这取决于。声明POD类型根本不应影响性能:调用函数时会分配所有局部变量的内存(C
,JavaScript
,ActionScript
...)。
请记住,编译器会优化您的代码,所以我猜非POD类型也不会成为问题(C++
)。
通常选择声明变量的位置是一个过早的优化,所以性能在这里是一个不重要的点,因为它微不足道的微观提升(或开销)。主要论点仍然是代码可读性。
C99
(C
语言)标准之前,必须在块的开头中声明变量。