C++ 非静态成员函数开销
C++ Non-static member functions overhead
我想知道,如果我们有以下 class:
class MyClass
{
public:
MyClass(...)
type nonstatic_func1(...);
type nonstatic_func2(...);
...
type nonstatic_func10(...);
private:
type var1;
type var2;
...
type var10;
};
MyClass
的每个实例是否都有自己的一组十个函数(即,对于每个实例,十个函数中的每一个都会创建一个 "version")?在 class 定义中有 20 个函数会影响性能多少,而不是有 2 个函数(非静态),尤其是在实例化方面,而且在使用这些实例时?变量的数量对性能有多大影响? (请参阅下一段,vector
部分)
我问的原因是我正在编写一个程序来实例化 class 的很多实例(举例来说,我有一个相当大的向量,即 vector<MyClass> vec
),程序比我预期的要慢 运行。
简而言之,我想知道在实例化和使用具有大量非静态 functions/variables 的 class 实例时有多少开销。
编辑
我对 class 实例的大向量所做的其中一件事是排序......我怀疑这是主要的事情是耗尽性能,因为有很多移动(和复制,明确和隐含地)向量周围和向量之间的元素(实例)。显然,如果必须移动和复制这么多的数据块非常大,它可能会耗尽性能。
Will each instance of MyClass have its own set of ten functions
没有
How much will having, say, 20 functions in a class definition impact performance, as opposed to having, say, 2 functions (non-static), especially regarding instantiation, but also in working with these instances?
因此,没有。
How much will the amount of variables affect the performance?
拥有大量成员变量的主要影响是每个实例占用大量内存space。体积大的后果是复制时会花费很多时间。 CPU 缓存中的时间开销不太明显。
但这些开销可能不是您问题的原因。
One of the things I do with my large vector of class instances is sorting...this is the main thing I suspect is draining performance
不要怀疑。措施。要追踪性能的去向,找出瓶颈所在。
我想知道,如果我们有以下 class:
class MyClass
{
public:
MyClass(...)
type nonstatic_func1(...);
type nonstatic_func2(...);
...
type nonstatic_func10(...);
private:
type var1;
type var2;
...
type var10;
};
MyClass
的每个实例是否都有自己的一组十个函数(即,对于每个实例,十个函数中的每一个都会创建一个 "version")?在 class 定义中有 20 个函数会影响性能多少,而不是有 2 个函数(非静态),尤其是在实例化方面,而且在使用这些实例时?变量的数量对性能有多大影响? (请参阅下一段,vector
部分)
我问的原因是我正在编写一个程序来实例化 class 的很多实例(举例来说,我有一个相当大的向量,即 vector<MyClass> vec
),程序比我预期的要慢 运行。
简而言之,我想知道在实例化和使用具有大量非静态 functions/variables 的 class 实例时有多少开销。
编辑
我对 class 实例的大向量所做的其中一件事是排序......我怀疑这是主要的事情是耗尽性能,因为有很多移动(和复制,明确和隐含地)向量周围和向量之间的元素(实例)。显然,如果必须移动和复制这么多的数据块非常大,它可能会耗尽性能。
Will each instance of MyClass have its own set of ten functions
没有
How much will having, say, 20 functions in a class definition impact performance, as opposed to having, say, 2 functions (non-static), especially regarding instantiation, but also in working with these instances?
因此,没有。
How much will the amount of variables affect the performance?
拥有大量成员变量的主要影响是每个实例占用大量内存space。体积大的后果是复制时会花费很多时间。 CPU 缓存中的时间开销不太明显。
但这些开销可能不是您问题的原因。
One of the things I do with my large vector of class instances is sorting...this is the main thing I suspect is draining performance
不要怀疑。措施。要追踪性能的去向,找出瓶颈所在。