【发布时间】:2015-12-06 19:52:20
【问题描述】:
我有一个实现为lambda 和if elif ... 的函数,并比较了执行时间:
light = lambda c, v: {'turn on': 1,
'turn off': 0,
'toggle': (v+1)%2}[c]
def l(c, v):
if c == 'turn on':
return 1
elif c == 'turn off':
return 0
elif c == 'toggle':
return (v+1)%2
return v
t = Timer(lambda: light('turn on', 0))
print('light: ' + str(t.timeit(number=23163958)))
t = Timer(lambda: l('turn on', 0))
print('l: ' + str(t.timeit(number=23163958)))
输出是:
light: 8.976719211001182
l: 3.9458757909887936
为什么if 语句几乎快两倍?是否有可能进一步提高性能?我必须执行该函数超过 2300 万次。
据此,我认为 dict 查找会更快:https://stackoverflow.com/a/15925086/2014080
【问题讨论】:
-
它不仅仅是条件和字典查找之间的区别,它的 lambda id 想象的开销
-
将 dict 放入函数 def 同样慢。
-
你为什么决定 lambda 会更快?
标签: python