C++ exp LUT(查找表)

Hoo*_*ked 7 c++ profiling lookup-tables

在我正在编写的C++ CPU绑定模拟中,我在程序中通过valgrind追踪了一个瓶颈cmath::exp.它目前占我模拟时间的40%以上.我可以将输入绑定到一个相对较小的域,但我想控制准确性.我正在考虑转移到LUT(查找表)来替换,exp但我不太确定如何以"正确的方式"(tm)执行此操作.我有些担忧:

  1. 大型查找表将不适合缓存,从而减慢访问速度
  2. 将双输入转换为整数以便访问查找表的最佳方法
  3. (2)的答案是否取决于输入函数的斜率?
  4. 我是否重新发明轮子 - 以前是否已经完成了这项工作?

实现/(从库中包含)LUT的最佳方法是什么exp

Ben*_*igt 0

之前已经问过一个非常类似的问题。这是我的回答:

该方法是由该问题的作者建议的,我能够有效地实现它(小型查找表和查找后最少的额外工作)。它是用 C# 编写的,但转换为 C++ 应该很简单,如果您遇到麻烦,我可以提供帮助。