mirror of
https://github.com/enso-org/enso.git
synced 2024-12-22 18:38:11 +03:00
Fold output of each benchmark (#10914)
This commit is contained in:
parent
a86e37b36f
commit
89c5b31144
@ -469,7 +469,21 @@ pub fn spawn_log_processor(
|
|||||||
match String::from_utf8(line_bytes) {
|
match String::from_utf8(line_bytes) {
|
||||||
Ok(line) => {
|
Ok(line) => {
|
||||||
let line = line.trim_end_matches('\r');
|
let line = line.trim_end_matches('\r');
|
||||||
info!("{prefix} {line}");
|
let mut command = false;
|
||||||
|
if let Some(command_at) = line.find("::") {
|
||||||
|
if let Some(group_at) = line.find("group") {
|
||||||
|
// we support: `::group` and `::endgroup` right now
|
||||||
|
if command_at < group_at && group_at < command_at + 10 {
|
||||||
|
let line_without_prefix = &line[command_at..];
|
||||||
|
// intentionally using println to avoid info!'s prefix
|
||||||
|
println!("{line_without_prefix}");
|
||||||
|
command = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !command {
|
||||||
|
info!("{prefix} {line}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
error!("{prefix} Failed to decode a line from output: {e}");
|
error!("{prefix} Failed to decode a line from output: {e}");
|
||||||
|
@ -5,11 +5,19 @@ import java.io.File;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import org.openjdk.jmh.infra.BenchmarkParams;
|
||||||
|
import org.openjdk.jmh.infra.IterationParams;
|
||||||
|
import org.openjdk.jmh.results.BenchmarkResult;
|
||||||
|
import org.openjdk.jmh.results.IterationResult;
|
||||||
import org.openjdk.jmh.results.RunResult;
|
import org.openjdk.jmh.results.RunResult;
|
||||||
|
import org.openjdk.jmh.runner.Defaults;
|
||||||
import org.openjdk.jmh.runner.Runner;
|
import org.openjdk.jmh.runner.Runner;
|
||||||
import org.openjdk.jmh.runner.RunnerException;
|
import org.openjdk.jmh.runner.RunnerException;
|
||||||
|
import org.openjdk.jmh.runner.format.OutputFormat;
|
||||||
|
import org.openjdk.jmh.runner.format.OutputFormatFactory;
|
||||||
import org.openjdk.jmh.runner.options.CommandLineOptionException;
|
import org.openjdk.jmh.runner.options.CommandLineOptionException;
|
||||||
import org.openjdk.jmh.runner.options.CommandLineOptions;
|
import org.openjdk.jmh.runner.options.CommandLineOptions;
|
||||||
|
import org.openjdk.jmh.runner.options.Options;
|
||||||
import org.openjdk.jmh.runner.options.OptionsBuilder;
|
import org.openjdk.jmh.runner.options.OptionsBuilder;
|
||||||
import org.openjdk.jmh.runner.options.TimeValue;
|
import org.openjdk.jmh.runner.options.TimeValue;
|
||||||
|
|
||||||
@ -18,6 +26,9 @@ public class BenchmarksRunner {
|
|||||||
public static final File REPORT_FILE = new File("./bench-report.xml");
|
public static final File REPORT_FILE = new File("./bench-report.xml");
|
||||||
|
|
||||||
public static void run(String[] args) throws RunnerException {
|
public static void run(String[] args) throws RunnerException {
|
||||||
|
if (args.length == 0) {
|
||||||
|
args = new String[] {"--jvmArgs=-Dbench.all=true"};
|
||||||
|
}
|
||||||
CommandLineOptions cmdOpts = null;
|
CommandLineOptions cmdOpts = null;
|
||||||
try {
|
try {
|
||||||
cmdOpts = new CommandLineOptions(args);
|
cmdOpts = new CommandLineOptions(args);
|
||||||
@ -31,7 +42,7 @@ public class BenchmarksRunner {
|
|||||||
// Do not report results from `compileOnly` mode
|
// Do not report results from `compileOnly` mode
|
||||||
runCompileOnly(cmdOpts.getIncludes());
|
runCompileOnly(cmdOpts.getIncludes());
|
||||||
} else {
|
} else {
|
||||||
Runner jmhRunner = new Runner(cmdOpts);
|
var jmhRunner = createRunner(cmdOpts);
|
||||||
|
|
||||||
if (cmdOpts.shouldHelp()) {
|
if (cmdOpts.shouldHelp()) {
|
||||||
System.err.println("Enso benchmark runner: A modified JMH runner for Enso benchmarks.");
|
System.err.println("Enso benchmark runner: A modified JMH runner for Enso benchmarks.");
|
||||||
@ -82,7 +93,7 @@ public class BenchmarksRunner {
|
|||||||
.forks(0);
|
.forks(0);
|
||||||
includes.forEach(optsBuilder::include);
|
includes.forEach(optsBuilder::include);
|
||||||
var opts = optsBuilder.build();
|
var opts = optsBuilder.build();
|
||||||
var runner = new Runner(opts);
|
var runner = createRunner(opts);
|
||||||
try {
|
try {
|
||||||
runner.run();
|
runner.run();
|
||||||
System.out.println(
|
System.out.println(
|
||||||
@ -107,4 +118,84 @@ public class BenchmarksRunner {
|
|||||||
Report.writeToFile(report, REPORT_FILE);
|
Report.writeToFile(report, REPORT_FILE);
|
||||||
return benchItem;
|
return benchItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static Runner createRunner(Options cmdOpts) {
|
||||||
|
var output =
|
||||||
|
OutputFormatFactory.createFormatInstance(
|
||||||
|
System.out, cmdOpts.verbosity().orElse(Defaults.VERBOSITY));
|
||||||
|
Runner jmhRunner = new Runner(cmdOpts, new GitHubActionsFormat(output));
|
||||||
|
return jmhRunner;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final class GitHubActionsFormat implements OutputFormat {
|
||||||
|
private final OutputFormat output;
|
||||||
|
|
||||||
|
GitHubActionsFormat(OutputFormat output) {
|
||||||
|
this.output = output;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void iteration(BenchmarkParams benchParams, IterationParams params, int iteration) {
|
||||||
|
output.iteration(benchParams, params, iteration);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void iterationResult(
|
||||||
|
BenchmarkParams benchParams, IterationParams params, int iteration, IterationResult data) {
|
||||||
|
output.iterationResult(benchParams, params, iteration, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void startBenchmark(BenchmarkParams benchParams) {
|
||||||
|
output.println("::group::" + benchParams.getBenchmark());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void endBenchmark(BenchmarkResult result) {
|
||||||
|
output.println("::endgroup::");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void startRun() {
|
||||||
|
output.startRun();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void endRun(Collection<RunResult> result) {
|
||||||
|
output.endRun(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void print(String s) {
|
||||||
|
output.print(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void println(String s) {
|
||||||
|
output.println(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void flush() {
|
||||||
|
output.flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void close() {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void verbosePrintln(String s) {
|
||||||
|
output.verbosePrintln(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void write(int b) {
|
||||||
|
output.write(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void write(byte[] b) throws IOException {
|
||||||
|
output.write(b);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -347,7 +347,19 @@ public class BenchProcessor extends AbstractProcessor {
|
|||||||
@TearDown
|
@TearDown
|
||||||
public void checkNoTruffleCompilation(BenchmarkParams params) {
|
public void checkNoTruffleCompilation(BenchmarkParams params) {
|
||||||
if (compilationMessagesFound) {
|
if (compilationMessagesFound) {
|
||||||
System.err.println(compilationLog.toString());
|
var limit = Boolean.getBoolean("bench.all") ? 10 : Integer.MAX_VALUE;
|
||||||
|
for (var l : compilationLog.toString().split("\\n")) {
|
||||||
|
var pipe = l.indexOf('|');
|
||||||
|
if (pipe > 0) {
|
||||||
|
l = l.substring(0, pipe);
|
||||||
|
}
|
||||||
|
System.out.println(l);
|
||||||
|
if (limit-- <= 0) {
|
||||||
|
System.out.println("... to see more use:");
|
||||||
|
System.out.println("benchOnly " + params.getBenchmark());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user