鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

性能敏感流程的函数实现时,实现变量的就近定义和使用

【说明】 现代编译器,一般都是支持变量在函数中间进行定义,因此变量的定义应该尽量接近使用它的地方,防止一些无效的变量初始化操作,从而提升性能;

【原理】 无论从代码的性能改善角度,还是从可读性角度,将变量定义在使用它的代码块附近,都是一种好的编程实践,这种延迟初始化的理念对性能的提升原理:有些函数中间可能存在条件返回的场景,那么在之后使用的变量就不需要再进行初始化操作,相对于在函数开始处对变量全部进行初始化操作,会带来一些性能上的提升。

【注意事项】 不涉及

【案例】

优化前
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
}