Являются ли лямбда-выражения быстрее вложенных операторов if? - PullRequest
0 голосов
/ 12 марта 2020

Мне было интересно узнать о производительности лямбда-выражений в отличие от операторов 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...