300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > python 元组比较大小_为什么元组比列表更快?

python 元组比较大小_为什么元组比列表更快?

时间:2020-12-21 15:12:25

相关推荐

python 元组比较大小_为什么元组比列表更快?

所报道的“build设速度”比率只适用于常量元组(项目用文字表示)。 仔细观察(并在机器上重复 – 只需在shell /命令窗口input命令!)…:

$ python3.1 -mtimeit -s'x,y,z=1,2,3' '[x,y,z]' 1000000 loops, best of 3: 0.379 usec per loop $ python3.1 -mtimeit '[1,2,3]' 1000000 loops, best of 3: 0.413 usec per loop $ python3.1 -mtimeit -s'x,y,z=1,2,3' '(x,y,z)' 10000000 loops, best of 3: 0.174 usec per loop $ python3.1 -mtimeit '(1,2,3)' 10000000 loops, best of 3: 0.0602 usec per loop $ python2.6 -mtimeit -s'x,y,z=1,2,3' '[x,y,z]' 1000000 loops, best of 3: 0.352 usec per loop $ python2.6 -mtimeit '[1,2,3]' 1000000 loops, best of 3: 0.358 usec per loop $ python2.6 -mtimeit -s'x,y,z=1,2,3' '(x,y,z)' 10000000 loops, best of 3: 0.157 usec per loop $ python2.6 -mtimeit '(1,2,3)' 10000000 loops, best of 3: 0.0527 usec per loop

我没有在3.0上进行测量,因为当然我没有它 – 它已经完全过时了,完全没有理由保留它,因为3.1在各方面都优于它(Python 2.7,如果你可以升级到2.6,在每个任务中的速度比2.6快了近20%,正如你所看到的,速度比3.1快 – 所以,如果你关心性能的话,Python 2.7真的是唯一的版本要去!)。

无论如何,关键在于,在每个Python发行版中,从常量字面值构build列表的速度大致相同,或者稍微低于通过variables引用的值构build列表; 但是元组的performance却非常不同 – 从常量字面值构build元组的速度通常比构buildvariables引用的值快3倍! 你可能想知道这是怎么回事吧?)

答案:由常量字面值构成的元组可以很容易地被Python编译器识别为一个不变的常量字面本身:所以它本质上是一次构build的,当编译器将源代码变成字节码时,隐藏在“常量表” “的相关function或模块。 当这些字节码执行时,他们只需要恢复预build的常量元组 – 嘿presto! – )

这个简单的优化不能应用到列表中,因为列表是一个可变对象,所以至关重要的是,如果相同的expression式如[1, 2, 3]执行两次(在一个循环中 – timeit模块使循环开启你的代表;-),每次都重新构造一个新的列表对象,而且构造(如编译器无法简单地将其识别为编译时常量和不可变对象时构造的元组)需要一点时间。

也就是说,元组构造(当两个构造实际上必须发生时)仍然是列表构造的两倍 – 这种差异可以用元组的简单性来解释,其他答案已经多次提到。 但是,这种简单性并没有考虑到六倍或六倍以上的加速,正如你所观察到的,如果你只是将列表和元组的构造与简单的常量文字作为它们的项目进行比较,

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。