Skip to content

Benchmarks

Reproducible benchmarks on commodity hardware. All numbers measured on a single node unless noted.


ComponentSpec
CPUAMD EPYC 9654 (96 cores) / Intel Xeon Platinum 8488C
RAM256 GB DDR5-4800 ECC
StorageNVMe Gen4 (for WAL & Parquet HDB)
OSAmazon Linux 2023, kernel 6.1
CompilerClang 19, -O3 -march=native

ScenarioEvents/secLatency (p99)
Single-symbol tick stream5.52M181ns
Multi-symbol (1,000 syms)4.8M210ns
Kafka consumer (batch 10K)3.2M850μs batch
FIX 4.4 market data1.1M420ns parse+ingest

Lock-free MPMC ring buffer with Highway SIMD batch copy. Zero allocation on hot path.


All queries on 1M-row in-memory table, single thread.

QueryLatency
SELECT * FROM trades WHERE sym='AAPL' AND ts > now()-1h272μs
SELECT avg(price), max(volume) FROM trades GROUP BY sym185μs
SELECT * FROM trades ASOF JOIN quotes USING(sym, ts)410μs
SELECT sym, ema(price, 20) FROM trades320μs
SELECT xbar(1m, ts) as bucket, vwap(price, volume) FROM trades GROUP BY bucket290μs
Window JOIN (±500ms)580μs

LLVM JIT compilation. Vectorized execution with SIMD aggregation.


OperationLatency
conn.query("SELECT * FROM trades") → NumPy array522ns
DataFrame view (1M rows × 5 cols)1.2μs
PyTorch tensor from query result890ns

Direct memory-mapped view. No serialization, no copy, no Arrow conversion.


ZeptoDBkdb+ClickHouseTimescaleDBInfluxDB
Ingestion (events/sec)5.52M~5M100K50K50K
Point query latency272μs~300μs~5ms~10ms~15ms
ASOF JOIN
SQLStandardq langInfluxQL
Python zero-copy522nsIPC (~ms)
License costFree (OSS)$100K+/yrFreeFreeFree

Terminal window
git clone https://github.com/zeptodb/zeptodb.git && cd zeptodb
mkdir -p build && cd build
cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=clang-19 -DCMAKE_CXX_COMPILER=clang++-19
ninja -j$(nproc)
# Ingestion benchmark
./bench/bench_ingestion --symbols 1 --duration 10s
# Query benchmark
./bench/bench_query --rows 1000000 --iterations 100
# Python zero-copy
python3 ../bench/bench_python_zerocopy.py

See benchmark source code for full methodology.