]> source.dussan.org Git - jgit.git/commit
Cap delta copy instructions at 64k 98/1098/1
authorShawn O. Pearce <spearce@spearce.org>
Wed, 7 Jul 2010 15:51:04 +0000 (08:51 -0700)
committerShawn O. Pearce <spearce@spearce.org>
Wed, 7 Jul 2010 16:52:09 +0000 (09:52 -0700)
commitcd7dd8591eccd093707c98bc68743dfae4f37b80
treedca5bad2ea5ca4f2ecc544175911f9ff9328bd98
parenta215914a5638726ab4533332e97d6abe6e7e9657
Cap delta copy instructions at 64k

Although all modern delta decoders can process copy instructions
with a count as large as 0xffffff (~15.9 MiB), pack version 2 streams
are only supposed to use delta copy instructions up to 64 KiB.

Rewrite our copy instruction encode loop to use the lower 64 KiB
limit, even though modern decoders would support longer copies.

To improve encoding performance we now try to encode up to four full
copy commands in our buffer before we flush it to the stream, but
we don't try to implement full buffering here.  We are just trying
to amortize the virtual method call to the destination stream when
we have to do a large copy.

Change-Id: I9410a16e6912faa83180a9788dc05f11e33fabae
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/DeltaEncoder.java