gpt4 book ai didi

performance - 为什么让 Haskell 变得懒惰会影响性能?

转载 作者:行者123 更新时间:2023-12-04 03:42:47 25 4
gpt4 key购买 nike

this video (逃离象牙塔- haskell 之旅​​),Simon Peyton Jones说让 Haskell Lazy 帮助他们解决了当时机器上的资源限制问题。它还为懒惰带来了许多其他好处。

然后他说他们现在面临的挑战是懒惰对绩效的影响。

我的问题是:为什么让 Haskell 变得懒惰会影响性能?

最佳答案

如果您不打算使用某事的结果,那么懒惰地存储它然后从不执行它比无用地执行它更有效。这很明显。

但是,如果您要执行它,那么懒惰地存储它然后稍后执行它比现在执行它的效率低。涉及到更多的间接性。记下执行所需的所有细节需要时间,当您意识到确实需要执行时,需要时间将它们全部加载回来。

在添加两个机器宽度整数之类的情况下尤其如此。如果您的操作数已经在 CPU 寄存器中,那么立即添加它们就是一条机器指令。取而代之的是,我们费力地将所有这些东西放到堆上,然后稍后再取回它(很可能会有一堆缓存未命中和管道停顿)。

最重要的是,有时计算并不是那么昂贵,并且产生的结果很小,但是我们需要存储以稍后运行计算的细节非常大。典型的例子是汇总一个列表。结果可能是一个 32 位整数,但要总计的列表可能很大!所有这些额外的工作都让垃圾收集器来管理这些数据,否则这些数据可能是可以被释放的死对象。

一般来说,正确使用惰性可以带来巨大的性能提升,但错误使用惰性会导致令人震惊的性能灾难。懒惰的推理可能非常棘手。这东西不容易。有了经验,你确实会逐渐习惯它。

关于performance - 为什么让 Haskell 变得懒惰会影响性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37914428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com