vizb merge
Combine multiple benchmark JSON files into a single dataset. Supports tag-based deep merging for release tracking.
vizb merge [files/directories...] [flags]Input Types
Section titled “Input Types”- JSON files: one or more
.jsonfiles generated byvizb -o file.json - Directories: scans for all
.jsonfiles in the directory - Mix: combine files and directories in a single command
# Specific filesvizb merge run1.json run2.json -o merged.json
# Entire directoryvizb merge ./results/ -o all.json
# Mix files and directoriesvizb merge ./old_results/ latest.json -o comparison.json| Flag | Short | Default | Description |
|---|---|---|---|
--output | -o | (stdout) | Output file path (always JSON) |
--tag-axis | -A | n | Where to inject tag: n (name), x (xAxis), y (yAxis) |
Outer Merge (Untagged)
Section titled “Outer Merge (Untagged)”When merging benchmarks without tags, vizb concatenates all entries. Same-name benchmarks are deduplicated — first occurrence wins.
vizb bench-a.txt -o a.json -n "Sort"vizb bench-b.txt -o b.json -n "Hash"vizb merge a.json b.json -o combined.jsonResult: both benchmark groups in one file.
Inner Merge (Tagged)
Section titled “Inner Merge (Tagged)”When benchmarks share the same name but have different tags, vizb deep-merges them:
# Tag individual runsvizb bench-v1.txt -o v1.json --tag v1 -n "Sort"vizb bench-v2.txt -o v2.json --tag v2 -n "Sort"
# Mergevizb merge v1.json v2.json -o comparison.jsonThe merge process:
- Deduplication — same name + tag → keep latest timestamp
- Deep merge — different tags → single benchmark with chronological data
- Legacy — untagged entries prepended before tagged data
Tag-Axis
Section titled “Tag-Axis”Control which dimension receives the tag annotation:
# Inject tag into X-axis (versions on X-axis)vizb merge v1.json v2.json -A x -o comparison.json| Value | Target |
|---|---|
n | Name dimension (default) |
x | X-axis — use for version comparison |
y | Y-axis |