问题描述
我有一个用例,其中基于对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变量更好的解决方案了?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)