summaryrefslogtreecommitdiff
path: root/tool-testsuite/test/org/antlr/v4/test/tool/TestPerformance.java
diff options
context:
space:
mode:
Diffstat (limited to 'tool-testsuite/test/org/antlr/v4/test/tool/TestPerformance.java')
-rw-r--r--tool-testsuite/test/org/antlr/v4/test/tool/TestPerformance.java43
1 files changed, 29 insertions, 14 deletions
diff --git a/tool-testsuite/test/org/antlr/v4/test/tool/TestPerformance.java b/tool-testsuite/test/org/antlr/v4/test/tool/TestPerformance.java
index 70ee764..b5bd606 100644
--- a/tool-testsuite/test/org/antlr/v4/test/tool/TestPerformance.java
+++ b/tool-testsuite/test/org/antlr/v4/test/tool/TestPerformance.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2016 The ANTLR Project. All rights reserved.
+ * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD 3-clause license that
* can be found in the LICENSE.txt file in the project root.
*/
@@ -33,6 +33,7 @@ import org.antlr.v4.runtime.atn.PredictionMode;
import org.antlr.v4.runtime.dfa.DFA;
import org.antlr.v4.runtime.dfa.DFAState;
import org.antlr.v4.runtime.misc.Interval;
+import org.antlr.v4.runtime.misc.MurmurHash;
import org.antlr.v4.runtime.misc.ParseCancellationException;
import org.antlr.v4.runtime.tree.ErrorNode;
import org.antlr.v4.runtime.tree.ParseTree;
@@ -76,9 +77,8 @@ import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicIntegerArray;
import java.util.logging.Level;
import java.util.logging.Logger;
-import java.util.zip.CRC32;
-import java.util.zip.Checksum;
+import static org.antlr.v4.test.runtime.BaseRuntimeTest.writeFile;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
@@ -825,7 +825,7 @@ public class TestPerformance extends BaseJavaToolTest {
results.add(futureChecksum);
}
- Checksum checksum = new CRC32();
+ MurmurHashChecksum checksum = new MurmurHashChecksum();
int currentIndex = -1;
for (Future<FileParseResult> future : results) {
currentIndex++;
@@ -1115,14 +1115,11 @@ public class TestPerformance extends BaseJavaToolTest {
assertTrue(success);
}
- private static void updateChecksum(Checksum checksum, int value) {
- checksum.update((value) & 0xFF);
- checksum.update((value >>> 8) & 0xFF);
- checksum.update((value >>> 16) & 0xFF);
- checksum.update((value >>> 24) & 0xFF);
+ private static void updateChecksum(MurmurHashChecksum checksum, int value) {
+ checksum.update(value);
}
- private static void updateChecksum(Checksum checksum, Token token) {
+ private static void updateChecksum(MurmurHashChecksum checksum, Token token) {
if (token == null) {
checksum.update(0);
return;
@@ -1154,7 +1151,7 @@ public class TestPerformance extends BaseJavaToolTest {
@Override
public FileParseResult parseFile(CharStream input, int currentPass, int thread) {
- final Checksum checksum = new CRC32();
+ final MurmurHashChecksum checksum = new MurmurHashChecksum();
final long startTime = System.nanoTime();
assert thread >= 0 && thread < NUMBER_OF_THREADS;
@@ -1292,7 +1289,7 @@ public class TestPerformance extends BaseJavaToolTest {
throw ex;
}
- tokens.reset();
+ tokens.seek(0);
if (REUSE_PARSER && parser != null) {
parser.setInputStream(tokens);
} else {
@@ -1835,9 +1832,9 @@ public class TestPerformance extends BaseJavaToolTest {
private static final int ENTER_RULE = 3;
private static final int EXIT_RULE = 4;
- private final Checksum checksum;
+ private final MurmurHashChecksum checksum;
- public ChecksumParseTreeListener(Checksum checksum) {
+ public ChecksumParseTreeListener(MurmurHashChecksum checksum) {
this.checksum = checksum;
}
@@ -1928,6 +1925,24 @@ public class TestPerformance extends BaseJavaToolTest {
}
}
+ private static class MurmurHashChecksum {
+ private int value;
+ private int count;
+
+ public MurmurHashChecksum() {
+ this.value = MurmurHash.initialize();
+ }
+
+ public void update(int value) {
+ this.value = MurmurHash.update(this.value, value);
+ this.count++;
+ }
+
+ public int getValue() {
+ return MurmurHash.finish(value, count);
+ }
+ }
+
@Test(timeout = 20000)
public void testExponentialInclude() {
String grammarFormat =