我在玩一些 python 并想出了这段代码:
import time
N = 10000000
t1 = time.time()
for _ in range(N):
if 'lol' in ['lol']:
pass
print(time.time() - t1)
t1 = time.time()
for _ in range(N):
if 'lol' == 'lol':
pass
print(time.time() - t1)
所以,如果我使用 python2:
(test) C:\Users\test>python test.py
0.530999898911
0.5
(test) C:\Users\test>python test.py
0.531000137329
0.5
(test) C:\Users\test>python test.py
0.528000116348
0.501000165939
这很好 - 我喜欢第二个变体更快,我应该使用 'lol' == 'lol' 因为它是比较两个字符串的更 pythonic 方式。 但是如果我使用 python3 会发生什么:
(test) C:\Users\test>python3 test.py
0.37500524520874023
0.3880295753479004
(test) C:\Users\test>python3 test.py
0.3690001964569092
0.3780345916748047
(test) C:\User\test>python3 test.py
0.37799692153930664
0.38797974586486816
使用时间:
(test) C:\Users\test>python3 -m timeit "'lol' in ['lol']"
100000000 loops, best of 3: 0.0183 usec per loop
(test) C:\Users\test>python3 -m timeit "'lol' == 'lol'"
100000000 loops, best of 3: 0.019 usec per loop
天呐!为什么第一个变体更快?那么,当我使用 python3 时,我应该使用像 'lol' in ['lol'] 这样丑陋的风格吗?
请您参考如下方法:
你的大部分 python2 时间是通过调用 range 来构建一个巨大的列表。在 Python 2 中将其更改为 xrange,或使用 timeit正确编写的模块。完成此操作后,您将不会发现明显的差异会激发您编写外观奇怪的代码。
