我有以下课程:
class A {
private:
int do_work_internal(const & Parameter p1, const Parameter & p2);
public:
int do_work(const Parameter & p1, const Parameter& p2, bool p1_first) {
if (p1_first) {
return do_work_internal(p1, p2);
else {
return do_work_internal(p2, p1);
}
}
};
基本上类A
接受2个参数并进行一些计算,但是,2个参数的顺序是重要的,并由bool p1_first
确定。由于do_work
非常频繁地被调用而p1_first
被p1
p2
,A
几乎从未改变过,我正在考虑将class A {
private:
int do_work_internal(const Parameter& p1, const Parameter& p2);
vector<pair<Parameter*>> param_orders; // added
public:
int do_work (int parameter_pair_index) {
const auto & params = param_orders[parameter_pair_index];
do_work_internal(*params.first, *params.second);
}
};
修改为以下内容:
p1
在这个新版本中,我添加了一个数组,用于记住每对p2
和do_work
的顺序,而在do_work_internal
内我只是将参数传递给{{1} }。
我的问题是:鉴于事实
Parameter
订单很少更改Parameter
个对象do_work
被称为100次/秒是第二类比第一类具有更快的性能吗?