Bringing down my ZSH load times from ~3.1s to ~230ms

Posted by speckx 8 hours ago

Counter29Comment12OpenOriginal

Comments

Comment by tecoholic 2 hours ago

Use mise and you will be in the micro-seconds region.

https://arunmozhi.in/2024/09/06/replacing-pyenv-nvm-direnv-w...

Comment by AprilArcus 7 hours ago

How did I know it was going to be `nvm` before I clicked?

Comment by supriyo-biswas 7 hours ago

All the package managers that provide shell wrappers kinda tend to be bad at this, unless they use their own command to wrap over project specifications, like uv.

These days, I've been personally relying more on direnv to automatically activate certain shell configurations, and then nix to manage binary dependencies like node or go or php.

Comment by jdxcode 5 hours ago

mise isn't, and has the advantage that you don't need to build your own lightsaber with direnv and nix.

Comment by ricardobeat 5 hours ago

In my experience direnv is also a source of slowness. How fast is it for you?

Comment by drdexebtjl 4 hours ago

My understanding is that nix-direnv caches the environment, so after you first evaluate it, it’s pretty much instant.

I haven’t timed it, but it’s not perceptible imo.

Comment by ricardobeat 5 hours ago

Having gone through the same experience, I suggest dropping fnm as well; I don’t recall what exactly causes it, but it will eventually slow down too.

I’ve been using mise [1] to manage node versions since with zero issues.

[1] https://mise.jdx.dev

Comment by thallavajhula 5 hours ago

I haven't had any issues with `fnm` so far. It's been fast and I like how it prompts you to install a missing node version as soon as you jump into a directory with a `.nvmrc` file.

Comment by c-hendricks 3 hours ago

Mise does similar, but for a while suite of tools instead of just nodejs.

Comment by thallavajhula 3 hours ago

Will check it out, thanks!

Comment by basetensucks 5 hours ago

Adopting https://github.com/marlonrichert/zsh-snap was probably the best decision I've made around zsh in the last five years.

Comment by jauntywundrkind 2 hours ago

My mini-story: I'd switched to zimfw which does a ton of caching, precompiling. It benches very well versus other zsh frameworks. But something was still taking almost a second for me, every time. https://github.com/zimfw/zimfw

zprof helped me and the LLM profile and we found it was one plugin, which wasn't really intended specifically for zim. Fixed that! https://github.com/lipov3cz3k/zsh-uv/issues/2

Man it feels so good having shells just open so lightning fast.