-
Notifications
You must be signed in to change notification settings - Fork 26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Benchmark GeoTIFF read speeds #22
base: main
Are you sure you want to change the base?
Conversation
Statistics-driven micro-benchmarking library! Repo at https://github.com/bheisler/criterion.rs
Benchmark both the time and throughput for reading a 50MB file of various dtypes. GeoTIFF files were downloaded from https://s3.us-east-2.amazonaws.com/geotiff-benchmark-sample-files/geotiff_sample_files.tar.gz. See also https://github.com/kokoalberti/geotiff-benchmark.
Based on https://docs.codspeed.io/benchmarks/rust#running-the-benchmarks-in-your-ci, adapted to have a trigger that only runs when a `run/benchmark` label is in place, and includes a download/extract step for the sample GeoTIFF files.
Codspeed action only supports Ubuntu 20.04 and 22.04 at the moment.
Set benchmark group name to `read_geotiff_50MB`, and benchmark function names to `u8_dtype`, `i16_dtype`, `f32_dtype`.
Specifically byte_50m.tif, float32_50m.tif, int16_50m.tif.
From downloading the tar archive, extracting, and running the benchmark via `cargo bench`.
Ok, so the Codspeed Action (for tracking benchmarks over time) requires someone with admin permissions to install the CodspeedHQ GitHub App (see docs at https://docs.codspeed.io/importing-repositories). Have requested the install, and will re-run the benchmarks CI once that is enabled. |
@georust/core (sorry for the wide ping, couldn't figure out who are admins...), just checking if it's possible to install the Codspeed GitHub App so as to track benchmarks over time in georust/geotiff here. I've requested an installation through https://github.com/apps/codspeed-hq/installations/select_target already following instructions at https://docs.codspeed.io/integrations/providers/github, but unsure who gets the email to approve the installation. |
@weiji14 I approved Codspeed for this repository. Let me know if that worked |
CodSpeed Performance ReportCongrats! CodSpeed is installed 🎉
You will start to see performance impacts in the reports once the benchmarks are run from your default branch.
|
Thanks @frewsxcv! Looks like it is working now, the benchmark page is up at https://codspeed.io/georust/geotiff 🎉 |
Updated description to mention throughput measurement is on read only instead of read/write.
It also seems like there's no data in codspeed: ![]() Perhaps because it's been so long since it's been run? I suppose a free service can't offer to keep our perf data around forever. For my own perf measurements, I'm just doing local before/after benchmarks with criterion. Sometimes I'll record the output in git for posterity. It's admittedly lacking flashy dashboards, but it's simple to maintain. Since it doesn't seem like this is being very actively used in practice, I'm inclined to disable the extension. What do you think @weiji14? |
There's no data because this PR isn't merged into the
According to https://docs.codspeed.io/integrations/providers/github#permissions and https://discord.com/channels/1065233827569598464/1333477558406090905/1333478376048037979, the "Administration (Read/Write)" permissions are required to register CodSpeed Macro runners on repositories. We're not using those self-hosted runners, so those permissions won't be needed, and I think it is ok to ignore them (the app should still work with the old permissions). That said, I'm also ok with disabling the extension if you think it is a privacy concern, and I'll refactor this PR to just have the benchmark scripts without the GitHub Action workflow. Either way, I won't merge this PR until another maintainer approves. |
Measuring how fast it takes to read GeoTIFF files (in terms of duration/time and throughput), setting up a baseline level of performance as we work towards addressing #5.
run/benchmark
, on themain
branch, or onrelease
.To run locally:
Example output on my laptop:
References: