2

可能重复:
由于构造函数初始化列表而优化

好的,这就是我的困境:假设我们有一个类,以及几个构造函数,它们将被多次调用(每秒数亿次;所以速度至关重要)。

哪种方式更可取?(有什么区别吗?)

方式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;
}
4

2 回答 2

3

您需要使用配置文件工具自行测量。使用内置类型可能没有区别(关于构造速度),但对于类类型,使用成员初始化器列表始终是更可取的方式。

于 2013-01-27T08:54:52.880 回答
0

用唐纳德·高德纳 (Donald Knuth) 的话来说:

过早的优化是万恶之源。

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

然后根据实际经验数据进行基准测试和优化。

于 2013-01-27T11:04:51.000 回答