惰性求值是一种求值策略,它保留表达式的求值,直到需要其值为止。它避免了重复请求。Haskell是这种函数式编程语言的一个很好的例子,其基础基于Lazy Evaluation.lazy Evaluation在Unix映射函数中用于通过仅从磁盘加载所需的页面来提高其性能。不会为其余页面分配内存。
- 它允许语言运行库丢弃不直接链接到表达式最终结果的子表达式。它通过丢弃临时计算和条件来降低算法的时间复杂度。
- 它允许程序员在初始化数据结构的组件后无序地访问它们,只要它们没有任何循环依赖关系。
- 它最适合加载不经常访问的数据。
它强制语言运行时保留子表达式的求值,直到最终结果需要它,方法是创建 thunks(延迟对象)。 有时它会增加算法的空间复杂性。很难体现它的性能,因为它在执行之前包含大量表达式。
Python中的范围方法遵循惰性求值的概念。
它节省了更大范围的执行时间,我们从不需要一次所有值,因此它也节省了内存消耗。
请看以下示例。
r = range(10)
print(r)
range(0, 10)
print(r[3]) 输出结果
range(0, 10)
3