【发布时间】:2013-02-06 16:17:02
【问题描述】:
在我的程序中,我使用了几个类和大量的函数。我想知道哪一个会更快,或者它们之间在速度方面没有区别。
第一个:类函数
class mex{
public:
int length,nof_evaluations,nof_fast_evaluations;
tree T;
calc_mex(vector<string>,vector<double>);
};
将被调用
mex m;
vector<string> v1;
vector<double> v2;
m.calc_mex(v1,v2);
第二个:带有类指针的函数
class mex{
public:
int length,nof_evaluations,nof_fast_evaluations;
tree T;
};
calc_mex(mex*,vector<string>,vector<double>);
将被调用
mex m,*mptr;
mptr=&m;
vector<string> v1;
vector<double> v2;
calc_mex(mptr,v1,v2);
我在我的程序中使用了这两种方式,但更倾向于方式 1,因为它看起来更干净、更有条理。我还在程序的一次运行中调用了这些类型的函数 100K 次。所以我想知道他们中的任何一个是否会在时间方面做得更好。
谢谢!
【问题讨论】:
-
您是否尝试过运行基准测试?
-
我懒得这么做。因为我需要在这些函数中更改很多东西。
-
在很多情况下,根本没有区别。当/如果有差异,几乎可以肯定是微不足道的。
-
考虑到编译器只是要将非虚拟成员函数调用转换为带有指针的直接类 C 函数调用(因为 CPU 不会说 C++),它不应该做太多除非函数是虚拟的,否则完全不同。