Ho aggiunto le seguenti due righe all'inizio del mio init.el
:
(setq gc-cons-threshold (eval-when-compile (* 1024 1024 1024)))
(run-with-idle-timer 2 t (lambda () (garbage-collect)))
Ciò significa che invece di raccogliere immondizia ogni 800kb di memoria allocata, Emacs lo fa quando è inattivo, cioè quando la pausa non mi disturba. (Si raccoglie anche dopo aver allocato 1 GB di memoria, ma non penso che accadrà).
Ciò ha migliorato il mio tempo di avvio di circa due terzi. In teoria, dovrebbe anche migliorare le prestazioni in generale. Ci sono aspetti negativi di questo approccio?
(eval-when-compile (* 1024 1024 1024))
con most-positive-fixnum
(per favore fallo, sono abbastanza sicuro che tutti coloro che incontrano la tua domanda copiano il tuo codice nella loro configurazione) .
gc-cons-threshold
più in alto di quanto si è disposti a colpire in realtà in un dato momento, perché si dovrebbe supporre che sarà in realtà ha colpito che il valore di volta in volta (dopo tutto, chi sa quanta immondizia potrebbe maturerà da un compito inattivo inaspettatamente entusiasta). Non vedo un problema particolare con l'attivazione di gc con un timer inattivo, ma penso che l'impostazione della soglia per gc non inattivo sia così alta come sembra OTT, e la mia impressione è che il valore sia stato probabilmente scelto come "più alto di me avrò mai bisogno di "piuttosto che" il massimo che sono disposto a usare ".