Earlier this week, there was a post by Bozhidar Batsov that sparked a lively conversation on Reddit about the same topic.
I figured I would throw my hat in the ring and talk about why it may, or may not matter at all.
It all depends how you use Emacs
First off, I will preface this post with the obligatory "it will all depend on how you use it".
If you use emacs as a standalone replacement to neovim, as many do when first making the transition over to the emacs camp, then yes, startup time will matter drastically - to the point that many never get past it and quit out.
It "is slow" in comparison to the blazing speed of neovim's opening time in the terminal.
I even used this as a talking point in my video about leaving emacs for the TUI/CLI workflow (since recanted).
But - what I would say is that in making that "apples to apples" comparison, you are missing out on the Orange (or more complex fruit, like a Pitaya) that actually is Emacs. A Pitaya is a bad apple, but it is in a different fruit league altogether.
If, then, you take Emacs to a different use case, you start to see startup time doesn't matter at all. If Emacs is forever on your screen because you do everything in it, then start up matters very little, can be entirely automated, and also mitigated in many ways.
Why I feel that startup time doesn't matter
My workflow on my computer looks like this: I boot up, I log in, and emacs is the first thing that starts up on my screen, on workspace 1.
This takes about 4 seconds on my machine, because I probably have much optimization to do with my config, use 320 packages, and do nearly everything inside emacs. Could I get this lower? Probably, and if you are an emacs wizard, check out my literate config and help me out!
Any other session in emacs is then called via daemon with emacsclient
- and any other frames (emacs' term for new windows in the modern sense) open instantaneously. I have various functions that open emacs instances in dirvish, a floating scratch buffer for easy text entry in webpages, and also call back to that (always running) initial emacs instance for password management, org-capture, music, feeds, etc.
So, for me, even if this startup time would be excessive, it wouldn't matter so much, as I can run M-x uptime
and see that I have been running emacs just about as long as my computer has been alive.
Considerations
emacsclient
The way that most recommend running modern emacs is by starting a daemon alongside the first instance of emacs opened. This means that all future emacs frames will be opened instantaneously, as they call back to that original instance. One does not really need tmux in emacs, as emacs handles buffers and workspaces for you, meaning you don't have to worry about persistence of processes. All new frames will then be directly linked to the original instance.
emacs -nw
One can run emacs in the terminal exactly as neovim is run.
With tmux in addition to this, then startup only matters when that emacs window within tmux is started. The user will then use tmux to navigate to and from that instance and it will live forever in the terminal. Even on the server, this means that your emacs instance would be as long-lived as the tmux instance running the emacs window.
So, does it matter?
It will if you are only using emacs to edit text.
But, for me, who uses emacs as my…
- music player
- git client
- feed reader
- irc client
- file manager
- editor
- pdf and ebook reader
- note taking and calendaring system
- organizational and project management tool
- email client
- rest client
- ssh interface
- terminal emulator
- database client
- password manager
- calculator
- well… my operating system
Startup time matters not much at all.
As always, God bless, and until next time.
If you enjoyed this post, consider supporting my work by Buying me a Coffee, Checking out my book, or sending me an email to tell me what you think.