Skip to content

Latest commit

 

History

History

bench-build

Run the script ./run.sh in this directory to compare the compile compile of askama

  • uses feature derive vs
  • it does not use that feature.

The output might look like:

Benchmark 1: cargo run --features=derive
  Time (mean ± σ):      3.378 s ±  0.041 s    [User: 7.944 s, System: 1.018 s]
  Range (min … max):    3.345 s …  3.424 s    3 runs
 
Benchmark 2: cargo run
  Time (mean ± σ):      3.283 s ±  0.130 s    [User: 8.400 s, System: 1.091 s]
  Range (min … max):    3.141 s …  3.398 s    3 runs
 
Summary
  cargo run ran
    1.03 ± 0.04 times faster than cargo run --features=derive

----------

Benchmark 1: cargo run --release --features=derive
  Time (mean ± σ):      4.733 s ±  0.050 s    [User: 9.026 s, System: 0.749 s]
  Range (min … max):    4.689 s …  4.788 s    3 runs
 
Benchmark 2: cargo run --release
  Time (mean ± σ):      4.504 s ±  0.032 s    [User: 9.010 s, System: 0.733 s]
  Range (min … max):    4.481 s …  4.541 s    3 runs
 
Summary
  cargo run --release ran
    1.05 ± 0.01 times faster than cargo run --release --features=derive

This shows that – while it is less convenient – for small projects it might be better to use the following setup. This might be especially true if you are using askama in a library. Without the feature, cargo will be able to compile more dependencies in parallel.

# Cargo.toml
[dependencies]
askama = { version = "0.13.0", default-features = false, features = ["std"] }
askama_derive = { version = "0.13.0", features = ["std"] }
// lib.rs
use askama::Template as _;
use askama_derive::Template;

The script uses hyperfine. Install it with cargo install hyperfine.