import java.nio.file.Files import java.nio.file.Paths import kotlin.io.path.name fun main(args: Array) { val benchmarksDir = "/home/nkey/pg/pg_bench" val avgBenchmarksDir = "/home/nkey/pg/pg_bench/avg" val versionToRuns: MutableMap>> = mutableMapOf() for (file in Files.list(Paths.get(benchmarksDir)).filter { it.fileName.name.startsWith("version") }) { if (!file.fileName.name.endsWith("_raw")) continue; val size = if (file.fileName.name.contains("vanilla")) ("vanilla") else file.fileName.name.replace("version_size_", "") .substringBefore("_") val results = Files.readAllLines(file).map { it.toLong() } versionToRuns.computeIfAbsent(size) { mutableListOf() }.add(results) } for (sizeRuns in versionToRuns) { val version = sizeRuns.key val sum: MutableList = mutableListOf() for (i in 1..180) { sum.add(0) } for (run in sizeRuns.value) { var i = 0 for (sec in run) { sum[i++] += sec } } val avg = sum.map { it / sizeRuns.value.size }.map { it.toString() } Files.write(Paths.get(avgBenchmarksDir, "${version}_avg"), avg) } }