In my last article, Speeding up Magit, I showed how removing elements from Magit’s status buffer drastically reduces the time it takes to refresh this buffer when working in a large repository (from 4 seconds to around 0.348 seconds).
In a comment on r/emacs, someone wondered if the
native-comp feature of Emacs might improve the Magit status refresh time.
This reddit thread was the first time I had heard of the
This feature lives on the
feature/native-comp branch of the Emacs repository and it compiles Elisp code into native code.
Many users have reported noticeable speed improvements using it.
The official development log and Emacs Wiki have more information about it.
I’ll provide more information about getting
native-comp working on macOS after I answer the Magit speed question.
How did it change refresh times of the Magit status buffer?
The quick answer is that running Emacs with
native-comp improved the refresh times of the Magit status buffer.
Below is a table of the various times.
1 2 3 4 5
native-comp, we’ve cut off about 0.85 seconds.
That is a pretty solid improvement.
Even still, that isn’t fast enough for how often I use Magit so I’ll be sticking with my Magit setup with many sections removed.
As a caveat, the timing with
native-comp also includes upgrading Emacs from
28.0.50 (so I could have
native-comp) and Magit from
As a result, the comparison to
full magit-status without native-comp isn’t entirely fair as multiple variables have changed.
The comparison to time with sections removed is fair as I’m still using that setup (but with native-comp) and the timing is pretty much the same.
native-comp on macOS
native-comp you need to build Emacs from source.
I’ve done this before on Linux systems but this was the first time I’ve done this on macOS.
When browsing reddit, I found the build-emacs-for-macos project which has some helpful instructions for doing this.
I followed the instructions from the readme and picked the latest known good commit from this issue (at the time I did this
I then updated my init.el based on instructions from in the
I haven’t had any issues since switching to this very new Emacs. I don’t have numbers to back this up but it does feel faster.
I’d recommend giving the
native-comp feature of Emacs a shot.
It wasn’t terribly challenging to get setup and it is nice to get a glimpse of what the future of Emacs might be.
That future is a bit snappier.