Skip to content

Instantly share code, notes, and snippets.

@rtyley
Created December 28, 2010 00:35
Show Gist options
  • Save rtyley/756740 to your computer and use it in GitHub Desktop.
Save rtyley/756740 to your computer and use it in GitHub Desktop.
Perf test for I1d9b3a8b: IndexPack: Use stack-based recursion for delta resolution
package org.eclipse.jgit.transport;
import org.eclipse.jgit.junit.TestRepository;
import org.eclipse.jgit.lib.*;
import org.eclipse.jgit.revwalk.RevBlob;
import org.eclipse.jgit.storage.file.PackFile;
import org.eclipse.jgit.util.JGitTestUtil;
import org.eclipse.jgit.util.NB;
import org.eclipse.jgit.util.TemporaryBuffer;
import java.io.*;
import java.security.MessageDigest;
import java.util.zip.Deflater;
public class IndexPackPerformanceTest extends RepositoryTestCase {
public void testIndexingJGit() throws IOException {
File file = new File("/home/roberto/development/pack-jgit/pack-47f72d3e4b1b53f15dcce9a9a3af8c4095198668.pack");
long totalDuration=0;
System.out.println("Warming up...");
for (int warmUpRun=1;warmUpRun<=3;++warmUpRun) {
execute(file,-warmUpRun);
}
int runs = 20;
for (int run=1;run<=runs;++run) {
long duration = execute(file, run);
System.out.println(duration);
totalDuration+= duration;
}
System.out.println("Average duration = "+((float) totalDuration)/runs);
}
private long execute(File file, int run) throws IOException {
InputStream is = new FileInputStream(file);
try {
String fileNameForRun = "tmp_pack1_" + run;
IndexPack pack = new IndexPack(db, is, new File(trash, fileNameForRun));
pack.setObjectChecking(true);
long start=System.currentTimeMillis();
pack.index(NullProgressMonitor.INSTANCE);
long duration = System.currentTimeMillis() - start;
PackFile pf = new PackFile(new File(trash, fileNameForRun+".idx"), new File(trash, fileNameForRun+".pack"));
assertTrue(pf.hasObject(ObjectId.fromString("ff70931d6db1067f63a738dbaae6f0786e7d9e01")));
assertTrue(pf.hasObject(ObjectId.fromString("ffeca20f53facc6861ed2e11aa79f9ef0e1edc1f")));
assertTrue(pf.hasObject(ObjectId.fromString("4a50dec1cc9a73876efb22b22683242a87c9ded7")));
String[] goo = new String[] {"fe663a9fda1d9fc7905ac8715928ec6bed7749b4","fe6d210c11aaa4c28fe4be30c7f2029530387395","fe7cbd4ebb7eaf1449e1a8a23e00d8e3a21afe17","fe9a8c095ea980dcfa570e0d41c33d0f5893ee11","fea0d91208c7ee8da1f6a765f8caf4705d3d78aa","feae800436301b4852e0915e582995fa04dcb2d7","febcbc65a1f6a1db4248be6466dba9782cc76622","fedd7cda15c11a5b0292864ef90c7375c9a95a68","fede9489588f3275c4daaf620f91ad1b18361b76","fee0a36f0b5a7c6715346b07d83dcdc9ddf96e0a","feef66f9ad3d40bde7b342051271e0da26e23563","fef38ccac09d2da0e7fd8c7c8604d2d84bbe9c6d","fef8c6cf650af58681ddfee1398a7d81c8ba8308","fefc1145db33182d8d736f2dfeded9bd5699ca40","ff02d643998beae67a536eecb4459c8fe94759e1","ff1c6fd89d26a5267edeb240057edd2bd0a4f331","ff2fe2ccbea52b9c86ddbdaf0d78118334d64679","ff442b618826a7d05203b643bf0a20e843ee6d33","ff59ef72e39595c4e5673e26993810082a7a5916","ff70931d6db1067f63a738dbaae6f0786e7d9e01","ff8c9a6c1edb584c60c953c2d3343c61a2c71a6a","ff9e666149ad6d128b7fe1aacbb64f9e17bdc805","ffa34a710445b8bd6163fc125821af6bab3394ae","ffa73ed82299bcf3189ee5beedd6706b53233438","ffa9142d1241a0f9fd1e17fe012646090b9cdc47","ffb7710e4993dead5b110830671a35588de576d1","ffc28edc55e2758818ca1046652f16c0abea3cd9","ffe3ddd4a69ac4dc7229146217991215ab32ec9d","ffeca20f53facc6861ed2e11aa79f9ef0e1edc1f","fff76dffb694500f4173c253576be819ab622569","fffe7e093bc3d37b4c537e61b8359f5398168467"};
for (String g : goo) {
assertTrue(pf.hasObject(ObjectId.fromString(g)));
}
try {
Thread.sleep(1000L);
} catch (InterruptedException e) {}
return duration;
} finally {
is.close();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment