构造者 - 关于绩效?

时间:2013-01-27 08:51:53

标签: c++ performance oop class constructor

  

可能重复:
  Optimization due to constructor initializer list

好的,所以这就是我的困境:假设我们有一个类,还有几个构造函数,它们将被称为无数次(每秒几亿次;所以速度至关重要< /强>)。

哪种方式更可取? (有什么不同吗?)

方式A:

// Prototype
class MyClass
{
    public:
        // Constructor
        MyClass (int x, int y, int z) : X(x), Y(y), Z(z) {}

        // Variables
        int X,Y,Z;
};

方式B:

// Prototype
class MyClass
{
    public:
        // Constructor
        MyClass (int x, int y, int z);

        // Variables
        int X,Y,Z;
};

// Implementation
MyClass::MyClass(int x,int y,int z)
{
     this->X=x;
     this->Y=y;
     this->Z=z;
}

2 个答案:

答案 0 :(得分:3)

您需要使用个人资料工具自行衡量。使用内置类型可能没有区别(关于构造速度),但对于类类型,使用成员初始化列表总是更好的方式。

答案 1 :(得分:0)

一个唐纳德克努特的明智话语:

  

Premature optimization is the root of all evil.

以最易读和可维护的风格编写代码;我个人的偏好是单独在标题之外进行实现。如果它足够小以内联,编译器将内联它;如果编译器确定它足够大而不能内联(减少代码大小并保存指令缓存空间等),那么编译器就不会内联它。

然后基于真实经验数据进行基准测试和优化