Ich habe die folgenden zwei Zeilen oben in meine eingefügt init.el
:
(setq gc-cons-threshold (eval-when-compile (* 1024 1024 1024)))
(run-with-idle-timer 2 t (lambda () (garbage-collect)))
Das bedeutet, dass Emacs nicht alle 800 KB des zugewiesenen Speichers den Müll einsammelt, sondern im Leerlauf, wenn mich das Anhalten nicht stört. (Es sammelt sich auch nach der Zuweisung von 1 GB Speicher, aber ich glaube nicht, dass das passieren wird).
Dies verbesserte meine Startzeit um ungefähr zwei Drittel. Theoretisch sollte es auch die Leistung im Allgemeinen verbessern. Gibt es Nachteile bei diesem Ansatz?
(eval-when-compile (* 1024 1024 1024))
mit most-positive-fixnum
(tun Sie dies bitte, ich bin ziemlich sicher , dass jeder, der über Ihre Frage Kopien kommt Ihr Code in ihre config) .
gc-cons-threshold
nicht höher als Sie bereit sind, tatsächlich zu einem bestimmten Zeitpunkt getroffen, da sollten Sie davon ausgehen , dass Sie wird tatsächlich diesen Wert ab und zu schlagen (denn wer weiß , wie viel Müll könnte auflaufen durch eine unerwartet begeisterte nichtleerlaufende Aufgabe). Ich sehe kein besonderes Problem beim Auslösen von gc mit einem Leerlauf-Timer, aber ich denke, die Schwelle für nicht-Leerlauf-gc so hoch einzustellen, wie dies OTT scheint, und mein Eindruck ist, dass der Wert wahrscheinlich als "höher als ich" gewählt wurde Ich brauche immer "anstatt" das Höchste, das ich verwenden möchte ".