From 70ab1f6f1e5b64264cdae690baad8c0e2bf96dd3 Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Fri, 4 Sep 2026 18:01:52 +0000 Subject: [PATCH] Fix the missing first bar in the summary chart The baseline for the load time and data size components of the combined metric was computed over entries passing a strictly-greater threshold, while the components themselves are applied to entries passing a greater-or-equal one: const min_load_time = Math.min(... .filter(x => x && x > 5)); ... Math.log(elem.load_time >= 5 ? (elem.load_time / min_load_time) : 1) When no selected entry has a load time above 5s, `Math.min` of an empty list is `Infinity`, so an entry with a load time of exactly 5s got `5 / Infinity == 0`, and the whole combined score collapsed to `exp(-Infinity) == 0`. It then sorted to the top and rendered a bar of zero width. Reproducer: CedarDB (Parquet) and ClickHouse (Parquet) selected together on c6a.4xlarge / c7a.metal-48xl / c8g.metal-48xl with the combined metric - CedarDB (Parquet) on c6a.4xlarge loads in exactly 5s. With this change it scores x2.44 and sorts last, matching its cold and hot ratios of 2.24 and 3.37. Make the thresholds match the conditions that consume them. The load time row of the detailed table already used `>= 5` for the same purpose. Co-Authored-By: Claude Opus 5 (1M context) --- index.html | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index e8361c254f..2546b0f7d1 100644 --- a/index.html +++ b/index.html @@ -964,8 +964,11 @@

Detailed Comparison

[...Array(3).keys()].map(run_num => Math.min(...filtered_data.filter(elem => !elem.fake).map(elem => elem.result[query_num]?.[run_num]).filter(x => x != null)))); - const min_load_time = Math.min(...filtered_data.map(elem => elem.load_time).filter(x => x && x > 5)); - const min_data_size = Math.min(...filtered_data.map(elem => elem.data_size).filter(x => x && x > 1e9)); + /// The thresholds have to match the conditions below, where these minimums are used as the baselines: + /// otherwise a system sitting exactly on the boundary is compared against a baseline of Infinity, + /// which makes its ratio zero, and the bar collapses to nothing. + const min_load_time = Math.min(...filtered_data.map(elem => elem.load_time).filter(x => x >= 5)); + const min_data_size = Math.min(...filtered_data.map(elem => elem.data_size).filter(x => x >= 1e9)); let summaries; if (selectors.metric == 'load') {