gpt4 book ai didi

performance - 有关GC的任何硬数据与显式内存管理性能之间的关系?

转载 作者:行者123 更新时间:2023-12-03 08:48:17 25 4
gpt4 key购买 nike

我最近读了Dan Grossman的出色文章“The Transactional Memory / Garbage Collection Analogy”。一句话引起了我的注意:

In theory, garbage collection can improve performance by increasing spatial locality (due to object-relocation), but in practice we pay a moderate performance cost for software engineering benefits.



在那之前,我的感觉一直很模糊。一遍又一遍,您会看到GC可以提高效率的说法,因此我始终将这种想法放在脑后。但是,看完这篇文章后,我开始产生严重的怀疑。

为了衡量对GC语言的影响,有人进行了一些Java程序,跟踪了执行,然后用显式内存管理代替了垃圾回收。根据 this review of the article上的 Lambda the ultimate,他们发现GC总是较慢。虚拟内存问题使GC看起来更加糟糕,因为此时收集器经常触摸比程序本身更多的内存页面,从而导致大量交换。

这对我来说都是实验性的。与显式内存管理相比,是否有人(特别是在C++中)对GC性能进行了全面的基准测试?

比较有趣的是比较各种大型开源项目(例如在有或没有GC的情况下)的执行情况。有人听说过这样的结果吗?

编辑:并且 请专注于性能问题,而不是为什么存在GC或为什么有好处。

干杯,

卡尔

PS。如果您已经退出火焰喷射器:我不是要取消GC的资格,而是只是想对性能问题有一个明确的答案。

最佳答案

这变成了另一场充满“我的直觉”的大战。更改的一些硬数据(纸张包含详细信息,基准,图表等):

http://www.cs.umass.edu/~emery/pubs/04-17.pdf说:

“结论。关于垃圾收集性能影响的争论长期以来掩盖了它提供的软件工程优势。本文介绍了一种基于跟踪和仿真的Oralcular内存管理器。使用此框架,我们使用垃圾收集和比较运行时,空间消耗和虚拟内存占用量,我们发现,当空间充足时,垃圾回收的运行时性能可以与显式内存管理相媲美,甚至可以高出4%。复制垃圾收集所需的物理内存是Lea或Kingsley分配器的六倍,以提供可比的性能。”

当您有足够的内存时,复制GC的速度将比显式的free()-http://www.cs.ucsb.edu/~grze/papers/gc/appel87garbage.pdf

这也取决于您使用哪种语言-Java将必须对每个集合进行很多重写(堆栈,对象,世代),并且编写一个不必在JVM中停止工作的多线程GC将是一个巨大的成就。另一方面,您几乎可以在Haskell上免费获得该地址,因为它的GC时间很少会超过5%,而分配时间几乎为0。这实际上取决于您在做什么以及在什么环境下进行。

关于performance - 有关GC的任何硬数据与显式内存管理性能之间的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/755878/

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