java – 双倍乘法与加速度

前端之家收集整理的这篇文章主要介绍了java – 双倍乘法与加速度前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

背景

我是航空航天工程和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解释说,在硬件层面上,乘法是一个更复杂的操作,但我也意识到工程师在设计处理器时考虑到了这些问题.

其他有用的链接

> SO: Decimal vs Double Speed
> IBM article on Java bytecode
> SO: Theory – Addition operation versus multiplication operation
> SO: (n – Multiplication) vs (n/2 – multiplication + 2 additions) which is better?

最佳答案
通常,您应该编写最清晰的代码. JIT(不是javac)采用简单,通用的模式并对其进行优化.这意味着使用简单,通用的模式通常是优化代码的最佳方式.

如果您对应用程序进行概要分析并发现代码没有以优化方式运行,那么您可以尝试自己优化代码;

>有意义的微观基准很难写.
>结果可能对环境高度敏感.更改Java或cpu模型的更新,您可能会得到冲突的结果.
>当您对整个代码进行性能测试时,您可能会发现延迟不是您预期的时间.例如,他们经常在IO.

除非您确信优化确实有帮助,否则您应该坚持使用最简单,最易于维护的代码,并且您可能会发现它运行得足够快.

原文链接:https://www.f2er.com/java/437333.html

猜你在找的Java相关文章