[darcs-users] optimization in HEAD: darcs diff

I'd like to share to the darcs-users list another significant change in HEAD that happened after the release of Darcs 2.8, this time an optimization. In 2010 Petr Rockai optimized the "darcs diff" command, but a few things blocked the inclusion of this piece of code into darcs. Notably, the optimization did not support old-fashioned repositories. However, since version 2.8 Darcs no longer fully support these repositories, so the new implementation of "diff" has been ported to HEAD. As in Petr's words (http://bugs.darcs.net/patch351): ----8<---- I have changed the diff code to only write those files that actually changed in the temporary locations. On my other project (less than 1000 working copy files): (with cold cache) head: darcs diff 1,09s user 0,58s system 9% cpu 16,752 total now: darcs diff 0,14s user 0,04s system 6% cpu 2,978 total (with hot cache) head: darcs diff 0,36s user 0,18s system 98% cpu 0,548 total now: darcs diff 0,06s user 0,01s system 86% cpu 0,078 total ---->8---- I've added more informal benchmarks at the end of this mail. So, if you want to build a darcs from HEAD and discover again "darcs diff", have a go at it and see how fast it has become! If you are using an external diffing tool, you can use the new flag --no-pause-for-gui (http://bugs.darcs.net/patch748) implemented by Michael Hendricks. Following the switch to this new implementation, Owen Stephens noticed that diffing directories no longer worked (http://bugs.darcs.net/issue2179) but Yuriy Vostrikov soon sent a patch fixing this issue (http://bugs.darcs.net/patch818). If you find more bugs, please let us know! Guillaume -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- Informal benchmarks on http://darcs.net/ between darcs 2.8 and current HEAD. ("time darcs diff" is run until the time ouput becomes consistent, ie, benchmarks are done on hot disk cache). Last patch in HEAD ("kill footnotes"): 2.8 real 0m0.598s user 0m0.380s sys 0m0.190s HEAD real 0m0.194s user 0m0.180s sys 0m0.010s With a patch deeper in the history ("update NEWS log with 2.5.1") 2.8 real 0m4.424s user 0m1.550s sys 0m1.300s HEAD real 0m1.342s user 0m1.250s sys 0m0.090s Even older (patch "Import bracketOnError from Workaound" from 2006): 2.8 real 1m17.442s user 0m17.650s sys 0m16.960s HEAD real 0m18.054s user 0m17.670s sys 0m0.370s