-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
38f7270
commit fd8f45d
Showing
1 changed file
with
81 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,81 @@ | ||
TODO | ||
<div align="center"> | ||
<h1>codspeed-divan-compat</h1> | ||
|
||
[](https://github.com/CodSpeedHQ/codspeed-rust/actions/workflows/ci.yml) | ||
[](https://crates.io/crates/codspeed-divan-compat) | ||
[](https://discord.com/invite/MxpaCfKSqF) | ||
[](https://codspeed.io/CodSpeedHQ/codspeed-rust) | ||
|
||
Divan compatibility layer for CodSpeed | ||
|
||
</div> | ||
|
||
## Installation | ||
|
||
```sh | ||
cargo add --dev codspeed-divan-compat --rename divan | ||
``` | ||
|
||
> [!NOTE] | ||
> This will install the `codspeed-divan-compat` crate and rename it to `divan` in your `Cargo.toml`. | ||
> This way, you can keep your existing imports and the compatibility layer will take care of the rest. | ||
> | ||
> Using the compatibility layer won't change the behavior of your benchmark suite and divan will still run it as usual. | ||
> | ||
> If you prefer, you can also install `codspeed-divan-compat` as is and change your imports to use this new crate name. | ||
## Usage | ||
|
||
Let's start with the example from the [divan documentation](https://docs.rs/divan/0.1.17/divan/index.html#getting-started), | ||
creating a benchmark suite for the Fibonacci function (in `benches/my_benchmark.rs`): | ||
|
||
```rust | ||
fn main() { | ||
// Run registered benchmarks. | ||
divan::main(); | ||
} | ||
|
||
// Register a `fibonacci` function and benchmark it over multiple cases. | ||
#[divan::bench(args = [1, 2, 4, 8, 16, 32])] | ||
fn fibonacci(n: u64) -> u64 { | ||
if n <= 1 { | ||
1 | ||
} else { | ||
fibonacci(n - 2) + fibonacci(n - 1) | ||
} | ||
} | ||
``` | ||
|
||
The last step in creating the divan benchmark is to add the new benchmark target in your `Cargo.toml`: | ||
|
||
```toml title="Cargo.toml" | ||
[[bench]] | ||
name = "my_benchmark" | ||
harness = false | ||
``` | ||
|
||
And that's it! You can now run your benchmark suite with `cargo-codspeed`: | ||
|
||
``` | ||
$ cargo codspeed build | ||
Finished release [optimized] target(s) in 0.12s | ||
Finished built 1 benchmark suite(s) | ||
$ cargo codspeed run | ||
Collected 1 benchmark suite(s) to run | ||
Running my_benchmark | ||
NOTICE: codspeed is enabled, but no performance measurement will be made since it's running in an unknown environment. | ||
Checked: benches/my_benchmark.rs::fibonacci[1] | ||
Checked: benches/my_benchmark.rs::fibonacci[2] | ||
Checked: benches/my_benchmark.rs::fibonacci[4] | ||
Checked: benches/my_benchmark.rs::fibonacci[8] | ||
Checked: benches/my_benchmark.rs::fibonacci[16] | ||
Checked: benches/my_benchmark.rs::fibonacci[32] | ||
Done running my_benchmark | ||
Finished running 1 benchmark suite(s) | ||
``` | ||
|
||
### Not supported: | ||
|
||
- `divan::bench(const = xxx)`: we do not support this feature yet, if you need it don't hesitate to create an issue. | ||
- `divan::bench(crate = xxx)`: due to how the compatibility layer works internally, we do not plan to support this feature. |