我想知道,如果我们有以下类:
class MyClass
{
public:
MyClass(...)
type nonstatic_func1(...);
type nonstatic_func2(...);
...
type nonstatic_func10(...);
private:
type var1;
type var2;
...
type var10;
};
MyClass
的每个实例是否都有自己的十个函数集(即,对于每个实例,是否会创建十个函数中每个函数的"版本"(?类定义中有20个函数会对性能产生多大影响,而不是有2个函数(非静态(,尤其是在实例化方面,而且在处理这些实例时?变量的数量会对性能产生多大影响?(见下一段vector
部分(
我问这个问题的原因是,我正在编写一个程序,该程序正在实例化一个类的许多实例(例如,我有一个相当大的向量,即vector<MyClass> vec
(,并且该程序的运行速度比我预期的要慢。
简而言之,我想知道实例化和处理一个有很多非静态函数/变量的类的实例会有多少开销。
编辑
我对类实例的大向量所做的一件事是排序。。。我怀疑这是消耗性能的主要原因,因为在向量周围和向量之间有很多移动(以及显式和隐式地复制(元素(实例(的操作。显然,如果必须移动和复制的数据块太大,可能会消耗性能。
MyClass的每个实例都有自己的一组十个函数吗
没有。
类定义中有20个函数会对性能产生多大影响,而不是有2个函数(非静态(,尤其是在实例化方面,而且在处理这些实例时?
因此,没有
变量的数量会对性能产生多大影响?
拥有大量成员变量的主要影响是每个实例都占用了大量内存空间。体积大的后果是在复制时会花费大量时间。不太明显的时间开销是CPU缓存。
但这些开销可能不是你问题的原因。
我对类实例的大向量所做的一件事是排序。。。我怀疑这是性能下降的主要原因
不要怀疑。测量要跟踪性能的发展,请找出瓶颈所在。