性能敏感流程的函数实现时,实现变量的就近定义和使用
【说明】 现代编译器,一般都是支持变量在函数中间进行定义,因此变量的定义应该尽量接近使用它的地方,防止一些无效的变量初始化操作,从而提升性能;
【原理】 无论从代码的性能改善角度,还是从可读性角度,将变量定义在使用它的代码块附近,都是一种好的编程实践,这种延迟初始化的理念对性能的提升原理:有些函数中间可能存在条件返回的场景,那么在之后使用的变量就不需要再进行初始化操作,相对于在函数开始处对变量全部进行初始化操作,会带来一些性能上的提升。
【注意事项】 不涉及
【案例】
优化前:
class Foo {
public:
void Init();
private:
int a;
int b;
};
void Func()
{
bool conditionSatisfied = false;
Foo foo; // conditionSatisfied为false时,这个对象的定义和初始化是无效的。
if (conditionSatisfied) {
return;
}
foo.Init();
// use foo do something
}
优化后:
class Foo {
public:
void Init();
private:
int a;
int b;
};
void Func()
{
bool conditionSatisfied = false;
if (conditionSatisfied) {
return;
}
Foo foo; // 使用前再进行定义。
foo.Init();
// use foo do something
}
父主题: C++语言