Jam*_*mes 25 python performance
我想知道为什么try-except比下面的程序中的if慢.
def tryway():
try:
while True:
alist.pop()
except IndexError:
pass
def ifway():
while True:
if alist == []:
break
else:
alist.pop()
if __name__=='__main__':
from timeit import Timer
alist = range(1000)
print "Testing Try"
tr = Timer("tryway()","from __main__ import tryway")
print tr.timeit()
print "Testing If"
ir = Timer("ifway()","from __main__ import ifway")
print ir.timeit()
Run Code Online (Sandbox Code Playgroud)
我得到的结果很有趣.
Testing Try
2.91111302376
Testing If
0.30621099472
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么尝试这么慢?
Gle*_*ard 42
你只设置了一次.第一次调用"tryway"会清除它,然后每次连续调用都不会执行任何操作.
def tryway():
alist = range(1000)
try:
while True:
alist.pop()
except IndexError:
pass
def ifway():
alist = range(1000)
while True:
if alist == []:
break
else:
alist.pop()
if __name__=='__main__':
from timeit import Timer
print "Testing Try"
tr = Timer("tryway()","from __main__ import tryway")
print tr.timeit(10000)
print "Testing If"
ir = Timer("ifway()","from __main__ import ifway")
print ir.timeit(10000)
>>> Testing Try
>>> 2.09539294243
>>> Testing If
>>> 2.84440898895
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10401 次 |
最近记录: |