2016-01-04 4 views

risposta

19

Per impostazione predefinita (senza il flag) GHC esegue una garbage collection (GC) se tutti i thread Haskell sono rimasti inattivi per 0,3 secondi. Poiché un sistema di build esegue regolarmente processi esterni, è abbastanza comune che tutti i thread Haskell siano inattivi per> 0,3 secondi, il che causa un sacco di inutili raccolte di dati inutili. Poiché è probabile che la macchina sia completamente caricata dai processi, Shake è in esecuzione, il GC impiegherà tempo che altrimenti potrebbe svolgere un lavoro utile. Il problema viene esacerbato se il GC esegue multi-thread.

+2

Più in generale, la raccolta dati inutili è principalmente per le applicazioni * interattive * e anche per le situazioni concorrenti in cui è probabile che l'applicazione in questione ritardi molti altri thread in una raccolta principale. – dfeuer