Skip to main content
 首页 » 编程设计

Python对象初始化性能

2025年05月04日10傻小

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

>>> 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() 需要查找全局名称并调用该对象,而 [] 则不需要。