为什么 Shake 建议禁用闲置垃圾回收?

Why does Shake recommend disabling idle garbage collection?

在 Shake 文档中,它建议使用标志 -with-rtsopts=-I0 来编译以禁用闲置垃圾收集。为什么 Shake 会推荐它?

默认情况下(没有标志)如果所有 Haskell 线程空闲 0.3 秒,GHC 将执行垃圾收集 (GC)。由于构建系统通常是 运行 个外部进程,因此所有 Haskell 个线程空闲时间 > 0.3 秒是很常见的,这会导致大量不必要的垃圾收集。由于机器可能已从 Shake 运行 的进程中完全加载,因此 GC 将占用本可用于执行有用工作的时间。如果 GC 运行 multi-threaded.

,问题会加剧