From 8a611a387f38d92b04737f5e10824aab3ade4a16 Mon Sep 17 00:00:00 2001 From: Rafael Gonzaga Date: Wed, 28 Jun 2023 10:07:19 -0300 Subject: [PATCH] benchmark: add bar.R Signed-off-by: RafaelGSS PR-URL: https://github.com/nodejs/node/pull/47729 Reviewed-By: Yagiz Nizipli Reviewed-By: Marco Ippolito --- benchmark/bar.R | 36 +++++++++++++++++++ .../writing-and-running-benchmarks.md | 5 ++- 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 benchmark/bar.R diff --git a/benchmark/bar.R b/benchmark/bar.R new file mode 100644 index 00000000000000..007727fb94fdc1 --- /dev/null +++ b/benchmark/bar.R @@ -0,0 +1,36 @@ +#!/usr/bin/env Rscript +library(ggplot2); +library(plyr); + +# get __dirname and load ./_cli.R +args = commandArgs(trailingOnly = F); +dirname = dirname(sub("--file=", "", args[grep("--file", args)])); +source(paste0(dirname, '/_cli.R'), chdir=T); + +if (!is.null(args.options$help) || + (!is.null(args.options$plot) && args.options$plot == TRUE)) { + stop("usage: cat file.csv | Rscript bar.R + --help show this message + --plot filename save plot to filename"); +} + +plot.filename = args.options$plot; + +dat = read.csv( + file('stdin'), + colClasses=c('character', 'character', 'character', 'numeric', 'numeric') +); +dat = data.frame(dat); + +dat$nameTwoLines = paste0(dat$filename, '\n', dat$configuration); +dat$name = paste0(dat$filename, ' ', dat$configuration); + +# Create a box plot +if (!is.null(plot.filename)) { + p = ggplot(data=dat, aes(x=nameTwoLines, y=rate, fill=binary)); + p = p + geom_bar(stat="summary", position=position_dodge()); + p = p + ylab("rate of operations (higher is better)"); + p = p + xlab("benchmark"); + p = p + theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5)); + ggsave(plot.filename, p); +} diff --git a/doc/contributing/writing-and-running-benchmarks.md b/doc/contributing/writing-and-running-benchmarks.md index eca74d4ba1c9a0..2c8d5eb3ed237b 100644 --- a/doc/contributing/writing-and-running-benchmarks.md +++ b/doc/contributing/writing-and-running-benchmarks.md @@ -293,7 +293,10 @@ module, you can use the `--filter` option:_ ``` For analyzing the benchmark results, use [node-benchmark-compare][] or the R -script `benchmark/compare.R`. +scripts: + +* `benchmark/compare.R` +* `benchmark/bar.R` ```console $ node-benchmark-compare compare-pr-5134.csv # or cat compare-pr-5134.csv | Rscript benchmark/compare.R