Un allocateur de dalle ou quelque chose de similaire est-il utilisé pour allouer de la mémoire aux structures de thunk dans GHC? Ou, utilise-t-il quelque chose de naïf comme malloc
en C?L'allocateur de dalle est-il utilisé pour allouer de la mémoire aux thunk dans GHC?
Je suppose que nombre de thunk sont alloués dans un court laps de temps dans les langages de programmation fonctionnels paresseux, en particulier lorsque plusieurs threads sont en cours d'exécution sur eux. Ou, les allocations ne se produisent-elles pas si souvent? J'ai essayé de chercher le code pour cela dans the GHC repository mais je n'en ai trouvé aucun.
[Article pertinent sur le collecteur d'ordures de GHC] (http://simonmar.github.io/bib/papers/parallel-gc.pdf). – Alec
L'allocation de mémoire pour les environnements collectés est souvent radicalement différente de ce que vous feriez en C. La raison pour laquelle 'malloc' est si cher est que les objets peuvent être libérés dans n'importe quel ordre mais ne peuvent pas être déplacés. Cependant, il est courant pour les éboueurs de déplacer des objets, ce qui signifie que vous pouvez rendre l'allocateur lui-même beaucoup plus simple. –