diff --git a/java/server/src/main/java/org/softwareheritage/graph/benchmark/Benchmark.java b/java/server/src/main/java/org/softwareheritage/graph/benchmark/Benchmark.java --- a/java/server/src/main/java/org/softwareheritage/graph/benchmark/Benchmark.java +++ b/java/server/src/main/java/org/softwareheritage/graph/benchmark/Benchmark.java @@ -47,6 +47,8 @@ /** Command line arguments */ public Args args; + /** CSV separator for log file */ + final String CSV_SEPARATOR = ";"; /** * Constructor. @@ -86,6 +88,22 @@ } /** + * Creates CSV file for log output. + */ + public void createCSVLogFile() throws IOException { + try (Writer csvLog = new BufferedWriter(new FileWriter(args.logFile))) { + StringJoiner csvHeader = new StringJoiner(CSV_SEPARATOR); + csvHeader.add("use case name") + .add("SWH PID") + .add("number of edges accessed") + .add("traversal timing") + .add("pid2node timing") + .add("node2pid timing"); + csvLog.write(csvHeader.toString() + "\n"); + } + } + + /** * Times a specific endpoint and outputs individual datapoints along with aggregated statistics. * * @param useCaseName benchmark use-case name @@ -102,17 +120,8 @@ ArrayList timings = new ArrayList<>(); ArrayList timingsNormalized = new ArrayList<>(); - final String CSV_SEPARATOR = ";"; - try (Writer csvLog = new BufferedWriter(new FileWriter(args.logFile))) { - StringJoiner csvHeader = new StringJoiner(CSV_SEPARATOR); - csvHeader.add("use case name") - .add("SWH PID") - .add("number of edges accessed") - .add("traversal timing") - .add("pid2node timing") - .add("node2pid timing"); - csvLog.write(csvHeader.toString() + "\n"); - + final boolean append = true; + try (Writer csvLog = new BufferedWriter(new FileWriter(args.logFile, append))) { for (long nodeId : nodeIds) { SwhPID swhPID = graph.getSwhPID(nodeId); diff --git a/java/server/src/main/java/org/softwareheritage/graph/benchmark/Browsing.java b/java/server/src/main/java/org/softwareheritage/graph/benchmark/Browsing.java --- a/java/server/src/main/java/org/softwareheritage/graph/benchmark/Browsing.java +++ b/java/server/src/main/java/org/softwareheritage/graph/benchmark/Browsing.java @@ -40,6 +40,7 @@ Endpoint revEndpoint = new Endpoint(graph, "forward", "rev:rev"); System.out.println("Used " + bench.args.nbNodes + " random nodes (results are in seconds):"); + bench.createCSVLogFile(); bench.timeEndpoint("ls", graph, dirNodeIds, dirEndpoint::neighbors); bench.timeEndpoint("ls -R", graph, dirNodeIds, dirEndpoint::visitPaths); bench.timeEndpoint("git log", graph, revNodeIds, revEndpoint::visitNodes); diff --git a/java/server/src/main/java/org/softwareheritage/graph/benchmark/Provenance.java b/java/server/src/main/java/org/softwareheritage/graph/benchmark/Provenance.java --- a/java/server/src/main/java/org/softwareheritage/graph/benchmark/Provenance.java +++ b/java/server/src/main/java/org/softwareheritage/graph/benchmark/Provenance.java @@ -36,6 +36,7 @@ Endpoint originProvenanceEndpoint = new Endpoint(graph, "backward", "*"); System.out.println("Used " + bench.args.nbNodes + " random nodes (results are in seconds):"); + bench.createCSVLogFile(); bench.timeEndpoint( "commit provenance (dfs)", graph, nodeIds, commitProvenanceEndpoint::walk, "rev", "dfs"); diff --git a/java/server/src/main/java/org/softwareheritage/graph/benchmark/Vault.java b/java/server/src/main/java/org/softwareheritage/graph/benchmark/Vault.java --- a/java/server/src/main/java/org/softwareheritage/graph/benchmark/Vault.java +++ b/java/server/src/main/java/org/softwareheritage/graph/benchmark/Vault.java @@ -35,6 +35,7 @@ Endpoint endpoint = new Endpoint(graph, "forward", "*"); System.out.println("Used " + bench.args.nbNodes + " random nodes (results are in seconds):"); + bench.createCSVLogFile(); bench.timeEndpoint("git bundle", graph, nodeIds, endpoint::visitNodes); } }