优化调用一系列功能指针
optimizing calling an array of function pointers
我有以下循环,该循环在数组中调用所有功能指针:
for(auto f : program) {
f();
}
我想优化这个。到目前为止,我尝试了两种方法:
- 尾部递归
- jitting螺纹代码
这是完整的测试代码:https://coliru.stacked-crooked.com/a/d639f024b12222c54
我的计算机上的计时结果(iMac Pro 8核(为:
naive: 0.530534
tail recursion: 0.265192
JIT threaded: 0.125106
当然,必须对功能进行修改以促进尾部递归,但这还可以。在代码清洁方面,不太令人愉悦的是将所有内容都放在一个函数中并使用计算的goto(实际上我也尝试过,并且计算的goto仅比我的机器上的尾部递归稍快。(
我可以在不发抖的情况下比尾部递归做得更好吗? 请注意,该功能无法重新排序。
是。 测试代码由100个可能的功能组成。我写了一个小程序来生成100x100个功能数组的代码,这些功能调用了这100个功能。优化器将原始100嵌入到对中。我们现在有: 该技术可以通过分析函数调用的共同序列而不是生成所有可能的对来推广到现实世界的情况。 这可以与尾部递归结合起来,以更快地调度。naive: 0.534162
tail recursion: 0.269307
JIT threaded: 0.124608
pairs: 0.085922
相关文章:
- 链表删除功能的单指针 // 是可能的
- 对于非常量指针类型的参数,未调用具有常量指针模板类型参数的功能
- char* 除了作为C++中的指针之外,还有其他功能吗?
- 具有小对象优化功能的智能指针
- 如何定义和设置指向模板类方法的功能指针
- 将状态传递给功能指针
- 如何使用指针向量为班级制作复制功能
- 我对C 中共享指针列表进行排序的功能未完成类型
- 如何使用结构内的功能指针调用私有函数
- 如何将自己的智能指针传递到功能
- 模板功能以检查智能指针是否为空
- 如何存储指针以功能模板,该模板将可呼叫对象作为其参数之一
- 功能指针不起作用(C )
- 将C 方法作为功能指针传递
- 字符指针功能以复制C 中的字符串
- 指针?指针功能
- 反向指针功能问题
- 无效指针功能的输出
- 更好地解释C++指针功能
- 用memcpy c 读取并写入指针功能