git/list[1] front-page[2] threads[3] people[4] search[5] about
 

git diff too slow for a file

From
SNSungHyun Nam <goweol@gmail.com>
Date
Mar 29, 2010, 01:42 UTC
Message-ID
<4BB00573.6040005@gmail.com>
Hello,

If I run a attached script for bunzipped attached files, I get: (To reduce size, I removed many lines and bzipped.)

     $ ./mk.sh
     time diff -u x3 x4 >/dev/null 2>&1
     real	0m0.011s
     user	0m0.000s
     sys	0m0.010s
     time git diff >/dev/null 2>&1
     real	0m0.193s
     user	0m0.190s
     sys	0m0.000s
     $ git version
     git version 1.7.0.2.273.gc2413
     $ diff --version
     diff (GNU diffutils) 2.8.1
     ...

Well, though the files are ascii file, they includes a random hexa-decimal datas, so that I don't interest the diff result at all. But the real problem is 'rebasing took so long if the file was changed'. Because the git tree includes several such a file, if they changed, rebase took some miniutes for every branch. Such a branch includes a few lines of changes for a C source file, though. Now I'm waiting an hour to finish rebasing all the branches and yet a rebasing script is running... :-(

Please help! Thanks, namsh

The original file has more than 180000 lines and the result is:
     $ ./mk.sh
     time diff -u x3 x4 >/dev/null 2>&1
     real	0m0.759s
     user	0m0.740s
     sys	0m0.010s
     time git diff >/dev/null 2>&1
     real	0m44.460s
     user	0m44.390s
     sys	0m0.030s
#!/bin/bash
run_command()
{
    echo "$@"
    eval "$@"
}
run_command 'time diff -u x3 x4 >/dev/null 2>&1'
{
    rm -rf u
    mkdir u
    cd u
    cp ../x3 x
    git init
    git add .
    git ci -m x
    cp ../x4 x
} >/dev/null 2>&1

echo '' run_command 'time git diff >/dev/null 2>&1'

exit 0
Next: René Scharfe
Message 1 of 12 in “git diff too slow for a file”
  1. SungHyun NamMar 29, 2010
  2. René ScharfeApr 17, 2010
  3. Junio C HamanoApr 17, 2010
  4. René ScharfeApr 18, 2010
  5. Junio C HamanoApr 20, 2010
  6. René ScharfeApr 20, 2010
  7. Junio C HamanoApr 21, 2010
  8. René ScharfeMay 2, 2010
  9. Junio C HamanoMay 2, 2010
  10. René ScharfeMay 4, 2010
  11. Junio C HamanoMay 4, 2010
  12. SungHyun NamApr 19, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.