在我的程序中,我使用了几个类和大量函数。我想知道哪一个会更快地工作,或者它们之间在速度方面没有区别。
1st:Class function
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);
2nd:具有类指针的函数
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次。所以我想知道他们中的任何一个是否能更好地适应时机。
谢谢!
答案 0 :(得分:5)
而不是加速决定因素应该是函数逻辑上是否属于类。如果是,请将其作为会员。如果没有使它成为一个独立的功能。
BTW每个成员函数都隐式传递了this
指针,因此两个版本之间没有太大区别。如果你真的关心性能。制作一个包含两个版本的示例程序,并在您的环境中使用大型数据集对其进行概要分析。
答案 1 :(得分:3)
我的回答是Alok给出的答案,我必须重申Donald Knuth的一个声明(他很有名,所以声明必须是真的,显然......):
程序员浪费了大量时间来考虑或担心程序中非关键部分的速度,而这些效率尝试实际上在考虑调试和维护时会产生很大的负面影响。我们应该忘记小的效率,大约97%的时间说:过早优化是所有邪恶的根源。然而,我们不应该把这个关键的3%的机会放弃。
我在这个问题上的两分钱:测量一些东西,直到你非常确定你的“优化”会使程序受益。否则,随着时间的推移,您倾向于生成更难以理解且无法维护的代码......
答案 2 :(得分:1)
在C ++中,所有成员函数(除非它们是虚函数)都是独立函数,其中“this”作为第一个参数传入。选择一个而不是另一个,你不会获得任何速度增益,它们都只是函数调用。