Skip to content

Commit 54872ea

Browse files
authored
Merge pull request #79 from alvinreal/docs/perf-comparison-matrix
docs: add at-a-glance competitor comparison matrix
2 parents 08d1e2e + 9a47478 commit 54872ea

File tree

1 file changed

+13
-19
lines changed

1 file changed

+13
-19
lines changed

README.md

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -203,29 +203,23 @@ Measured from `cargo bench --bench benchmarks` on macOS arm64 (Feb 2026).
203203

204204
All comparisons below were run on the same machine (macOS arm64), same 10,000-record dataset, with warmup and repeated timed runs via `hyperfine`.
205205

206-
#### 1) JSON → YAML conversion
206+
#### Detailed benchmark matrix
207207

208-
| Tool | Mean runtime | Relative |
209-
|------|--------------|----------|
210-
| **morph** (`morph -f json -t yaml`) | **23.7 ms** | **1.00x** |
211-
| yq (`yq -P '.'`) | 713.2 ms | 30.03x slower |
208+
Task definitions:
209+
- **T1**: JSON → YAML conversion
210+
- **T2**: JSON transform (`rename .name -> .username` + `where .age > 30`)
211+
- **T3**: CSV → JSON conversion
212212

213-
#### 2) JSON transform (rename + filter)
213+
| Tool | T1 mean (ms) | T1 vs morph | T2 mean (ms) | T2 vs morph | T3 mean (ms) | T3 vs morph | Capability notes |
214+
|------|--------------|-------------|--------------|-------------|--------------|-------------|------------------|
215+
| **morph** | **23.7** | **1.00x** | **18.3** | **1.00x** | **11.7** | **1.00x** | Multi-format + mapping DSL in one binary |
216+
| jq | N/A | N/A | 40.0 | 2.19x slower | N/A | N/A | Excellent JSON transform tool |
217+
| yq | 713.2 | 30.03x slower | 101.5 | 5.55x slower | N/A | N/A | YAML/JSON query + transform workflows |
218+
| miller (mlr) | N/A | N/A | N/A | N/A | 17.2 | 1.47x slower | Strong tabular (CSV/TSV/etc.) processing |
214219

215-
Task: `rename .name -> .username` + `where .age > 30`
220+
**Environment:** macOS arm64, same 10,000-record dataset, warm cache, hyperfine warmup + repeated runs.
216221

217-
| Tool | Mean runtime | Relative |
218-
|------|--------------|----------|
219-
| **morph** | **18.3 ms** | **1.00x** |
220-
| jq | 40.0 ms | 2.19x slower |
221-
| yq | 101.5 ms | 5.55x slower |
222-
223-
#### 3) CSV → JSON conversion
224-
225-
| Tool | Mean runtime | Relative |
226-
|------|--------------|----------|
227-
| **morph** (`morph -f csv -t json`) | **11.7 ms** | **1.00x** |
228-
| miller (`mlr --icsv --ojson`) | 17.2 ms | 1.47x slower |
222+
**Important:** `N/A` means that tool was not benchmarked for that specific task in this run (not necessarily impossible).
229223

230224
### Comparison commands
231225

0 commit comments

Comments
 (0)