Функциональное программирование - Ленивая оценка
Ленивая оценка - это стратегия оценки, которая удерживает оценку выражения до тех пор, пока не потребуется его значение. Это позволяет избежать повторной оценки. Haskell - хороший пример такого функционального языка программирования, основы которого основаны на Lazy Evaluation.
Ленивая оценка используется в функциях карт Unix для повышения их производительности путем загрузки только необходимых страниц с диска. Для оставшихся страниц память не будет выделена.
Ленивая оценка - преимущества
Это позволяет языковой среде выполнения отбрасывать подвыражения, которые не связаны напрямую с конечным результатом выражения.
Это уменьшает временную сложность алгоритма, отбрасывая временные вычисления и условные выражения.
Это позволяет программисту получать доступ к компонентам структур данных вне их порядка после их инициализации, если они свободны от каких-либо циклических зависимостей.
Лучше всего подходит для загрузки данных, к которым редко обращаются.
Ленивая оценка - недостатки
Это заставляет языковую среду выполнения хранить оценку подвыражений до тех пор, пока она не потребуется в конечном результате, создавая thunks (объекты с задержкой).
Иногда это увеличивает пространственную сложность алгоритма.
Очень трудно найти его производительность, потому что он содержит множество выражений перед их выполнением.
Ленивая оценка с использованием Python
Метод диапазона в Python следует концепции Lazy Evaluation. Это экономит время выполнения для больших диапазонов, и нам никогда не требуются все значения за раз, поэтому также экономит потребление памяти. Посмотрите на следующий пример.
r = range(10) print(r) range(0, 10) print(r[3])
Это даст следующий результат -
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 3