You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The LDM+dict bench matrix bakes the _dict discriminator into the level name (level_1_fast_ldm_dict, level_22_btultra2_ldm_dict in zstd/benches/support/mod.rs). That name leaks into the level field of dashboard records, causing three regressions on the Level Profile:
Fake levels in the Level dropdown — level_1_fast_ldm_dict / level_22_btultra2_ldm_dict appear as separate levels. They should not exist as levels; the dict/plain split must be conveyed by the Stage dropdown (compress-dict / decompress-dict, which already exist).
Wrong level labels — parseLevelId only matches level_<N>_<strategy>, so the _ldm / _ldm_dict variants fail to parse and render as raw IDs sorted to the bottom.
"Staircase" chart — PR ci(bench): fix dashboard dict ratio/labelling + wasm-pack binaryen flake #376 split plain/dict into distinct (level, kind) X-axis points, doubling every level column. Dict should instead be separate toggleable series (Rust/FFI compress-dict + decompress-dict) on the same real-level X-axis.
Fix
CI parser (run-benchmarks.sh): normalize level (strip the _dict bench-variant suffix) so the dashboard level axis carries only real level identity; route dict-ness entirely through stage. Memory rows derive their dict stage (compress-dict/decompress-dict) from the stripped suffix. No Rust bench changes (keeps the CI level-filter inventory intact).
Dashboard: revert the (level, kind) X-axis doubling; X-axis = real levels. Add 4 dict series (Rust/FFI x compress-dict/decompress-dict) with checkboxes, kept separate from plain via stage-kind bucketing. Teach parseLevelId the _ldm suffix. Keep history mode kind-aware; keep the aggregate chart plain-only.
Acceptance
Level dropdown shows only real levels (level_1_fast_ldm, level_22_btultra2_ldm, numeric, na), nicely labelled.
Problem
The LDM+dict bench matrix bakes the
_dictdiscriminator into the level name (level_1_fast_ldm_dict,level_22_btultra2_ldm_dictinzstd/benches/support/mod.rs). That name leaks into thelevelfield of dashboard records, causing three regressions on the Level Profile:level_1_fast_ldm_dict/level_22_btultra2_ldm_dictappear as separate levels. They should not exist as levels; the dict/plain split must be conveyed by the Stage dropdown (compress-dict/decompress-dict, which already exist).parseLevelIdonly matcheslevel_<N>_<strategy>, so the_ldm/_ldm_dictvariants fail to parse and render as raw IDs sorted to the bottom.(level, kind)X-axis points, doubling every level column. Dict should instead be separate toggleable series (Rust/FFI compress-dict + decompress-dict) on the same real-level X-axis.Fix
run-benchmarks.sh): normalizelevel(strip the_dictbench-variant suffix) so the dashboardlevelaxis carries only real level identity; route dict-ness entirely throughstage. Memory rows derive their dictstage(compress-dict/decompress-dict) from the stripped suffix. No Rust bench changes (keeps the CI level-filter inventory intact).(level, kind)X-axis doubling; X-axis = real levels. Add 4 dict series (Rust/FFI x compress-dict/decompress-dict) with checkboxes, kept separate from plain via stage-kind bucketing. TeachparseLevelIdthe_ldmsuffix. Keep history mode kind-aware; keep the aggregate chart plain-only.Acceptance
level_1_fast_ldm,level_22_btultra2_ldm, numeric,na), nicely labelled.Estimate: 3h