Okay, including comments it's about 1,200 lines <https://codeberg.org/tmtvl/open-dotfiles/src/branch/main/ema...>. My user-lisp directory contains Daredevil SKK, Groovy mode, and ICL; those are all available on Microsoft GitHub.
1. Don't load too much at startup, use use-package's :defer keyword where ever it makes sense.
2. Set gc-cons-threshold to a very large value during initialisation and turn it back down again once everything's loaded. That said, most-positive-fixnum is probably overkill and I should look for a way to reliably set it to half of my PC's RAM.
A less important third way to reduce startup times would be to byte compile everything (possibly even the early-init.el, init.el, and custom.el files, although that does mean you need to recompile whenever you change anything), but that doesn't gain you much.