Hi! Before I get to the issue at hand, I really want to thank everyone working on ivy for their work. swiper and counsel-rg were two of the three "killer apps" that made me switch from VS Code to Emacs in 2018 ❤️ The third one is magit.
Sorry, if this has been reported before, I didn't find any issue describing this.
I recently tried the vertico ecosystem, and while I almost immediately switched back to ivy for usability reasons, I did find its startup speed much better.
Including ivy in my config slows the emacs-init-time by about 40-50ms, depending on the computer.
This is the tabulated and tree output of benchmark-init:
I could try to load ivy lazily, but that would just transfer the wait to the time I use it for the first time, which is usually right after I open Emacs. Also, I've had troubles with lazy-loading ivy before.
Is this something that can be worked on or improved?
Not sure I do anything too exotic, but here's the config:
(use-package ivy
:straight t
;; TODO(yan): @Perf This costs about 40ms of startup.
:demand t ;; We pretty much need ivy the moment we start
:bind (("C-x b" . ivy-switch-buffer)
("C-x 4 b" . ivy-switch-buffer-other-window))
:config
(setq ivy-use-selectable-prompt t)
(ivy-mode 1))
(use-package swiper
:straight t
:bind ("C-s" . swiper))
(use-package counsel
:straight t
:bind (("M-x" . counsel-M-x)
("C-x C-f" . counsel-find-file)
("C-c s g" . counsel-git-grep)
("C-c s r" . counsel-rg)))
Hi! Before I get to the issue at hand, I really want to thank everyone working on ivy for their work.
swiper
andcounsel-rg
were two of the three "killer apps" that made me switch from VS Code to Emacs in 2018 ❤️ The third one ismagit
.Sorry, if this has been reported before, I didn't find any issue describing this.
I recently tried the vertico ecosystem, and while I almost immediately switched back to ivy for usability reasons, I did find its startup speed much better.
Including ivy in my config slows the
emacs-init-time
by about 40-50ms, depending on the computer.This is the tabulated and tree output of benchmark-init:
I could try to load ivy lazily, but that would just transfer the wait to the time I use it for the first time, which is usually right after I open Emacs. Also, I've had troubles with lazy-loading ivy before.
Is this something that can be worked on or improved?
Not sure I do anything too exotic, but here's the config: