gpt4 book ai didi

compiler-construction - 使用引用计数混合标记和扫描

转载 作者:行者123 更新时间:2023-12-04 08:37:43 26 4
gpt4 key购买 nike

我正在设计一个非常简单的编译器(某种学术研究),我正在考虑实现一个简单的引用计数 GC 以及一个标记和扫描。这个想法是,当没有循环时,引用计数可以很早地释放死对象,这也留下了以下想法:标记和清除通常涉及一些暂停,因为标记和清除过程必须遍历大量引用,因此:以前的引用计数不应该使标记和扫描速度更快(元素更少)吗?
这个想法是胡说八道吗?我以前从未实现过如此复杂的事情,我不想做很多工作只是为了发现这是一个非常糟糕的主意。

最佳答案

起初我直觉上同意,但我得出的结论是这种直觉是错误的。虽然引用计数会在标记和清除 GC 之前移除一些垃圾(我将其简称为 msgc),但这对 msgc 性能没有太大帮助。标记阶段甚至从不查看垃圾,因此通过 refcounting 提前清除垃圾并不会加速标记。我不太确定清扫阶段,因为这取决于您如何实现它,但我可以想象出几种不受垃圾量影响的策略,足以使这变得值得。

考虑到增加的复杂性,这可能不值得。无论如何,您不会从简单的 msgc 中获得太多性能,并且引用计数的增加成本(更大的对象头、更慢的分配等)会减少 yield ,如果有的话。

关于compiler-construction - 使用引用计数混合标记和扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16423930/

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