Benchmarks (vs Meltano)
Honest, reproducible evidence for the “built for throughput” claim. Every number
below comes from BENCHMARKS.md
— identical workloads, one machine (Apple M3 Pro, 12 cores, 18 GiB RAM), 1M rows,
seed 42, median of 5 timed runs. faucet-stream is compared against
Meltano (the most common Singer
runtime).
Show the raw numbers as a table
| Scenario | Bottleneck | faucet (rows/s) | Meltano (rows/s) | Gap | faucet RSS (MiB) | Meltano RSS (MiB) |
|---|---|---|---|---|---|---|
| A — CSV → JSONL | parse/serialize (best case) | 700,574 | 8,698 | ~80× | 20.1 | 818.8 |
| B — Postgres → JSONL | typed row decode | 191,124 | 7,931 | ~24× | 21.7 | 621.0 |
| C — Postgres → Postgres | destination write (sink-bound) | 117,147 (COPY) | 12,186 | ~10× | 33.8 | 690.3 |
All runs: 1,000,000 rows, seed 42, exact row-count parity (1,000,000 = 1,000,000). Measured 2026-10-16 against Meltano 4.4.1; earlier runs are in the History section of BENCHMARKS.md.
How to reproduce
Section titled “How to reproduce”The harness never fabricates a number — a tool that won’t install/run is recorded as such, not faked. Regenerate everything on your own hardware:
make bench # Scenario A (CSV → JSONL, 1M rows) — no inframake bench-smoke # 100k-row smoke runmake bench-postgres # adds Scenarios B & C (needs Docker)Results land in benchmarks/results/. One independent confirmation on your own
hardware is worth more to this project than a new connector — open an issue or PR
with your output, especially if faucet does not win. See
benchmarks/README.md
and Performance tuning for the levers behind these
numbers.