J'ai ajouté les deux lignes suivantes en haut de mon init.el
:
(setq gc-cons-threshold (eval-when-compile (* 1024 1024 1024)))
(run-with-idle-timer 2 t (lambda () (garbage-collect)))
Cela signifie qu'au lieu de collecter les ordures tous les 800 Ko de mémoire allouée, Emacs le fait lorsqu'il est inactif, c'est-à-dire lorsque la pause ne me dérange pas. (Il collecte également après l'allocation de 1 Go de mémoire, mais je ne pense pas que cela se produira).
Cela a amélioré mon temps de démarrage d'environ deux tiers. En théorie, cela devrait également améliorer les performances en général. Y a-t-il des inconvénients à cette approche?
(eval-when-compile (* 1024 1024 1024))
par most-positive-fixnum
(veuillez le faire, je suis sûr que tous ceux qui rencontrent votre question copient votre code dans leur configuration) .
gc-cons-threshold
plus haut que vous êtes prêt à frapper effectivement à un moment donné, parce que vous devez supposer que vous allez réellement atteindre cette valeur de temps en temps (après tout, qui sait peut - être accumulé d' ordures par une tâche non inactive enthousiaste inattendue). Je ne vois pas de problème particulier avec le déclenchement de gc avec une minuterie inactive, mais je pense que fixer le seuil pour gc non-inactif aussi haut que cela semble OTT, et mon impression est que la valeur a probablement été choisie comme étant "plus élevée que je aurai jamais besoin de "plutôt que" du plus haut que je suis prêt à utiliser ".