pet*_*555 6 c c++ performance coding-style cppcheck
CppCheck找到了一些调查结果:"变量'x'的范围可以减少".
如果我遇到这种情况怎么办:
int x;
for (int i = 0; i != 10; ++i)
{
x = someFunction();
// ... I use x variable here
}
Run Code Online (Sandbox Code Playgroud)
我认为我的代码没问题.你怎么看?它会变成这样的东西吗?
for (int i = 0; i != 10; ++i)
{
int x = someFunction();
// ... I use x variable here
}
Run Code Online (Sandbox Code Playgroud)
在第二个代码中,为所有迭代定义了变量x ...不是不好(不是最佳的),我猜...
如果变量x不在循环外使用,那么第二种方法要好得多.并且代码的优化没有任何问题.变量的内存在循环中只分配一次.
声明的位置int没有性能影响,因此Cppcheck在提出此样式问题时是正确的.此样式问题也可以应用于非平凡类型,
for (int i = 0; i != 10; ++i)
{
MyType x = someFunction();
// ... I use x variable here
}
Run Code Online (Sandbox Code Playgroud)
因为构造函数往往与赋值一样有效.从版本1.65开始,Cppcheck似乎不区分琐碎和非平凡类型.
但是不要盲目地遵循这样的风格建议,会出现非平凡类型的情况,其中分配比建设更有效.(像往常一样:如果对性能有疑问,请测量!)
正如其他人所提到的,对于琐碎的类型,不太可能对性能产生重大影响。
但是,您还应该考虑到,通过缩小范围,您可以通过使声明更接近用法来提高可读性,并且可能更重要的是,使其更易于重构。
在考虑可维护性时,这两者都很重要。
我们都知道我们应该保持函数的简短和重构,但我们都见过那些 5000 行长的怪物,在顶部声明一个变量,并使用一次,3789 行。如果你没有,可惜剩下的我们。
| 归档时间: |
|
| 查看次数: |
8699 次 |
| 最近记录: |