Mercurial > hg4j
diff src/org/tmatesoft/hg/internal/Patch.java @ 587:a52f4cc56f9c
Minimize vectors re-allocating when merging patches
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Fri, 26 Apr 2013 20:04:17 +0200 |
parents | ed243b668502 |
children | 7c0d2ce340b8 |
line wrap: on
line diff
--- a/src/org/tmatesoft/hg/internal/Patch.java Fri Apr 26 18:38:41 2013 +0200 +++ b/src/org/tmatesoft/hg/internal/Patch.java Fri Apr 26 20:04:17 2013 +0200 @@ -68,14 +68,18 @@ } public Patch() { - this(false); + this(16, false); + } + + public Patch(boolean normalizeOnChange) { + this(16, normalizeOnChange); } - public Patch(boolean normalizeOnChange) { + public Patch(int sizeHint, boolean normalizeOnChange) { shallNormalize = normalizeOnChange; - starts = new IntVector(); - ends = new IntVector(); - data = new ArrayList<byte[]>(); + starts = new IntVector(sizeHint, -1); + ends = new IntVector(sizeHint, -1); + data = new ArrayList<byte[]>(sizeHint); } public String toString() { @@ -227,7 +231,7 @@ * Modify this patch with subsequent patch */ public /*SHALL BE PUBLIC ONCE TESTING ENDS*/ Patch apply(Patch another) { - Patch r = new Patch(shallNormalize); + Patch r = new Patch(count() + another.count() * 2, shallNormalize); int p1TotalAppliedDelta = 0; // value to add to start and end indexes of the older patch to get their values as if // in the patched text, iow, directly comparable with respective indexes from the newer patch. int p1EntryStart = 0, p1EntryEnd = 0, p1EntryLen = 0;