Мне было интересно узнать о производительности лямбда-выражений в отличие от операторов if-elif-else в python. Поэтому я написал немного кода тестера и обнаружил, что (очевидно), чем больше elif-ов, тем лучше лямбда-выражения по сравнению с if-s. Мой вопрос: когда наступит момент, когда лямбда-выражения станут «лучшим» решением, чем множественные операторы if-else? Кроме того, что является причиной того, что лямбда-выражения медленнее, чем операторы if-else? Например, удаление случаев 1000, 15 и 55 ускоряет выполнение операторов if-else примерно на 33%.
import time
class Tester:
def __init__(self, tt):
if tt == 0:
self.expression = lambda X: X + 1
elif tt == 1:
self.expression = lambda X: X - 1
def measure(self, value, iterations=1000000, case=0):
t_start = time.time()
for i in range(iterations):
if case==10:
pass
elif case == 1000:
pass
elif case == 15:
pass
elif case == 55:
pass
elif case==0:
value = value + 1
elif case==1:
value = value - 1
no_lambda = time.time() - t_start
t_start = time.time()
for i in range(iterations):
value = self.expression(value)
with_lambda = time.time() - t_start
print ("No lambda: {:.4f}\nWith lambda expressions: {:.4f}".format(no_lambda,
with_lambda))
tt = Tester(0)
tt.measure(1000, iterations = 100000000, case = 0)