Description
Onefetch's performance isn't so good to say the least. Even if we rely heavily on other tools for core functionalities (language statistics, license detection, git information), the post processing done by Onefetch adds a "significant" overhead - Moving forward, will require specific benchmarks to account for performance gain/losses - But a quick test on a relatively large repo Linux can give us a first idea:
o2sh:~/dev/linux (master) $ time onefetch --> 0m34,531s
o2sh:~/dev/linux (master) $ time tokei --> 0m11,897s
To achieve good performance some fundamental changes have to be made. Doing that will take a while because it makes it necessary to replace some core abstractions. The good news is that improving or even replacing those abstractions will have other benefits beside improved performance.
There are three primary paths for improving performance:
- Refactoring
- Caching
- Asynchronicity/Multi-threading
So aside from this overview, these changes will also be discussed independently, in dedicated issues.