This suite compares logq, DuckDB, ClickHouse local, and angle-grinder on the same deterministic JSONL data. It also generates ELB and ALB data so logq's native readers and gzip path can be measured separately. Generated data and raw results are ignored by Git.
- hyperfine drives repeated wall-time measurements.
- DuckDB CLI is detected
as
duckdb. - ClickHouse local
is detected as
clickhouseorclickhouse-local. - angle-grinder is detected as
agrind.
On macOS, Homebrew packages are available for hyperfine, DuckDB, and angle-grinder:
brew install hyperfine duckdb angle-grinderClickHouse's current installation flow uses its official CLI:
curl https://clickhouse.com/cli | sh
clickhousectl local use latestOn other platforms, follow the linked upstream instructions. A missing
competitor is reported and skipped; hyperfine is required. LOGQ_BIN,
HYPERFINE_BIN, DUCKDB_BIN, CLICKHOUSE_BIN, and AGRIND_BIN can point to
binaries outside PATH.
The default generator writes 100 MB and 1 GB ELB, ALB, and JSONL files plus
deterministic gzip copies. The fixed seed, exact byte sizes, row counts, and
SHA-256 digests are recorded in data/manifest.json.
scripts/bench_e2e/gen_data.pyFor a quick harness check:
scripts/bench_e2e/gen_data.py --sizes 1mb
scripts/bench_e2e/run.sh --scale 1mb --runs 2 --warmup 0The published suite uses warm filesystem caches, one warmup, and five measured runs per command:
scripts/bench_e2e/run.sh --scale 100mbAdd --gzip to compare compressed JSONL. Each query gets a hyperfine JSON file,
and a separate /usr/bin/time run records peak RSS. The final Markdown fragment
is written to results/table.md.
All tools scan the same JSONL file and use idiomatic syntax for full count,
selective filter, status-code grouping, top-10 latency, and a user-agent
substring filter. angle-grinder is marked unsupported for top-N: its limit
operator executes before sort, so it cannot express the same bounded result.
The harness does not substitute a full-sort benchmark because that would
measure materially different output and resource behavior.