Refactor gc optimizations on startup
Slightly smaller default gc-cons-threshold (and default gc-cons-percentage), for less stuttering, and use most-postive-fixnum as a ceiling.
This commit is contained in:
parent
3d5c8ba279
commit
31bcac9a1e
1 changed files with 22 additions and 19 deletions
39
init.el
39
init.el
|
@ -27,35 +27,38 @@
|
|||
;;
|
||||
;;; License: MIT
|
||||
|
||||
(defvar doom-gc-cons-threshold (* 8 1024 1024)
|
||||
"The default value to use for `gc-cons-threshold'.")
|
||||
|
||||
|
||||
(defvar doom--file-name-handler-alist file-name-handler-alist)
|
||||
|
||||
(unless after-init-time
|
||||
;; A big contributor to long startup times is the garbage collector, so we
|
||||
;; up its memory threshold, temporarily and reset it later in
|
||||
;; `doom|finalize'.
|
||||
(setq gc-cons-threshold 402653184
|
||||
gc-cons-percentage 1.0
|
||||
;; consulted on every `require', `load' and various file reading
|
||||
;; A big contributor to long startup times is the garbage collector, so we up
|
||||
;; its memory threshold, temporarily and reset it later in
|
||||
;; `doom|disable-startup-optimizations'.
|
||||
(setq gc-cons-threshold most-positive-fixnum)
|
||||
;; This is consulted on every `require', `load' and various file reading
|
||||
;; functions. You get a minor speed up by nooping this.
|
||||
file-name-handler-alist nil))
|
||||
(setq file-name-handler-alist nil))
|
||||
|
||||
(defun doom|finalize ()
|
||||
(defun doom|disable-startup-optimizations ()
|
||||
"Resets garbage collection settings to reasonable defaults (if you don't do
|
||||
this, you'll get stuttering and random freezes) and resets
|
||||
`file-name-handler-alist'."
|
||||
(setq file-name-handler-alist doom--file-name-handler-alist
|
||||
gc-cons-threshold 16777216
|
||||
gc-cons-percentage 0.15))
|
||||
gc-cons-threshold doom-gc-cons-threshold)
|
||||
(makunbound 'doom--file-name-handler-alist))
|
||||
|
||||
(add-hook 'emacs-startup-hook #'doom|disable-startup-optimizations)
|
||||
(add-hook 'doom-reload-hook #'doom|disable-startup-optimizations)
|
||||
|
||||
(add-hook 'emacs-startup-hook #'doom|finalize)
|
||||
(add-hook 'doom-reload-hook #'doom|finalize)
|
||||
|
||||
;; Ensure Doom is always running out of this file's directory
|
||||
(setq user-emacs-directory (file-name-directory load-file-name)
|
||||
;; In noninteractive sessions, we hope that non-byte-compiled files will
|
||||
;; take precedence over byte-compiled ones, however, if you're getting odd
|
||||
;; recursive load errors, it may help to set this to nil.
|
||||
load-prefer-newer noninteractive)
|
||||
(setq user-emacs-directory (file-name-directory load-file-name))
|
||||
;; In noninteractive sessions, we hope that non-byte-compiled files will take
|
||||
;; precedence over byte-compiled ones, however, if you're getting odd recursive
|
||||
;; load errors, it may help to set this to nil.
|
||||
(setq load-prefer-newer noninteractive)
|
||||
|
||||
;; Let 'er rip!
|
||||
(require 'core (concat user-emacs-directory "core/core"))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue