我最近比较了[]
和list()
的处理速度,惊讶地发现[]
比list()
运行list()
0。我对{}
和dict()
进行了相同的测试,结果几乎相同:[]
和{}
都花费了大约0.128秒/百万次循环,而list()
和dict()
分别花费了大约0.428秒/百万次循环。
为什么呢?[]
和{}
(可能还有()
和''
)会立即传回一些空的库存文字的副本,而它们显式命名的对应物(list()
、dict()
、tuple()
、str()
)会完全创建一个对象,不管它们是否真的有元素?
我不知道这两种方法有什么不同,但我很想知道。我在文档或SO中找不到答案,搜索空括号比我预期的要困难得多。
我通过调用timeit.timeit("[]")
和timeit.timeit("list()")
以及timeit.timeit("{}")
和timeit.timeit("dict()")
分别比较列表和字典来获得计时结果。我正在运行Python 2.7.9。
我最近发现了“为什么if true比if 1慢?”,它比较了if True
和if 1
的性能,似乎触及了类似的文字与全局场景;也许它也值得考虑。