【发布时间】:2013-05-22 21:00:12
【问题描述】:
我的程序在 std::pow(double,int) 函数上花费了 90% 的 CPU 时间。准确性不是这里的主要关注点,所以我想知道是否有更快的替代方案。我想尝试的一件事是强制浮动,执行操作,然后返回双倍(还没有尝试过);我担心这不是一种提高性能的可移植方式(大多数 CPU 本质上不是在双打上运行吗?)
干杯
【问题讨论】:
-
有点取决于您计算的功率 - 请显示一些代码和/或描述您的数据。
-
在一般情况下,硬件比软件快,这就是
pow的意义所在……除非你对你正在做的事情施加额外的限制,否则你无法击败它。 -
这篇文章可能有用:martin.ankerl.com/2012/01/25/…
-
2^(y*log2(x))怎么样?见:stackoverflow.com/questions/4638473/how-to-powreal-real-in-x86 -
如果您知道要提高到幂的数字范围,并且如果您使用有限数量的幂,那么您可以通过将预先计算的值存储到数组中来获得出色的优化并简单地使用指数作为索引通过索引获取它们。
标签: c++ performance