让 GHC 做更多的 GC?
make GHC to do more GCs?
为了更准确地衡量某些程序的最大活动大小,我想让运行时系统更频繁地进行垃圾收集。 GHC 是否有 directly/indirectle 导致更多 GC 的标志?我知道插入 performGC
可以在某种程度上实现这一点,但是有很多程序需要检测。
我建议不要强制使用更高频率的 GC,除非您明确知道更适合您的代码的 GC 调优。 GC 运行可能非常昂贵。
是的,您的程序使用 "too much" 内存,但正是这种宽容使得 GC 性能良好。如果您允许开销是严格需要的内存的 2-3 倍(虽然不知道 GHC GC 的数字),但可以更频繁地安排 GC 运行。
你说你不想打开内存分析,因为它会干扰优化,但强制 GC 可能更糟。如果过度增加堆上的压力,最终可能会导致基准 GC 运行。
要直接增加 GC,您可以将 -Iseconds
标志设置为低于 0.3 的值以增加空闲 GC 的频率。您还可以设置 -c
以使用通常应减少内存使用的压缩算法(以提供更接近实际使用的内存而不是 GC 开销)。您可能还想将 -Asize
设置为低于 512k 的值,通过提供较小的分配区域通常应该增加编号。 GC 的数量。
为了更准确地衡量某些程序的最大活动大小,我想让运行时系统更频繁地进行垃圾收集。 GHC 是否有 directly/indirectle 导致更多 GC 的标志?我知道插入 performGC
可以在某种程度上实现这一点,但是有很多程序需要检测。
我建议不要强制使用更高频率的 GC,除非您明确知道更适合您的代码的 GC 调优。 GC 运行可能非常昂贵。
是的,您的程序使用 "too much" 内存,但正是这种宽容使得 GC 性能良好。如果您允许开销是严格需要的内存的 2-3 倍(虽然不知道 GHC GC 的数字),但可以更频繁地安排 GC 运行。
你说你不想打开内存分析,因为它会干扰优化,但强制 GC 可能更糟。如果过度增加堆上的压力,最终可能会导致基准 GC 运行。
要直接增加 GC,您可以将 -Iseconds
标志设置为低于 0.3 的值以增加空闲 GC 的频率。您还可以设置 -c
以使用通常应减少内存使用的压缩算法(以提供更接近实际使用的内存而不是 GC 开销)。您可能还想将 -Asize
设置为低于 512k 的值,通过提供较小的分配区域通常应该增加编号。 GC 的数量。