From e3f19a5298acb67848966f6ba192f3a88abdce72 Mon Sep 17 00:00:00 2001 From: Stephen Lawson Date: Wed, 22 Nov 2017 12:41:05 +0000 Subject: Performance improvement on writing a large index The index header consists of a 4-byte version number. The current supported version numbers are 2 and 3. The code checks if any entries are extended. If it finds any entries that are extended it picks version '3', otherwise it chooses version '2'. DirCache.java -Changed the 'extended' check to exit early when any entry is considered 'extended' in the index. (Of course, I maybe missing a bitwise optimization that is made in the Java bytecode.) Change-Id: If70db9454befe683319b974ebd3774060be9445d Signed-off-by: Stephen Lawson --- org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCache.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCache.java b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCache.java index ce52fedcb3..e00d120735 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCache.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCache.java @@ -655,8 +655,12 @@ public class DirCache { final DigestOutputStream dos = new DigestOutputStream(os, foot); boolean extended = false; - for (int i = 0; i < entryCnt; i++) - extended |= sortedEntries[i].isExtended(); + for (int i = 0; i < entryCnt; i++) { + if (sortedEntries[i].isExtended()) { + extended = true; + break; + } + } // Write the header. // -- cgit v1.2.3