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博士:你可以构建一个综合基准,并得到一个与您的环境相关的非常准确的答案。最好的优化可能是不要每秒构造数亿个东西。我看不出在任何情况下第二种变体更可取。