gpt4 book ai didi

Python对象初始化性能

转载 作者:太空宇宙 更新时间:2023-11-04 07:02:43 25 4
gpt4 key购买 nike

我只是在做一些快速的性能测试,我注意到初始化一个列表一般比显式初始化慢四到六倍(这些可能是错误的术语,我不确定这里的行话)。例如:

>>> import timeit
>>> print timeit.timeit('l = list()', number = 10000000)
1.66420578957
>>> print timeit.timeit('l = []', number = 10000000)
0.448561906815

与元组和整数类似:

>>> print timeit.timeit('l = tuple()', number = 10000000)
1.10791182518
>>> print timeit.timeit('l = ()', number = 10000000)
0.23167181015

>>> print timeit.timeit('l = int()', number = 10000000)
1.3009660244
>>> print timeit.timeit('l = 0', number = 10000000)
0.232784032822

这是为什么?

最佳答案

使用 dis module检查字节码:

import dis        
dis.dis(lambda: list())

产量

  6           0 LOAD_GLOBAL              0 (list)
3 CALL_FUNCTION 0
6 RETURN_VALUE

同时

dis.dis(lambda: [])

产量

  7           0 BUILD_LIST               0
3 RETURN_VALUE

因此 list() 需要查找全局名称并调用该对象,而 [] 则不需要。

关于Python对象初始化性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13991248/

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