Use strbuf for struct xdiff_emit_state's remainder
authorBrian Downing <bdowning@lavos.net>
Thu, 14 Aug 2008 05:36:51 +0000 (00:36 -0500)
committerJunio C Hamano <gitster@pobox.com>
Thu, 14 Aug 2008 06:10:23 +0000 (23:10 -0700)
commitb463776086a12c587f6d91c0347641fb6f7ddd72
treeba25e4234a81ed9d972accfe92276a407c46225b
parentc99db9d292c5f63c83ae2b441a67121d76553413
Use strbuf for struct xdiff_emit_state's remainder

Continually xreallocing and freeing the remainder member of struct
xdiff_emit_state was a noticeable performance hit.  Use a strbuf
instead.

This yields a decent performance improvement on "git blame" on certain
repositories.  For example, before this commit:

$ time git blame -M -C -C -p --incremental server.c >/dev/null
101.52user 0.17system 1:41.73elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+39561minor)pagefaults 0swaps

With this commit:

$ time git blame -M -C -C -p --incremental server.c >/dev/null
80.38user 0.30system 1:20.81elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+50979minor)pagefaults 0swaps

Signed-off-by: Brian Downing <bdowning@lavos.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
xdiff-interface.c
xdiff-interface.h