成员指针的性能vs if else

时间:2016-07-25 02:12:20

标签: c++ pointers

我有以下课程:

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_firstp1 p2A几乎从未改变过,我正在考虑将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

在这个新版本中,我添加了一个数组,用于记住每对p2do_work的顺序,而在do_work_internal内我只是将参数传递给{{1} }。

我的问题是:鉴于事实

  1. Parameter订单很少更改
  2. 大约有1000个Parameter个对象
  3. do_work被称为100次/秒
  4. 即使0.5微秒的改善也很好
  5. 是第二类比第一类具有更快的性能吗?

0 个答案:

没有答案