Skip to content

Benchmarks ​

Looking for the indicator library's numbers?

This page is about Wickra Feature Store. Wickra's own indicator benchmarks — the comparison against TA-Lib, talipp, pandas-ta and the other Rust TA crates — live at wickra.org.

A feature store's cost is dominated by folding every symbol's history through its indicators and computing the label cells at each bar. The benchmarks here measure that core build work, so throughput scales predictably with the universe size and the number of features a spec references.

What is measured ​

The feature-store-bench crate (criterion) covers two groups:

  • build — the batch build(data, spec) entry point, across a matrix of universe size (100 and 1 000 symbols, each carrying 200 bars), feature count (5 and 20 indicators), and whether a forward_return label is attached.
  • serialize — FeatureMatrix::to_json for a 200-symbol, 10-feature, 1-label matrix, isolating the serialisation cost from the fold.

Methodology ​

Run against fixed, in-process synthetic universes so the numbers are reproducible and contain no I/O variance:

bash
cargo bench -p feature-store-bench

Results ​

Median estimates from cargo bench -p feature-store-bench on a Windows x86-64 laptop, default parallel (rayon) path, with a shortened criterion sampling window (--warm-up-time 1 --measurement-time 2). Treat them as orders of magnitude, not guarantees — they vary with CPU core count and toolchain.

BenchmarkUniverse × featuresBars foldedMedian
build/100sym_5feat_0lab100 × 520 0009.9 ms
build/100sym_5feat_1lab100 × 5 + label20 00013.0 ms
build/100sym_20feat_0lab100 × 2020 00037.3 ms
build/100sym_20feat_1lab100 × 20 + label20 00038.2 ms
build/1000sym_5feat_0lab1 000 × 5200 00099.0 ms
build/1000sym_5feat_1lab1 000 × 5 + label200 000126.5 ms
build/1000sym_20feat_0lab1 000 × 20200 000322 ms
build/1000sym_20feat_1lab1 000 × 20 + label200 000290 ms
serialize/to_json200 × 10 + label—118 ms

The takeaway: per-symbol cost stays roughly constant as the universe grows (~99 µs/symbol at 5 features, ~330 µs/symbol at 20), so build time scales linearly with universe size and with the number of distinct indicators a spec references — a 1 000-symbol, 5-feature build finishes in ~100 ms. Adding a forward_return label is a small, near-constant overhead. The nightly bench.yml workflow reruns the full criterion sampling on a clean Linux runner for tracking over time.

Caveats ​

These figures bound the feature store's own build overhead only. End-to-end time in a real run also depends on loading the universe from disk or a live feed, which these in-process benchmarks do not capture.

The numbers above are the ones in the repository's BENCHMARKS.md, measured with the commands it names.

Updated: