isakbm / gitgraph.nvim

Git Graph plugin for neovim
MIT License
307 stars 7 forks source link

long load times on big repos #18

Open kdheepak opened 2 months ago

kdheepak commented 2 months ago

I'm sure this is something you are already aware of of this but I wanted to open an issue to track it.

Running gitgraph.nvim on the git repo is slow: https://github.com/git/git/

On my M1 Pro Mac, gitgraph.nvim takes 30+ seconds to load 9999 lines (which is 5000 commits?).

For reference, vim-flog seems to load the entire repo in 3+ seconds:

https://github.com/user-attachments/assets/26db323f-db61-4204-8e5e-ec691637afa9

kdheepak commented 2 months ago

Feel free to close this issue if this is not a priority.

isakbm commented 2 months ago

Oh yeah am fully aware, but we can keep this issue open to track that, if you see the README.md, it is listed as on the roadmap and wip.

It is relatively easy to address this issue, since I have made sure to make the graphing algo local, meaning that all it needs are local inputs, it does not use any long distance lookahead.

The only reason I have not addressed this issue yet, is that it would be a great mistake to do so, ... aka premature optimization.

So that is why I am postponing this until I feel confident that the rendering logic for the connection lines between commits, is sound, and produces what we expect. So far only the positioning of commits is thoroughly tested, the rendering of the lines will hopefully soon be just as robust.

FYI ... flog and others do not properly render the graphs, nor do they seem to have proper unit tests. They rely on creating repos to test on, whereas gitgraph relies on an abstract representation of the graph itself, see tests.lua if you're interested.

When I finally do address the load time for this plugin, I'm sure it will be one of the best graph viewers out there that is terminal focused. Super exciting times ahead!!!

kdheepak commented 2 months ago

Just wanted to say thanks for all your work on this! gitgraph.nvim now loads in less than 5 seconds on the official git repo, and I'm also seeing performance improvements on other repos I've tried.