Pijul is super slow when compared to git

To reproduce:

git clone https://github.com/openbsd/src.git --depth=1
rm -rf src/.git
pijul init
time pijul add --recursive src
6.94 real         4.05 user         2.72 sys
$ time pijul record -am 'src'
Recorded patch AwkhEjnwunkxpYUtYBCrA2VccUuw1nzHPWNGSNRhcfgmRUUGVqxUJCukbgSv229maMwh9bosCD96dnKSYo6FgBpQ
  338.71 real       243.48 user        76.10 sys
$ time pijul diff
  206.57 real       173.96 user        11.78 sys
$ time pijul status > /dev/null
  898.73 real       884.02 user        10.01 sys

In git this takes only seconds, it uses almost no memory, and the repository is still usable after the commit (e.g. see the times for diff and status).

1 Like

Thanks for spending time to benchmark both systems. It highlights how far pijul may come after it’s had a decade of investment to catch up to git. Fortunately, it has religious extremists - I am one - to support it during its inception. It’s eaten my lunch and abandoned me, and, yet, I still hope it survives to adolescence.

Are you planning, for example, to submit a patch to improve the skiplist in sanakirja ?

Are you planning, for example, to submit a patch to

Sorry no. I just couldn’t find any performance issues open and wanted to report the issue. I thought these use cases might be easy to reproduce, and easy to benchmark.

improve the skiplist in sanakirja ?

Is this was causing the orders of magnitude slowdown and making the repository unusable afterwards ? There are a lot of efficient skiplist implementations on crates.io that could be used, but since pijul performance only blow up for large projects, and since it does so in a super-linear way, this smells to me to a wrong algorithmic complexity somewhere. Maybe some operation that should be O(1) is O(N).

1 Like