Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 构造函数-关于性能?_C++_Performance_Oop_Class_Constructor - Fatal编程技术网

C++ 构造函数-关于性能?

C++ 构造函数-关于性能?,c++,performance,oop,class,constructor,C++,Performance,Oop,Class,Constructor,可能重复: 好的,我的两难处境是:假设我们有一个类,还有几个构造函数,它们将被多次调用(每秒调用数亿次;因此速度至关重要) 哪条路比较好?(有什么区别吗?) 方式A: // Prototype class MyClass { public: // Constructor MyClass (int x, int y, int z) : X(x), Y(y), Z(z) {} // Variables int X,Y,Z;

可能重复:

好的,我的两难处境是:假设我们有一个类,还有几个构造函数,它们将被多次调用(每秒调用数亿次;因此速度至关重要)

哪条路比较好?(有什么区别吗?)

方式A:

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

        // Variables
        int X,Y,Z;
};
// 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;
}
方式B:

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

        // Variables
        int X,Y,Z;
};
// 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;
}

您需要使用轮廓工具自己测量它。对于内置类型可能没有什么区别(关于构造速度),但是对于类类型,使用成员初始值设定项列表总是更好的方式。

用Donald Knuth的话说:

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


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

为什么要猜测/询问而不仅仅是测量?@NPE我首先要问的是避免重写大约一百行,仅仅是因为我的一个想法可能是错误的(我的意思是从理论的角度来看)。@Kameleon博士:你可以构建一个综合基准,并得到一个与您的环境相关的非常准确的答案。最好的优化可能是不要每秒构造数亿个东西。我看不出在任何情况下第二种变体更可取。