haskell - 惰性评估是如何以不需要比所产生的 yield 更多的开销的方式实现的?

标签 haskell compilation runtime lazy-evaluation

我知道有些地方懒惰评估会阻止需要计算。例如,将两个数字相加,然后将它们传递给最终从未使用过的函数参数。
但在我看来,存储和加载稍后要使用的操作会产生很多开销,而且这些开销通常会抵消任何 yield 。
有人可以解决这个问题吗?

最佳答案

你是对的。惰性评估确实有很大的开销,而且大多数时候你不会从中获得实际的性能提升。惰性求值的主要原因是它很方便——它使 Haskell 的语言语义更清晰,并且(例如)惰性/无限列表有时对程序员来说很方便。
幸运的是,编译器通常可以优化内部循环之外的惰性机制,否则幼稚的实现会导致严重的性能损失。

关于haskell - 惰性评估是如何以不需要比所产生的 yield 更多的开销的方式实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63698539/

相关文章:

haskell - 无法引用包

Linux 下 C++ 编译错误

c# - 如何在 Visual Studio 2008/2010 中捕获并保存解决方案项目的编译时和运行时错误

haskell - 在 haskell 中定义自定义编译指示

haskell - 种类级别的括号是什么意思?

haskell - fmap 的自由定理

c++ - 如果不在内存中,表达式和常量存储在哪里?

c - 静态链接到LAPACK

c - 我的代码中有一个运行时错误,我需要分析

performance - 加速嵌套循环;可以向量化吗?