2024-10-04 11:30:44 发布
网友
我想知道sum()内建函数在长时间加法上是否有andventage?在
是
sum(filter(None, [a, b, c, d]))
比
假设我用的是CPython?在
谢谢
编辑:如果这些变量是小数怎么办?在
一个简单的例子(注意,sum版本采用了tuple参数,因此不包括构建该结构的时间(a, b, c, d),也不包括不必要的filter):
sum
tuple
(a, b, c, d)
filter
>>> import timeit >>> def add_up(a, b, c, d): return a + b + c + d >>> def sum_up(t): return sum(t) >>> t = (1, 2, 3, 4) >>> timeit.timeit("add_up(1, 2, 3, 4)", setup="from __main__ import sum_up, add_up, t") 0.2710826617188786 >>> timeit.timeit("sum_up(t)", setup="from __main__ import sum_up, add_up, t") 0.3691424539089212
这几乎是不可避免的-add_up没有任何函数调用开销,它只做3个二进制加法。但是不同的形式有不同的用途-sum不关心给它多少项,而你必须用+写出每个名称。在一个具有固定数量的项目的例子中,速度至关重要,+具有优势,但对于几乎所有的一般情况,sum是最好的选择。在
add_up
+
使用Decimals:
Decimal
一个简单的例子(注意,
sum
版本采用了tuple
参数,因此不包括构建该结构的时间(a, b, c, d)
,也不包括不必要的filter
):这几乎是不可避免的-
add_up
没有任何函数调用开销,它只做3个二进制加法。但是不同的形式有不同的用途-sum
不关心给它多少项,而你必须用+
写出每个名称。在一个具有固定数量的项目的例子中,速度至关重要,+
具有优势,但对于几乎所有的一般情况,sum
是最好的选择。在使用
^{pr2}$Decimal
s:相关问题 更多 >
编程相关推荐