gpt4 book ai didi

python - Decimal Python 与 float 运行时

转载 作者:太空狗 更新时间:2023-10-29 22:18:10 24 4
gpt4 key购买 nike

这只是一个关于我在使用这两种不同数据类型之间应该期望什么样的运行时差异的一般性问题。

我的测试:

test = [100.0897463, 1.099999939393,1.37382829829393,29.1937462874847272,2.095478262874647474]
test2 = [decimal.Decimal('100.0897463'), decimal.Decimal('1.09999993939'), decimal.Decimal('1.37382829829'), decimal.Decimal('29.1937462875'), decimal.Decimal('2.09547826287')]

def average(numbers, ddof=0):
return sum(numbers) / (len(numbers)-ddof)

%timeit average(test)
%timeit average(test2)

运行时的区别是:
1000000 次循环,3 次循环中的最佳次数:每次循环 364 ns
10000 个循环,3 个循环中的最佳循环:每个循环 80.3 µs

所以使用小数比使用 float 慢大约 200 倍。这种类型的差异是否正常,是否符合我在决定使用哪种数据类型时应该预期的结果?

最佳答案

根据您看到的时差,您可能使用的是 Python 2.x。在 Python 2.x 中,decimal 模块是用 Python 编写的,速度相当慢。从 Python 3.2 开始,decimal 模块被重写为 C 并且速度更快。

在我的系统上使用 Python 2.7,decimal 模块慢了大约 180 倍。使用 Python 3.5,decimal 模块仅慢 ~2.5 倍。

如果您关心decimal 性能,Python 3 会快得多。

关于python - Decimal Python 与 float 运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41453307/

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