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).
Read the caveats first. This measures single-machine batch throughput of three specific moves. It does not measure distributed throughput, connector breadth, or correctness. The CSV→JSONL figure is a best case (upper bound), not the typical case — see vs. Meltano and
BENCHMARKS.mdfor the full methodology, hardware capture, and the Postgres-row measurement caveat.
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) | 712,403 | 7,383 | ~96× | 11.8 | 724.5 |
| B — Postgres → JSONL | typed row decode | 179,700 | 7,184 | ~25× | 13.9 | 743.0 |
| C — Postgres → Postgres | destination write (sink-bound) | 123,200 (COPY) / 99,000 (INSERT) | 7,706 | ~16× / ~13× | 35.9 | 485.7 |
All runs: 1,000,000 rows, seed 42, exact row-count parity (1,000,000 = 1,000,000).
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 infra
make bench-smoke # 100k-row smoke run
make 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.