Git Monorepo Improved Performance
git
recently shipped some performance improvements when working with large repositories, as announced on the GitHub blog.
I tested in a large repository. With default configuration:
$ time git status
On branch master
Your branch is behind 'origin/master' by 686 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
nothing to commit, working tree clean
git status 0.40s user 8.55s system 429% cpu 2.082 total
We then configure fsmonitor
and untrackedcache
:
$ git config core.fsmonitor true
$ git config core.untrackedcache true
And run twice, to warm up the cache:
$ time git status
On branch master
Your branch is behind 'origin/master' by 686 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
nothing to commit, working tree clean
git status 0.38s user 1.43s system 159% cpu 1.141 total
$ time git status
On branch master
Your branch is behind 'origin/master' by 686 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
nothing to commit, working tree clean
git status 0.13s user 0.03s system 92% cpu 0.178 total
The improvement is quite significant. The end performance is under 200 ms, generally considered to be perceived as instantaneous by users. I’m thrilled!
Find me on:
- Bluesky at @ylan.segal.family.com
- Mastodon at @ylansegal@mastodon.sdf.org
- By email at
ylan@{this top domain}