Добавлены JMH-бенчмарки

This commit is contained in:
Victor 2016-07-01 18:56:16 +03:00
parent ee57957140
commit 4df44cadea
3 changed files with 100 additions and 1 deletions

View File

@ -50,7 +50,8 @@ javac.test.classpath=\
${javac.classpath}:\ ${javac.classpath}:\
${build.classes.dir}:\ ${build.classes.dir}:\
${libs.junit_4.classpath}:\ ${libs.junit_4.classpath}:\
${libs.hamcrest.classpath} ${libs.hamcrest.classpath}:\
${libs.JMH_1.12.classpath}
javac.test.processorpath=\ javac.test.processorpath=\
${javac.test.classpath} ${javac.test.classpath}
javadoc.additionalparam= javadoc.additionalparam=

View File

@ -0,0 +1,48 @@
package com.annimon.ownlang.parser;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import org.junit.Ignore;
import org.junit.Test;
import org.openjdk.jmh.annotations.*;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.RunnerException;
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MICROSECONDS)
@State(Scope.Benchmark)
@Ignore
public class LexerBenchmarkTest {
@Param({"1000"})
private int iterations;
private String input;
@Setup(Level.Trial)
public void initializeTrial() throws IOException {
input = SourceLoader.readSource("program.own");
}
@Benchmark
public void lexerBenchmark() {
for (int i = 0; i < iterations; i++) {
Lexer.tokenize(input);
}
}
@Test
public void executeBenchmark() throws RunnerException {
Options opt = new OptionsBuilder()
.include(LexerBenchmarkTest.class.getSimpleName())
.warmupIterations(3)
.measurementIterations(5)
.threads(1)
.forks(1)
.build();
new Runner(opt).run();
}
}

View File

@ -0,0 +1,50 @@
package com.annimon.ownlang.parser;
import java.io.IOException;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.junit.Ignore;
import org.junit.Test;
import org.openjdk.jmh.annotations.*;
import org.openjdk.jmh.infra.Blackhole;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.RunnerException;
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MICROSECONDS)
@State(Scope.Benchmark)
@Ignore
public class ParserBenchmarkTest {
@Param({"1000"})
private int iterations;
private List<Token> input;
@Setup(Level.Trial)
public void initializeTrial() throws IOException {
input = Lexer.tokenize(SourceLoader.readSource("program.own"));
}
@Benchmark
public void parserBenchmark(Blackhole bh) {
for (int i = 0; i < iterations; i++) {
bh.consume(Parser.parse(input));
}
}
@Test
public void executeBenchmark() throws RunnerException {
Options opt = new OptionsBuilder()
.include(ParserBenchmarkTest.class.getSimpleName())
.warmupIterations(3)
.measurementIterations(5)
.threads(1)
.forks(1)
.build();
new Runner(opt).run();
}
}