En relación con mi otra pregunta Haskell collections with guaranteed worst-case bounds for every single operation?, tengo curiosidad: ¿Cuánto tiempo puede causar una recolección de basura?¿Cuánto tiempo pueden ocurrir pausas en un programa Haskell debido a la recolección de basura?
¿Haskell usa algún tipo de recolección incremental de basura para que un programa se detenga solo por períodos pequeños a la vez, o puede detenerse durante varios segundos en un caso extremo?
Encontré dos documentos de SPJ sobre el tema: https://research.microsoft.com/en-us/um/people/simonpj/papers/non-stop/index.htm. Pero no encontré una referencia si estas ideas fueron realmente adoptadas por GHC (u otras implementaciones de Haskell).
Tenga en cuenta que, en teoría, existen muchas causas de retrasos imprevistos no acordados en el funcionamiento de un programa. Estos incluyen cosas como la búsqueda de memoria virtual y los cambios de contexto realizados por el sistema operativo. Estos se aplican a todos los idiomas, incluso a aquellos que no usan recolección automática de basura. En teoría, estos pueden insertar retrasos entre dos operaciones de cualquier programa, con * ninguna garantía * de una longitud máxima de retardo. En la práctica, rara vez son un problema con el que hay que lidiar en la programación "normal". Las demoras de GC son las mismas. – Ben