Code

pack-objects: allow for early delta deflating
authorNicolas Pitre <nico@cam.org>
Fri, 2 May 2008 19:11:50 +0000 (15:11 -0400)
committerJunio C Hamano <gitster@pobox.com>
Sun, 4 May 2008 01:35:38 +0000 (18:35 -0700)
commited4a9031ea75858d6f8ec387993e8ff731e29d1a
tree8a5b4759aa596d1902481d9ee654d238dc792d56
parent30ebb40aa1acdccbebe3a04cfb198b2b6f033afc
pack-objects: allow for early delta deflating

When the delta data is cached in memory until it is written to a pack
file on disk, it is best to compress it right away in find_deltas() for
the following reasons:

  - we have to compress that data anyway;

  - this allows for caching more deltas with the same cache size limit;

  - compression is potentially threaded.

This last point is especially relevant for SMP run time.  For example,
repacking the Linux repo on a quad core processor using 4 threads with
all default settings produce the following results before this change:

real    2m27.929s
user    4m36.492s
sys     0m3.091s

And with this change applied:

real    2m13.787s
user    4m37.486s
sys     0m3.159s

So the actual execution time stayed more or less the same but the
wall clock time is shorter.

This is however not a good thing to do when generating a pack for
network transmission.  In that case, the network is most likely to
throttle the data throughput, so it is best to make find_deltas()
faster in order to start writing data ASAP since we can afford
spending more time between writes to compress the data
at that point.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-pack-objects.c