调用std :: function :: Operator的开销

问题描述

我有一个用例,其中基于对const成员变量的读取,我将在两种不同的逻辑之间进行切换:

void foo(){
  if(member_var_){ // const,initialized at object creation
     a();
  } else {
     b();
  }
}

foo()在我的代码中被多次引用,因此我想知道,不是在运行时基于member_var进行分支,我也许可以消除对象构建的这一步骤:>

private std::function<void()> action_; // foo() just calls action_()
// Constructor
if(member_var_){
   action_ = a;
} else {
   action_ = b;
}

但是,我发现benchmark的性能下降了 7倍,我预计由于重定向会导致性能下降(额外的函数调用开销和一些代码缓存丢失),但是7时代有点令人惊讶,我在source code中找不到任何令人担忧的东西,也许有人对此有见识?还有没有比反复检查bool变量更好的解决方案了?

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...