Почему Shake рекомендует отключать неиспользуемую сборку мусора?

В документации Shake рекомендуется компилировать с использованием флага -with-rtsopts=-I0 отключить неиспользуемую сборку мусора. Почему Shake рекомендует это?

1 ответ

Решение

По умолчанию (без флага) GHC выполняет сборку мусора (GC), если все потоки Haskell простаивают в течение 0,3 секунды. Поскольку система сборки регулярно запускает внешние процессы, все потоки Haskell довольно часто простаивают в течение> 0,3 с, что приводит к большому количеству ненужных сборок мусора. Так как машина, вероятно, будет полностью загружена из процессов, запущенных Shake, GC отнимает время, которое в противном случае могло бы выполнять полезную работу. Проблема усугубляется, если ГХ работает многопоточным.

Другие вопросы по тегам