in tooling/perf-regression/src/main/java/org/apache/camel/quarkus/performance/regression/PerformanceRegressionReport.java [48:95]
public String printAll() {
Table table = Table.create("Camel Quarkus Throughput Performance Increase Compared to Previous Version");
StringColumn cqVersionsColumn = StringColumn.create("Camel Quarkus version");
StringColumn durationsColumn = StringColumn.create("Duration");
StringColumn jvmMeasuresColumn = StringColumn.create("JVM req/s [%increase]");
StringColumn nativeMeasuresColumn = StringColumn.create("Native req/s [%increase]");
StringColumn statusColumn = StringColumn.create("Status");
double previousJvmMeasure = Double.POSITIVE_INFINITY;
double previousNativeMeasure = Double.POSITIVE_INFINITY;
for (Map.Entry<ComparableVersion, Map<String, Double>> measurePerVersion : measuresPerVersion.entrySet()) {
cqVersionsColumn.append(measurePerVersion.getKey().toString());
durationsColumn.append(duration);
boolean regressionDetected = false;
double jvmMeasure = measurePerVersion.getValue().get("JVM");
double percentIncreaseJvm = (previousJvmMeasure == Double.POSITIVE_INFINITY) ? 0.0
: ((jvmMeasure / previousJvmMeasure) - 1.0) * 100.0;
jvmMeasuresColumn.append(String.format(Locale.US, "%.2f req/s [%+.2f%%]", jvmMeasure, percentIncreaseJvm));
previousJvmMeasure = jvmMeasure;
if (percentIncreaseJvm <= -5.00) {
regressionDetected = true;
}
if (measurePerVersion.getValue().containsKey("Native")) {
double nativeMeasure = measurePerVersion.getValue().get("Native");
double percentIncreaseNative = (previousNativeMeasure == Double.POSITIVE_INFINITY) ? 0.0
: ((nativeMeasure / previousNativeMeasure) - 1.0) * 100.0;
nativeMeasuresColumn
.append(String.format(Locale.US, "%.2f req/s [%+.2f%%]", nativeMeasure, percentIncreaseNative));
previousNativeMeasure = nativeMeasure;
if (percentIncreaseNative <= -5.00) {
regressionDetected = true;
}
}
statusColumn.append(regressionDetected ? "Potential performance regression" : "OK");
}
if (!nativeMeasuresColumn.isEmpty()) {
table.addColumns(cqVersionsColumn, durationsColumn, jvmMeasuresColumn, nativeMeasuresColumn, statusColumn);
} else {
table.addColumns(cqVersionsColumn, durationsColumn, jvmMeasuresColumn, statusColumn);
}
return table.printAll();
}