Browse Source

PackFile: Cache the packName string

Instead of computing this on every request, compute it once and
hold onto the result. This improves performance for LocalCachedPack
which does a lot of tests against the pack name string.

Change-Id: I3803745e3a5dda7b5f0faf39aae9423e2c777e7f
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
stable-0.12
Shawn O. Pearce 14 years ago
parent
commit
48fb404a3f
  1. 16
      org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackFile.java

16
org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackFile.java

@ -96,6 +96,8 @@ public class PackFile implements Iterable<PackIndex.MutableEntry> {
private final File packFile; private final File packFile;
private volatile String packName;
final int hash; final int hash;
private RandomAccessFile fd; private RandomAccessFile fd;
@ -177,11 +179,15 @@ public class PackFile implements Iterable<PackIndex.MutableEntry> {
/** @return name extracted from {@code pack-*.pack} pattern. */ /** @return name extracted from {@code pack-*.pack} pattern. */
public String getPackName() { public String getPackName() {
String name = getPackFile().getName(); String name = packName;
if (name.startsWith("pack-")) if (name == null) {
name = name.substring("pack-".length()); name = getPackFile().getName();
if (name.endsWith(".pack")) if (name.startsWith("pack-"))
name = name.substring(0, name.length() - ".pack".length()); name = name.substring("pack-".length());
if (name.endsWith(".pack"))
name = name.substring(0, name.length() - ".pack".length());
packName = name;
}
return name; return name;
} }

Loading…
Cancel
Save