双倍乘法与加法速度

时间:2016-08-15 21:47:53

标签: java algorithm performance optimization double

背景

我是航空航天工程和EECS学生。我正在处理大量的数学和物理,但还没有进入算法或汇编语言。

我设计和编写了各种各样的程序,从商业计划软件到卫星硬件控制器。

这项工作大部分涉及在其他媒介中进行数学运算,然后编写代码来实现它。

在将它们放入代码之前,我代数地简化了这些方程式。但是在我花时间这么做之前,我想知道我是否应该支持更多的加法运算,或者更多的乘法运算。 (我已经知道分工的成本要高得多。)

实施例

B sub-x prime

这是我从其他一些作品中得出的等式,这是我看到的非常典型。

我们可以清楚地看到,至少有一些方法可以简化这个等式。由于简化由我自行决定,我希望选择与 实用 一样有利于性能的选项。我不会以算法设计时为代价获得前沿性能。

问题

一般来说,哪种双重操作更快:添加或乘法?

我知道知道哪个更快的唯一明确方法是编写和运行基准测试,但这不是重点。 每次我需要简化方程式时,这都不足以证明编写测试代码的合理性。我需要的是一条适用于我的代数的经验法则。

如果差异是如此微不足道,以至于边界可忽略不计或不确定,这是一个可以接受的答案,只要我知道这几乎没有区别。

支持研究

我知道,在C和C ++中,the optimizer takes care of the algebra,所以它是一个空问题。但是,据我所知,the Java compiler does not do algebraic simplification/optimization。具体来说,this answer表明情况就是这样,程序员应该进行这种优化。

互联网上存在分散的答案,但我无法得出确凿的答案。 A former University of Maryland physics student在Java上运行了这些测试,但表中没有双重性能数据,图表比例使结果难以辨认。 This University of Quebec CS professor's tests仅显示整数运算的结果。 This SO answer解释说,在硬件层面上,乘法是一个更复杂的操作,但我也意识到工程师在设计处理器时会考虑到这些事情。

其他有用的链接:

0 个答案:

没有答案