On Thu, Aug 19, 2010 at 11:38 PM, Johan Corveleyn <jcorvel_at_gmail.com> wrote:
> Feh, I just redid my apr_time_now+printf profiling with a release
> build (of trunk), instead of a debug build, and that makes a *big*
> difference. Total time of the svn_diff_diff call is now down to ~300
> ms. Still a lot slower than GNU diff (78 ms), but a lot better than
> with the debug build. That will teach me not to do performance tests
> with a debug build.
>
> Still, the challenge holds: why is svn diff ~4 times slower than GNU diff?
>
> Also, still puzzling to me: why does datasource_open take so long in
> the "modified" case? Now it takes twice as long as the while loop ...
@#{[@#!!!
/me bangs head against wall
The slowness of datasource_open was because of my antivirus (AVG free
edition). After disabling it, it's completely gone.
Running a release build, with antivirus disabled, and minimal
instrumentation brings svn diff performance (after a couple of runs)
more or less on par with GNU diff:
$ time svn diff bigfile.xml
Starting diff ... (entered svn_diff_diff in diff.c)
Diff finished in 78125 usec (78 millis)
[snip]
real 0m0.359s
user 0m0.015s
sys 0m0.031s
I guess this closes this thread ... on to more useful stuff. There is
no point in trying to optimize svn diff, so I guess blame can only be
sped up by more fundamental changes (i.e. avoiding diffs, which still
amount to ~90% of blame time on the client side).
Sorry for any wasted time.
(on the bright side, I learned quite a lot about accurately measuring
performance)
Cheers,
--
Johan
Received on 2010-08-20 13:32:07 CEST