Browse Source

PackWriter: Don't include edges in progress meter

When compressing objects, don't include the edges in the progress
meter.  These cost almost no CPU time as they are simply pushed into
and popped out of the delta search window.

Change-Id: I7ea19f0263e463c65da34a7e92718c6db1d4a131
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
stable-0.11
Shawn O. Pearce 14 years ago committed by Chris Aniszczyk
parent
commit
37a10e3006
  1. 3
      org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/DeltaWindow.java
  2. 8
      org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java

3
org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/DeltaWindow.java

@ -129,8 +129,6 @@ class DeltaWindow {
int cnt) throws IOException {
try {
for (int end = off + cnt; off < end; off++) {
monitor.update(1);
res = window[resSlot];
if (0 < maxMemory) {
clear(res);
@ -152,6 +150,7 @@ class DeltaWindow {
} else {
// Search for a delta for the current window slot.
//
monitor.update(1);
search();
}
}

8
org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java

@ -539,6 +539,7 @@ public class PackWriter {
cnt = findObjectsNeedingDelta(list, cnt, Constants.OBJ_BLOB);
if (cnt == 0)
return;
int nonEdgeCnt = cnt;
// Queue up any edge objects that we might delta against. We won't
// be sending these as we assume the other side has them, but we need
@ -636,12 +637,15 @@ public class PackWriter {
// Above we stored the objects we cannot delta onto the end.
// Remove them from the list so we don't waste time on them.
while (0 < cnt && list[cnt - 1].isDoNotDelta())
while (0 < cnt && list[cnt - 1].isDoNotDelta()) {
if (!list[cnt - 1].isEdge())
nonEdgeCnt--;
cnt--;
}
if (cnt == 0)
return;
monitor.beginTask(JGitText.get().compressingObjects, cnt);
monitor.beginTask(JGitText.get().compressingObjects, nonEdgeCnt);
searchForDeltas(monitor, list, cnt);
monitor.endTask();
}

Loading…
Cancel
Save