Browse Source

Wait for JIT optimization before measuring diff performance

On Mac OS X MyerDiffPerformanceTest was failing since during the
first few tests the JIT compiler is running in parallel slowing down
the tests. When setting the JVM option -Xbatch forcing the JIT to do
its work prior to running the code this effect can be avoided. Instead
we chose to run some tests without recording prior to the recorded
tests since relying on -X JVM parameters isn't portable across JVMs.

Use 10k * powers of 2 as sample size instead of odd numbers used
before and also improve formatting of performance readings.

Bug: 323766
Change-Id: I9a46d73f81a785f399d3cf5a90c8c0516526e048
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
stable-0.9
Matthias Sohn 14 years ago committed by Chris Aniszczyk
parent
commit
fb1c7b136f
  1. 16
      org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/MyersDiffPerformanceTest.java

16
org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/MyersDiffPerformanceTest.java

@ -100,7 +100,7 @@ public class MyersDiffPerformanceTest extends TestCase {
return ("diffing " + N / 2 + " bytes took " + runningTime return ("diffing " + N / 2 + " bytes took " + runningTime
+ " ns. N=" + N + ", D=" + D + ", time/(N*D):" + " ns. N=" + N + ", D=" + D + ", time/(N*D):"
+ fmt.format(perf1()) + ", time/(N*D^2):" + fmt + fmt.format(perf1()) + ", time/(N*D^2):" + fmt
.format(perf2())); .format(perf2()) + "\n");
} }
} }
@ -116,13 +116,21 @@ public class MyersDiffPerformanceTest extends TestCase {
public void test() { public void test() {
if (stopwatch!=null) { if (stopwatch!=null) {
// run some tests without recording to let JIT do its optimization
test(10000);
test(20000);
test(10000);
test(20000);
List<PerfData> perfData = new LinkedList<PerfData>(); List<PerfData> perfData = new LinkedList<PerfData>();
perfData.add(test(10000)); perfData.add(test(10000));
perfData.add(test(20000)); perfData.add(test(20000));
perfData.add(test(50000)); perfData.add(test(40000));
perfData.add(test(80000)); perfData.add(test(80000));
perfData.add(test(99999)); perfData.add(test(160000));
perfData.add(test(999999)); perfData.add(test(320000));
perfData.add(test(640000));
perfData.add(test(1280000));
Comparator<PerfData> c = getComparator(1); Comparator<PerfData> c = getComparator(1);
double factor = Collections.max(perfData, c).perf1() double factor = Collections.max(perfData, c).perf1()

Loading…
Cancel
Save