git diff is slow (--patience is fast)
- From
Marat Radchenko <marat@slonopotamus.org>
- Date
- Aug 9, 2011, 07:51 UTC
- Message-ID
- <loom.20110809T093124-847@post.gmane.org>
Warning, downloaded files are 7.5Mb each.
~ $ git --version git version 1.7.6 ~ $ mkdir tmp ~ $ cd tmp ~/tmp $ git init Initialized empty Git repository in /home/marat/tmp/.git/ ~/tmp $ wget http://slonopotamus.org/git-diff/foo 2> /dev/null ~/tmp $ git add -A ~/tmp $ git commit -am "initial" [master (root-commit) 6b68e83] initial 1 files changed, 410461 insertions(+), 0 deletions(-) create mode 100644 foo ~/tmp $ wget http://slonopotamus.org/git-diff/foo2 -O foo 2> /dev/null ~/tmp $ time git diff > /dev/null
real 0m6.513s user 0m6.490s sys 0m0.020s ~/tmp $ time git diff --patience > /dev/null
real 0m0.237s user 0m0.180s sys 0m0.050s
Could something be done to `git diff` speed? I would be happy with patience diff, but other git commands call standard diff algorithm internally without giving an option to choose patience.
gprof output against git master: http://slonopotamus.org/git-diff/gmon.txt