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

不要怀疑。措施。要追踪性能的去向,找出瓶颈所在。