zsh plugin to cache the output of a binary initialization command, intended to help lower shell startup time.
What it does
There are lots of shell wrapper tools that follow the pattern of asking you to eval a specific init command in your shell startup, for example, rbenv ask
eval "$(hub alias -s)"
While this is very convenient, the reality is there is a small amount of overhead associated with shelling out to this, and the output is almost always actually static in all of the tools I know. So why bear this cost every time you open a new tab in your shell?
Instead, after you load this plugin, you can replace that same command with:
_evalcache hub alias -s
The first time this runs, it will cache the output of the command to a file, which will be sourced in the future instead when it exists.
If you update a tool and expect ifor some reason that t's initialization might have changed, you can simply clear the cache and it will be regenerated.
It also gracefully degrades to a no-op if the tool is no longer installed.
Some informal benchmarks from my MacBook on my .zshrc:
|command||without||first run||subsequent runs||savings|
The difference isn't huge, but can be handy in shaving down shell startup time, especially if you use a bunch of these tools. Every millisecond counts!
$ZSH_EVALCACHE_DIR: cache files storage, default
$ZSH_EVALCACHE_DISABLE: set to
trueif you wish to bypass evalcache.
There is a convenience function to clear the cache called