Rust benchmark harness for comparing columnar storage engines on multi-modal datasets.
Rust
4
12 commits
updated Jul 14, 2026
lance-dataset-test is a Rust benchmark harness for comparing columnar storage engines on multi-modal datasets.
The repository currently focuses on:
lancelance-fragment for fragment-level scan comparisonsparquetfine-webopen-vidlaion10mle-robot-push-tle-robot-push-t-imagehf CLI for the dataset download scripts or bench downloadOptional:
xctrace on macOS for Time Profiler workflowsUse the helper scripts from the repository root:
./scripts/download_fineweb.sh
./scripts/download_openvid.sh
./scripts/download_laion10m.sh
./scripts/download_lerobot.sh
Or download everything:
./scripts/download_all.sh
Notes:
download_openvid.sh converts the source CSV into data/openvid/openvid.parquet.data/.cargo build -p bench-cli --release
The benchmark binary will be available at:
./target/release/bench
Ingest FineWeb into Lance:
./target/release/bench ingest \
--engine lance \
--dataset fine-web \
--input data/fineweb \
--out results/fineweb.lance \
--limit-rows 10000000
Generate multiple Lance storage versions from the same input:
./target/release/bench ingest-lance-versions \
--dataset fine-web \
--input data/fineweb \
--out-root results \
--lance-file-versions 2.0,2.1,2.2 \
--limit-rows 10000000
Full scan:
./target/release/bench scan \
--engine lance \
--dataset fine-web \
--path results/fineweb.lance \
--mode full
Filtered scan:
./target/release/bench scan \
--engine parquet \
--dataset fine-web \
--path results/fineweb.parquet \
--mode filter-low
Random take:
./target/release/bench take \
--engine lance \
--dataset fine-web \
--path results/fineweb.lance \
--iters 1000
Random blob:
./target/release/bench blob \
--engine lance \
--dataset laion10m \
--path results/laion10m.lance \
--column image \
--iters 1000
Evolution / backfill:
./target/release/bench evolve \
--engine lance \
--dataset fine-web \
--path results/fineweb.lance \
--new-column bench_derived_u64
Dataset size:
./target/release/bench size \
--engine lance \
--dataset fine-web \
--path results/fineweb.lance
Run the built-in suite:
./target/release/bench suite
Or use the helper script:
./scripts/run_suite.sh
The suite runs:
By default it compares:
parquetlance file versions 2.0,2.1,2.2Outputs are written under results/, including:
REPORT.mdPrepare OpenVid manually from a CSV input:
./target/release/bench prepare-openvid \
--input path/to/OpenVid-1M.csv \
--out data/openvid/openvid.parquet
Run one workload through the generic dispatcher:
./target/release/bench run \
--engine lance \
--dataset fine-web \
--workload scan-full \
--path results/fineweb.lance \
--out results/scan-full.lance.json
Generate a report from existing JSON results:
./target/release/bench report --out REPORT.md
Generate plots from existing JSON results:
./target/release/bench plot
Inspect a dataset schema:
./target/release/bench schema \
--engine lance \
--path results/fineweb.lance
lance-fragment supports scan workloads only.open-vid can materialize a synthetic video_blob column during ingest; the size is controlled by OPENVID_FAKE_BLOB_BYTES.scripts/ are operational utilities for larger benchmark runs; they are optional and not required for local benchmarking.This project is licensed under Apache-2.0. See LICENSE.
12 commits
Rust
68.0%
Python
17.4%
Shell
14.6%
Rust benchmark harness for comparing columnar storage engines on multi-modal datasets.
Rust
4
12 commits
updated Jul 14, 2026
lance-dataset-test is a Rust benchmark harness for comparing columnar storage engines on multi-modal datasets.
The repository currently focuses on:
lancelance-fragment for fragment-level scan comparisonsparquetfine-webopen-vidlaion10mle-robot-push-tle-robot-push-t-imagehf CLI for the dataset download scripts or bench downloadOptional:
xctrace on macOS for Time Profiler workflowsUse the helper scripts from the repository root:
./scripts/download_fineweb.sh
./scripts/download_openvid.sh
./scripts/download_laion10m.sh
./scripts/download_lerobot.sh
Or download everything:
./scripts/download_all.sh
Notes:
download_openvid.sh converts the source CSV into data/openvid/openvid.parquet.data/.cargo build -p bench-cli --release
The benchmark binary will be available at:
./target/release/bench
Ingest FineWeb into Lance:
./target/release/bench ingest \
--engine lance \
--dataset fine-web \
--input data/fineweb \
--out results/fineweb.lance \
--limit-rows 10000000
Generate multiple Lance storage versions from the same input:
./target/release/bench ingest-lance-versions \
--dataset fine-web \
--input data/fineweb \
--out-root results \
--lance-file-versions 2.0,2.1,2.2 \
--limit-rows 10000000
Full scan:
./target/release/bench scan \
--engine lance \
--dataset fine-web \
--path results/fineweb.lance \
--mode full
Filtered scan:
./target/release/bench scan \
--engine parquet \
--dataset fine-web \
--path results/fineweb.parquet \
--mode filter-low
Random take:
./target/release/bench take \
--engine lance \
--dataset fine-web \
--path results/fineweb.lance \
--iters 1000
Random blob:
./target/release/bench blob \
--engine lance \
--dataset laion10m \
--path results/laion10m.lance \
--column image \
--iters 1000
Evolution / backfill:
./target/release/bench evolve \
--engine lance \
--dataset fine-web \
--path results/fineweb.lance \
--new-column bench_derived_u64
Dataset size:
./target/release/bench size \
--engine lance \
--dataset fine-web \
--path results/fineweb.lance
Run the built-in suite:
./target/release/bench suite
Or use the helper script:
./scripts/run_suite.sh
The suite runs:
By default it compares:
parquetlance file versions 2.0,2.1,2.2Outputs are written under results/, including:
REPORT.mdPrepare OpenVid manually from a CSV input:
./target/release/bench prepare-openvid \
--input path/to/OpenVid-1M.csv \
--out data/openvid/openvid.parquet
Run one workload through the generic dispatcher:
./target/release/bench run \
--engine lance \
--dataset fine-web \
--workload scan-full \
--path results/fineweb.lance \
--out results/scan-full.lance.json
Generate a report from existing JSON results:
./target/release/bench report --out REPORT.md
Generate plots from existing JSON results:
./target/release/bench plot
Inspect a dataset schema:
./target/release/bench schema \
--engine lance \
--path results/fineweb.lance
lance-fragment supports scan workloads only.open-vid can materialize a synthetic video_blob column during ingest; the size is controlled by OPENVID_FAKE_BLOB_BYTES.scripts/ are operational utilities for larger benchmark runs; they are optional and not required for local benchmarking.This project is licensed under Apache-2.0. See LICENSE.
12 commits
Rust
68.0%
Python
17.4%
Shell
14.6%