haskell shake-build-system

haskell - ¿Por qué Shake recomienda deshabilitar la recolección de basura inactiva?



shake-build-system (1)

De forma predeterminada (sin el indicador), GHC realiza una recolección de basura (GC) si todos los subprocesos de Haskell han estado inactivos durante 0,3 segundos. Dado que un sistema de compilación está ejecutando regularmente procesos externos, es bastante común que todos los subprocesos de Haskell estén inactivos durante> 0,3 s, lo que provoca una gran cantidad de recolecciones de basura innecesarias. Dado que es probable que la máquina se cargue por completo a partir de los procesos que Shake está ejecutando, el GC tomará un tiempo de espera que de otra manera podría estar haciendo un trabajo útil. El problema se agrava si el GC ejecuta subprocesos múltiples.

En la documentación de Shake, se recomienda compilar con la -with-rtsopts=-I0 para deshabilitar la recolección de basura inactiva. ¿Por qué Shake lo recomienda?