From bbc1ec5ff3f09365e4b313189d893a8db769e080 Mon Sep 17 00:00:00 2001 From: Christian Banse Date: Sat, 20 Aug 2022 13:45:01 +0200 Subject: [PATCH] Fixed benchmark printing (#877) --- .../aisec/cpg/TranslationResult.java | 4 ++-- .../aisec/cpg/helpers/MeasurementHolder.kt | 18 ++++++++++++------ .../cpg/passes/StatisticsCollectionPass.kt | 2 +- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/cpg-core/src/main/java/de/fraunhofer/aisec/cpg/TranslationResult.java b/cpg-core/src/main/java/de/fraunhofer/aisec/cpg/TranslationResult.java index 7fb0aeebbf..87189d3014 100644 --- a/cpg-core/src/main/java/de/fraunhofer/aisec/cpg/TranslationResult.java +++ b/cpg-core/src/main/java/de/fraunhofer/aisec/cpg/TranslationResult.java @@ -61,7 +61,7 @@ public class TranslationResult extends Node implements StatisticsHolder { */ private final Set additionalNodes = new HashSet<>(); - private final List benchmarks = new ArrayList<>(); + private final Set benchmarks = new LinkedHashSet<>(); public TranslationResult(TranslationManager translationManager) { this.translationManager = translationManager; @@ -171,7 +171,7 @@ public void addBenchmark(@NotNull MeasurementHolder b) { } @NotNull - public List getBenchmarks() { + public Set getBenchmarks() { return benchmarks; } diff --git a/cpg-core/src/main/java/de/fraunhofer/aisec/cpg/helpers/MeasurementHolder.kt b/cpg-core/src/main/java/de/fraunhofer/aisec/cpg/helpers/MeasurementHolder.kt index 42524f9537..f59435b70c 100644 --- a/cpg-core/src/main/java/de/fraunhofer/aisec/cpg/helpers/MeasurementHolder.kt +++ b/cpg-core/src/main/java/de/fraunhofer/aisec/cpg/helpers/MeasurementHolder.kt @@ -55,24 +55,30 @@ class BenchmarkResults(val entries: List>) { /** Interface definition to hold different statistics about the translation process. */ interface StatisticsHolder { val translatedFiles: List - val benchmarks: List + val benchmarks: Set val config: TranslationConfiguration fun addBenchmark(b: MeasurementHolder) val benchmarkResults: BenchmarkResults get() { - return BenchmarkResults( - listOf( + val results = + mutableListOf( listOf("Translation config", config), listOf("Number of files translated", translatedFiles.size), listOf( "Translated file(s)", translatedFiles.map { relativeOrAbsolute(Path.of(it), config.topLevel) } ), - *benchmarks.map { it.benchmarkedValues }.toTypedArray() ) - ) + + benchmarks.forEach { + it.measurements.forEach { measurement -> + results += listOf(measurement.key, measurement.value) + } + } + + return BenchmarkResults(results) } } @@ -212,7 +218,7 @@ constructor( ): Any? { if (measurementKey == null || measurementValue == null) return null - measurements["Measured $measurementKey"] = measurementValue + measurements["Measurement: $measurementKey"] = measurementValue logDebugMsg("$caller $measurementKey: result is $measurementValue") // update our holder, if we have any diff --git a/cpg-core/src/main/java/de/fraunhofer/aisec/cpg/passes/StatisticsCollectionPass.kt b/cpg-core/src/main/java/de/fraunhofer/aisec/cpg/passes/StatisticsCollectionPass.kt index 7677583cd7..d994f16721 100644 --- a/cpg-core/src/main/java/de/fraunhofer/aisec/cpg/passes/StatisticsCollectionPass.kt +++ b/cpg-core/src/main/java/de/fraunhofer/aisec/cpg/passes/StatisticsCollectionPass.kt @@ -56,7 +56,7 @@ class StatisticsCollectionPass : Pass() { val nodeMeasurement = MeasurementHolder(this.javaClass, "Measuring Nodes", false, translationResult) - nodeMeasurement.addMeasurement("Graph nodes", nodes.toString()) + nodeMeasurement.addMeasurement("Total graph nodes", nodes.toString()) nodeMeasurement.addMeasurement("Problem nodes", problemNodes.toString()) }