From e1e14264ff76ea2c13f067b5d4f3bcc8d19cae4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20V=C3=A1squez?= Date: Tue, 29 Sep 2026 23:59:19 -0600 Subject: [PATCH 1/3] Step 1: Build the results site from the benchmark results script/build_results_site.rb reads the JSON that docker/collect_results.rb writes and builds _site/index.html, one page that answers: does the report each file claims is fastest win on this Ruby and build? The claim is the first report, which the lint guarantees. On old Rubies a claimed report guarded by RUBY_VERSION is missing, so the claim comes from the run that has every report, and a build without it counts as skipped. A tie is benchmark-ips' same-ish (the i/s +- error ranges overlap), so the site says tie exactly when compare! says same-ish. Over a billion i/s is flagged as suspect: the JIT most likely removed the work. Every verdict compares reports inside one run. Each build ran as its own CI job, often on another CPU model, so the page never compares i/s across Rubies or builds, and shows which CPU each build ran on. The page is plain HTML, CSS and JS with the data inline, so it also works opened from disk. The selected Ruby, build and filter live in the URL. --- .gitignore | 1 + script/build_results_site.rb | 179 ++++++++++++ script/results_site.html | 508 +++++++++++++++++++++++++++++++++++ 3 files changed, 688 insertions(+) create mode 100644 script/build_results_site.rb create mode 100644 script/results_site.html diff --git a/.gitignore b/.gitignore index dd76116..da0fa2b 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ *.bundle /Gemfile.lock /results/ +/_site/ diff --git a/script/build_results_site.rb b/script/build_results_site.rb new file mode 100644 index 0000000..268993a --- /dev/null +++ b/script/build_results_site.rb @@ -0,0 +1,179 @@ +# Builds the results site from the JSON written by docker/collect_results.rb: +# +# ruby script/build_results_site.rb [results_dir] [output_dir] +# +# results_dir defaults to results/ and output_dir to _site/. Result files are +# found at any depth, so both a local results/