【问题标题】:Any trick to compute faster Math.pow(10, (0.1x+1.5))?计算更快 Math.pow(10, (0.1x+1.5)) 的任何技巧?
【发布时间】:2021-06-30 07:26:53
【问题描述】:

我的 Java 算法花费 30% 的时间为许多不同的 x 值计算表达式 Math.pow(10, (0.1x+1.5))(我事先无法知道这些 x)。有什么方法/技巧可以降低这个瓶颈?

【问题讨论】:

  • 这是pow(a, x) * b,其中a = pow(10, 0.1)b = 10 * sqrt(10) 可能会快一些,但不会快很多。
  • 什么样的算法?由于这种力量出现的特殊背景,可能会出现特殊的机会
  • powexp 如果您知道 x 是一个归一化的有限数(因此不是 NaNInf 甚至 -0),则可以向量化并更快地计算假设机器使用标准 IEEE-754 表示浮点数。这种技巧是不可移植的(也不太适合 Java)。
  • 我也很想知道你在做什么。

标签: performance math optimization mathematical-optimization compiler-optimization


【解决方案1】:

另一种选择是:

31.6227766017 * Math.exp(0.23025850929 * x)

这可能更快,因为exppow 简单,但我没有测试差异有多大(如果有的话)。

【讨论】:

  • 这些数字正好是 10^1.5 和 0.1*ln(10)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-07
  • 1970-01-01
  • 2020-08-03
相关资源
最近更新 更多