.. | ||
benches | ||
scripts | ||
src | ||
build.rs | ||
Cargo.toml | ||
README.md |
Benchmarks
TOC
Datasets
The benchmarks are available for the following datasets:
songs
wiki
Songs
songs
is a subset of the songs.csv
dataset.
It was generated with this command:
xsv sample --seed 42 1000000 songs.csv -o smol-songs.csv
Download the generated songs
dataset.
Wiki
wiki
is a subset of the wikipedia-articles.csv
dataset.
It was generated with the following command:
xsv sample --seed 42 500000 wikipedia-articles.csv -o smol-wikipedia-articles.csv
Download the generated wiki
dataset.
Run the benchmarks
On our private server
The Meili team has self-hosted his own GitHub runner to run benchmarks on our dedicated bare metal server.
To trigger the benchmark workflow:
- Go to the
Actions
tab of this repository. - Select the
Benchmarks
workflow on the left. - Click on
Run workflow
in the blue banner. - Select the branch on which you want to run the benchmarks and select the dataset you want (default:
songs
). - Finally, click on
Run workflow
.
This GitHub workflow will run the benchmarks and push the critcmp
report to a DigitalOcean Space (= S3).
On your machine
To run all the benchmarks (~4h):
cargo bench
To run only the songs
(~1h) or wiki
(~3h) benchmark:
cargo bench --bench <dataset name>
By default, the benchmarks will be downloaded and uncompressed automatically in the target directory.
If you don't want to download the datasets every time you update something on the code, you can specify a custom directory with the environment variable MILLI_BENCH_DATASETS_PATH
:
mkdir ~/datasets
MILLI_BENCH_DATASETS_PATH=~/datasets cargo bench --bench songs # the two datasets are downloaded
touch build.rs
MILLI_BENCH_DATASETS_PATH=~/datasets cargo bench --bench songs # the code is compiled again but the datasets are not downloaded
Comparison between benchmarks
The benchmark reports we push are generated with critcmp
. Thus, we use critcmp
to generate comparison results between 2 benchmarks.
We provide a script to download and display the comparison report.
Requirements:
s3cmd
and being logged to the DigitalOcean Space "milli-benchmarks". See the DigitalOcean guidecritcmp
List the available file in the DO Space:
s3cmd ls s3://milli-benchmarks/critcmp_results/
2021-05-31 14:40 279890 s3://milli-benchmarks/critcmp_results/songs_main_09a4321.json
2021-05-31 13:49 279576 s3://milli-benchmarks/critcmp_results/songs_geosearch_24ec456.json
Run the comparison script:
bash benchmarks/scripts/compare.sh songs_main_09a4321.json songs_geosearch_24ec456.json