gpt4 book ai didi

java - 性能:log(a/b) 与 log(a) - log(b)

转载 作者:行者123 更新时间:2023-12-01 18:18:57 26 4
gpt4 key购买 nike

我想知道什么更快:

double value = Math.log(a) - Math.log(b);

double value = Math.log(a/b);

我计算的方式是否会对性能产生影响(假设它经常被调用)或者Java编译器是否会为我优化它?

最佳答案

分析和测试总是一个好主意,但是 Math.log-/ 昂贵得多,所以 Math.log(a/b) (仅调用一次 Math.log)原则上比 Math.log(a) - Math.log 更快。 log(b)(调用它两次)。

Could the way I calculate value have an impact on performance (Assume this gets called very often) or does the Java compiler optimize this for me?

编译器无法优化它,不,因为这两个表达式不等价。 (从数学上讲,确实 ln a/b = ln a − ln b,但是 float 不一定如此,因为它们不精确。当然,Math.log(-1) - Math.log(-1)NaN,这使得它与 Math.log(-1/-1) 完全不同。)

也就是说。 。 。你确实需要测试。即使它被多次调用,与几乎同样频繁调用的附近 println 的成本相比,两个表达式之间的差异可能可以忽略不计。在您期望观察到差异之前,您的程序确实必须每秒运行此表达式异常次数。

关于java - 性能:log(a/b) 与 log(a) - log(b),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28112984/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com