![]() |
1
16
在开始设计和部署超越功能的定制实现以提高性能之前,最好在算法级别以及通过工具链进行优化。不幸的是,我们没有关于这里要优化的代码的任何信息,也没有关于工具链的信息。
在算法级别,检查是否所有对超越函数的调用都是真正必要的。也许有一种数学转换需要更少的函数调用,或者将超越函数转换为代数运算。是否有任何超越函数调用可能是多余的,例如,因为计算不必要地切换对数空间?如果精度要求适中,可以使用
编译器倾向于提供各种开关,这些开关会影响数字密集型代码的性能。除了将一般优化级别提高到
对数函数的自定义实现通常涉及分隔二进制浮点参数
|
![]() |
2
4
|
![]() |
3
2
|
![]() |
4
0
我矢量化了@njuffa的答案。自然日志,与AVX2配合使用:
|
![]() |
5
0
我还需要一个快速的对数近似值,到目前为止最好的似乎是基于Ankerls算法的近似值。 http://martin.ankerl.com/2007/10/04/optimized-pow-approximation-for-java-and-c-c/
只有一个减法和乘法。它出乎意料地好,而且速度快得无与伦比。 |
![]() |
6
-2
这取决于你需要有多准确。通常调用log来了解数字的大小,通过检查浮点数的指数字段,基本上可以免费执行此操作。这也是你的第一近似值。我将为我的书《基本算法》插入一个插件,该书解释了如何从第一原理实现标准库数学函数。 |
![]() |
Diret · 获取范围内每个数字的子倍数的算法 2 年前 |
![]() |
Saif · 排序时python如何决定何时调用比较器? 2 年前 |
![]() |
Wadu Hek · 查找列表中唯一的重复项 2 年前 |
![]() |
Crawford Patten · 如何获得整数列表的四分位数 2 年前 |
![]() |
MoonGoose · 如何在python中围绕特殊字符创建空间? 2 年前 |
![]() |
taha khamis · 在一个数字中组合元素的省道 2 年前 |
![]() |
Soup · 比O(n)更快地找到阶乘n模m 2 年前 |
![]() |
BigO · 单词积分游戏不断增加数字[关闭] 2 年前 |