mirror of
https://github.com/aNNiMON/Own-Programming-Language-Tutorial.git
synced 2024-09-20 16:54:21 +03:00
51 lines
1.3 KiB
Java
51 lines
1.3 KiB
Java
|
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();
|
||
|
}
|
||
|
}
|