gpt4 book ai didi

python - abs() vs fabs() 速度差异和 fabs() 的优势

转载 作者:IT老高 更新时间:2023-10-28 21:03:02 26 4
gpt4 key购买 nike

我对 abs() 和 fabs() 函数进行了一些简单的测试,但我不明白使用 fabs() 有什么好处,如果是的话:

1) 慢

2) 仅适用于 float

3) 如果用于不同的类型会抛出异常

In [1]: %timeit abs(5)
10000000 loops, best of 3: 86.5 ns per loop

In [3]: %timeit fabs(5)
10000000 loops, best of 3: 115 ns per loop

In [4]: %timeit abs(-5)
10000000 loops, best of 3: 88.3 ns per loop

In [5]: %timeit fabs(-5)
10000000 loops, best of 3: 114 ns per loop

In [6]: %timeit abs(5.0)
10000000 loops, best of 3: 92.5 ns per loop

In [7]: %timeit fabs(5.0)
10000000 loops, best of 3: 93.2 ns per loop

float 更慢!

从我的立场来看,使用 fabs() 的唯一优势是使您的代码更具可读性,因为通过使用它,您清楚地表明了您使用浮点/双点值的意图

fabs()还有其他用途吗?

最佳答案

来自 an email response来自 Tim Peters :

Why does math have an fabs function? Both it and the abs builtin function wind up calling fabs() for floats. abs() is faster to boot.

没什么深奥的——数学模块提供了 C89 标准中的所有内容 libm(+ 一些扩展),fabs() 是一个标准 C89 libm 函数。

没有一个明确的(对我而言)为什么一个会比 其他;听起来很意外; math.fabs() 当然可以做得更快 (如目前实现的(通过 math_1),它忍受了一堆 通用“尝试猜测 libm 是否应该设置 errno” 浪费的样板文件(没有域或范围错误 fabs())) 是可能的。

似乎没有使用 fabs 的有利理由。只需将 abs 用于几乎所有目的。

关于python - abs() vs fabs() 速度差异和 fabs() 的优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21994052/

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