High-precision, one-shot and consistent benchmarking framework/harness for Rust. All Valgrind tools at your fingertips.
322
stars
2,686
commits
Rust
primary language
Sep 11, 2026
updated
High-precision, one-shot and consistent benchmarking framework/harness for
Rust.
All Valgrind tools at your fingertips.
Gungraun leverages Valgrind's profiling tools like Callgrind, Cachegrind and DHAT to provide extremely accurate and consistent measurements of Rust code, making it perfectly suited to run in environments like a CI. Gungraun aids in analyzing and optimizing code paths from the source code level down to the assembly instruction level.
Gungraun is:
Instruction counts,
Estimated Cycles and many other metrics allow you to reliably detect very
small optimizations and regressions of your code.dh_view.html and
others to analyze the results in detail are fully supported.See the guide and api documentation at docs.rs for all the details.
To get started read the guide and see some introductory examples in Quickstart for library benchmarks or Quickstart for binary benchmarks. A small migration check-list can be found in the Guide.
If you need help or have questions, don't hesitate to open an issue or a discussion
Gungraun benchmarks are designed to be runnable with cargo bench. The
benchmark files are expanded to a benchmarking harness which replaces the native
benchmark harness of Rust. Gungraun is a benchmarking and profiling framework
that can quickly and reliably detect performance regressions and optimizations
even in noisy environments with a precision that is impossible to achieve with
wall-clock time based benchmarks. At the same time, we want to abstract the
complicated parts and repetitive tasks away and provide an easy to use and
intuitive api. Gungraun tries to stay out of your way and applies sensible
default settings so you can focus more on profiling and your code!
Gungraun is in a mature development stage and is already in use.
Nevertheless, you may experience big changes between a minor version bump. The
main profiling tools Callgrind, Cachegrind and DHAT are fully integrated,
with full support for benchmarking async, multi-threaded and multi-process
applications. Please read our Vision to learn more about the
ideas and the direction the future path might take.
Although Gungraun is useful in many projects, there are cases where Gungraun is not a good fit.
Thanks for helping to improve this project! A guideline about contributing to Gungraun can be found in the CONTRIBUTING.md file.
You have an idea for a new feature, are missing a functionality or have found a bug? Open an issue.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be dual licensed as in License, without any additional terms or conditions.
Like valgrind, the name has its roots in old norse mythology and is a
composition of two words. The first is gungnir, Odin's legendary spear, in the
sense of one shot (benchmark execution) and one hit never missing its target.
The second word is raun which simply means test.
The first syllable is pronounced like the english word gun. The second g is
silent. The last syllable raun can be pronounced like the english word rain.
Gungraun is forked from https://github.com/bheisler/iai and the original idea is from Brook Heisler (@bheisler).
Gungraun is powered by Valgrind.
Gungraun is dual licensed under the Apache 2.0 license and the MIT license at your option.
According to Valgrind's documentation:
The Valgrind headers, unlike most of the rest of the code, are under a BSD-style license, so you may include them without worrying about license incompatibility.
We have included the original license where we made use of the original header files.
Rust
76.7%
Roff
21.5%
High-precision, one-shot and consistent benchmarking framework/harness for Rust. All Valgrind tools at your fingertips.
322
stars
2,686
commits
Rust
primary language
Sep 11, 2026
updated
High-precision, one-shot and consistent benchmarking framework/harness for
Rust.
All Valgrind tools at your fingertips.
Gungraun leverages Valgrind's profiling tools like Callgrind, Cachegrind and DHAT to provide extremely accurate and consistent measurements of Rust code, making it perfectly suited to run in environments like a CI. Gungraun aids in analyzing and optimizing code paths from the source code level down to the assembly instruction level.
Gungraun is:
Instruction counts,
Estimated Cycles and many other metrics allow you to reliably detect very
small optimizations and regressions of your code.dh_view.html and
others to analyze the results in detail are fully supported.See the guide and api documentation at docs.rs for all the details.
To get started read the guide and see some introductory examples in Quickstart for library benchmarks or Quickstart for binary benchmarks. A small migration check-list can be found in the Guide.
If you need help or have questions, don't hesitate to open an issue or a discussion
Gungraun benchmarks are designed to be runnable with cargo bench. The
benchmark files are expanded to a benchmarking harness which replaces the native
benchmark harness of Rust. Gungraun is a benchmarking and profiling framework
that can quickly and reliably detect performance regressions and optimizations
even in noisy environments with a precision that is impossible to achieve with
wall-clock time based benchmarks. At the same time, we want to abstract the
complicated parts and repetitive tasks away and provide an easy to use and
intuitive api. Gungraun tries to stay out of your way and applies sensible
default settings so you can focus more on profiling and your code!
Gungraun is in a mature development stage and is already in use.
Nevertheless, you may experience big changes between a minor version bump. The
main profiling tools Callgrind, Cachegrind and DHAT are fully integrated,
with full support for benchmarking async, multi-threaded and multi-process
applications. Please read our Vision to learn more about the
ideas and the direction the future path might take.
Although Gungraun is useful in many projects, there are cases where Gungraun is not a good fit.
Thanks for helping to improve this project! A guideline about contributing to Gungraun can be found in the CONTRIBUTING.md file.
You have an idea for a new feature, are missing a functionality or have found a bug? Open an issue.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be dual licensed as in License, without any additional terms or conditions.
Like valgrind, the name has its roots in old norse mythology and is a
composition of two words. The first is gungnir, Odin's legendary spear, in the
sense of one shot (benchmark execution) and one hit never missing its target.
The second word is raun which simply means test.
The first syllable is pronounced like the english word gun. The second g is
silent. The last syllable raun can be pronounced like the english word rain.
Gungraun is forked from https://github.com/bheisler/iai and the original idea is from Brook Heisler (@bheisler).
Gungraun is powered by Valgrind.
Gungraun is dual licensed under the Apache 2.0 license and the MIT license at your option.
According to Valgrind's documentation:
The Valgrind headers, unlike most of the rest of the code, are under a BSD-style license, so you may include them without worrying about license incompatibility.
We have included the original license where we made use of the original header files.
Rust
76.7%
Roff
21.5%