|
| 1 | +Run the script `./run.sh` in this directory to compare the compile compile of `rinja` |
| 2 | + |
| 3 | +* uses feature `derive` vs |
| 4 | +* it does not use that feature. |
| 5 | + |
| 6 | +The output might look like: |
| 7 | + |
| 8 | +```text |
| 9 | +Benchmark 1: cargo run --features=derive |
| 10 | + Time (mean ± σ): 3.378 s ± 0.041 s [User: 7.944 s, System: 1.018 s] |
| 11 | + Range (min … max): 3.345 s … 3.424 s 3 runs |
| 12 | + |
| 13 | +Benchmark 2: cargo run |
| 14 | + Time (mean ± σ): 3.283 s ± 0.130 s [User: 8.400 s, System: 1.091 s] |
| 15 | + Range (min … max): 3.141 s … 3.398 s 3 runs |
| 16 | + |
| 17 | +Summary |
| 18 | + cargo run ran |
| 19 | + 1.03 ± 0.04 times faster than cargo run --features=derive |
| 20 | +
|
| 21 | +---------- |
| 22 | +
|
| 23 | +Benchmark 1: cargo run --release --features=derive |
| 24 | + Time (mean ± σ): 4.733 s ± 0.050 s [User: 9.026 s, System: 0.749 s] |
| 25 | + Range (min … max): 4.689 s … 4.788 s 3 runs |
| 26 | + |
| 27 | +Benchmark 2: cargo run --release |
| 28 | + Time (mean ± σ): 4.504 s ± 0.032 s [User: 9.010 s, System: 0.733 s] |
| 29 | + Range (min … max): 4.481 s … 4.541 s 3 runs |
| 30 | + |
| 31 | +Summary |
| 32 | + cargo run --release ran |
| 33 | + 1.05 ± 0.01 times faster than cargo run --release --features=derive |
| 34 | +``` |
| 35 | + |
| 36 | +This shows that – while it is less convenient – for small projects it might be better |
| 37 | +to use the following setup. |
| 38 | +This might be especially true if you are using `rinja` in a library. |
| 39 | +Without the feature, `cargo` will be able to compile more dependencies in parallel. |
| 40 | + |
| 41 | +```toml |
| 42 | +# Cargo.toml |
| 43 | +[dependencies] |
| 44 | +rinja = { version = "0.3.5", default-features = false, features = ["std"] } |
| 45 | +rinja_derive = { version = "0.3.5", features = ["std"] } |
| 46 | +``` |
| 47 | + |
| 48 | +```rust |
| 49 | +// lib.rs |
| 50 | +use rinja::Template as _; |
| 51 | +use rinja_derive::Template; |
| 52 | +``` |
| 53 | + |
| 54 | +The script uses [hyperfine](https://crates.io/crates/hyperfine). |
| 55 | +Install it with `cargo install hyperfine`. |
0 commit comments