Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rossmacarthur/zsh-plugin-manager-benchmark
Benchmark the speed of different Zsh plugin managers
https://github.com/rossmacarthur/zsh-plugin-manager-benchmark
Last synced: 10 days ago
JSON representation
Benchmark the speed of different Zsh plugin managers
- Host: GitHub
- URL: https://github.com/rossmacarthur/zsh-plugin-manager-benchmark
- Owner: rossmacarthur
- License: apache-2.0
- Created: 2020-08-10T14:14:30.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-04-06T18:26:35.000Z (9 months ago)
- Last Synced: 2024-12-23T21:11:46.765Z (19 days ago)
- Language: Shell
- Size: 363 KB
- Stars: 87
- Watchers: 3
- Forks: 4
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
- awesome-zsh-plugins - rossmacarthur/zsh-plugin-manager-benchmark - Contains performance benchmarks for the most popular ZSH frameworks, including both install time and load time. (Frameworks)
- fucking-awesome-zsh-plugins - rossmacarthur/zsh-plugin-manager-benchmark - Contains performance benchmarks for the most popular ZSH frameworks, including both install time and load time. (Frameworks)
README
# zsh-plugin-manager-benchmark
Benchmark different Zsh plugin managers.
## Summary
- [antibody⚠️][antibody], [antidote],
[antigen⚠️][antigen], and [sheldon] all have excellent performance
in both install time and load time.
- [zgen⚠️][zgen] and [zgenom] are on par with the above when it comes
to load time, but don't seem to do installation in parallel.
- [zinit], [zplug] and [zpm] have notably bad load time performance.## Introduction
- The following plugin managers are benchmarked:
- [antibody] v6.1.1 (⚠️ archived)
- [antidote] v1.8.6
- [antigen] v2.2.2 (⚠️ unmaintained)
- [sheldon] v0.7.3
- [zgen] master @ 0b669d2 (⚠️ unmaintained)
- [zgenom] main @ 2b55d9d
- [zinit] main @ de85908f
- [zplug] master @ ac6c2a3
- [zpm] master @ 16d74f8
- *If you would like to add a new plugin manager feel free to open an issue
and/or pull request.*- For each plugin manager the *install* time and the *load* time was tested
- *install* time is the the time taken on the first time loading `~/.zshrc`
until a prompt appears.
- *load* time is the time taken for each subsequent load of the `~/.zshrc`
until a prompt appears.- 26 of some of the most popular plugins (by GitHub stars) listed in [Awesome
Zsh Plugins](https://github.com/unixorn/awesome-zsh-plugins/) were used as as
test case. See [plugins.txt](./src/plugins.txt). The plugins were extracted
using [awesome-star-count].- [hyperfine] was used as a benchmarking tool. All benchmarks were run on a
quiet cloud VM.- No deferred loading of plugins was done. For example: many plugin managers can
be used in conjunction with [zsh-defer]. Or [zinit] could be run using `wait`
which defers the plugin loading until after a prompt.[awesome-star-count]: https://github.com/rossmacarthur/awesome-star-count
[hyperfine]: https://github.com/sharkdp/hyperfine
[zsh-defer]: https://github.com/romkatv/zsh-defer[antibody]: https://github.com/getantibody/antibody
[antidote]: https://github.com/mattmc3/antidote
[antigen]: https://github.com/zsh-users/antigen
[sheldon]: https://github.com/rossmacarthur/sheldon
[zgen]: https://github.com/tarjoilija/zgen
[zgenom]: https://github.com/jandamm/zgenom
[zinit]: https://github.com/zdharma-continuum/zinit
[zplug]: https://github.com/zplug/zplug
[zpm]: https://github.com/zpm-zsh/zpm## Results
### Install time
Lower is better. Although install time is not as important as load time it is
probably at least worth doing the install in parallel. From these results its
very clear which plugin managers install in parallel vs sequential.### Load time
Lower is better. This is the metric we care about most because its the time it
takes to open a new shell until we get a usable prompt.### Details
#### Host
- Vultr.com
- Ubuntu 22.04
- 8 vCPUs
- 16 GB RAM
- NVMe storage## Usage
To benchmark the 'install' step run the following.
```sh
./bench.sh install
```To benchmark the 'load' step run the following.
```sh
./bench.sh load
```These commands will output results to `results/`. You can then create charts
from these results using the following.First install Python dependencies.
```
pip install seaborn pandas
``````sh
./chart.py install
```or
```sh
./chart.py load
```## License
This project is distributed under the terms of both the MIT license and the
Apache License (Version 2.0).See [LICENSE-APACHE](LICENSE-APACHE) and [LICENSE-MIT](LICENSE-MIT) for details.