From 95fa9b20e2c647757a6a16e82e99dd99b7647b3c Mon Sep 17 00:00:00 2001 From: Serpent7776 Date: Thu, 2 May 2024 13:58:32 +0200 Subject: [PATCH] Add box plot drawing script --- extras/boxplot_xml.R | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 extras/boxplot_xml.R diff --git a/extras/boxplot_xml.R b/extras/boxplot_xml.R new file mode 100644 index 00000000..01651887 --- /dev/null +++ b/extras/boxplot_xml.R @@ -0,0 +1,34 @@ +library(XML) +library(ggplot2) + +args <- commandArgs(trailingOnly = TRUE) +data <- xmlParse(args[1]) + +for (test_case in data["//TestCase"]) { + test_case_name <- xpathSApply(test_case, "./@name", paste) + results <- xpathSApply(test_case, ".//BenchmarkResults") + samples <- xpathSApply(test_case, ".//sample", xmlValue) + counts <- xpathSApply(test_case, ".//BenchmarkResults", function(r) { + xmlGetAttr(r, "samples", default = 0, converter = as.integer) + }) + names <- xpathSApply(test_case, ".//BenchmarkResults/@name", paste) + + if (length(names) == 0 || sum(counts) == 0) next + names <- rep(names, counts) + + df <- data.frame( + methods = names, + samples = as.numeric(samples) + ) + + p <- ggplot(df, aes(x = methods, y = samples, fill = methods)) + + geom_boxplot(size = 0.5, staplewidth = 0.5) + + theme(axis.text.x = element_text(angle = -45, vjust = 1, hjust = 0)) + + labs(x = "Benchmark", y = "Time [ns]", title = test_case_name, fill = "Benchmark") + + scale_y_continuous(limits = c(0, NA)) + print(p) + test_case_name |> + gsub(pattern = "\\s", replacement = "_") |> + paste(".png", sep = "") |> + ggsave() +}