The*_*ist 1 c++ math double performance integer
我有一个非常复杂和复杂的数据拟合程序,它使用Levenverg-Marquardt算法进行双精度拟合(基本上拟合类是模板化的,但我使用实例化它来加倍).拟合过程包括:
我的一位同事建议我至少使用整数至少10倍.我的问题是:
该程序的开发是为了从在线信号中计算出一些参数,这意味着程序必须尽可能快,但我想知道是否值得启动将所有内容转换为整数的项目.
改进的程度取决于您的平台.例如,如果您的平台具有快速浮点协处理器,则在浮点执行算术可能比完整算术更快.
您可以通过优化算法而不是切换到整数算法来获得更多性能提升.
提高性能的另一种方法是减少数据缓存命中并减少分支和循环.
我会测量程序的性能以找出瓶颈所在的位置,然后查看大部分性能发生的部分.例如,在我的嵌入式系统中,像你建议的微优化,节省了3微秒.这种增益不值得重新测试整个系统.如果有效,请不要修复它.首先要注重正确性和稳健性.