gpt4 book ai didi

compiler-construction - 是什么让基于堆的 Scheme 比基于堆栈的 Scheme 慢?

转载 作者:行者123 更新时间:2023-12-04 12:35:56 24 4
gpt4 key购买 nike

我正在为类似于 Scheme 的语言开发编译器,并且正在阅读 Dybvig 的论文。在其中,他说通过在堆栈上而不是在堆上分配调用帧来实现他的大部分性能提升。为了在存在闭包和延续的情况下实际完成这项工作,需要完成几个技巧。

我的问题是这种性能提升从何而来?仅仅是因为我们对垃圾收集器施加的压力较小吗?

换句话说:假设我们有无限量的内存,堆栈分配的调用帧是否仍然比堆分配的调用帧快?

最佳答案

我认为 Eli 回答了您的问题,因此我将在此处粘贴他的评论并为此赢得赞誉 :)。

Eli Barzilay 写道:

(a) 处理堆需要更多时间,因为它需要扫描它(它不像堆栈那样线性); (b) 实际上所有的 cpu 架构都特别强调尽可能快地访问堆栈,而不是堆。

为此,我将添加有关缓存局部性的一般提示。也就是说,堆栈将所有操作保存在内存的一小部分中,这几乎肯定会保留在缓存中。

关于compiler-construction - 是什么让基于堆的 Scheme 比基于堆栈的 Scheme 慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8915014/

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