### 11 releases

0.4.10 | Apr 21, 2021 |
---|---|

0.4.9 | Jul 29, 2020 |

0.4.8 | Jun 27, 2020 |

0.4.7 | Feb 27, 2020 |

0.4.4 | Jul 28, 2019 |

#**17** in Profiling

**103** downloads per month

Used in mprober

**MIT**license

28KB

574 lines

# Benchmarking

This crate can be used to execute something and measure the execution time. It does not output anything to screens and filesystems.

## Examples

`extern` `crate` benchmarking`;`
`const` `VEC_LENGTH``:` `usize` `=` `100``;`
`benchmarking``::`warm_up`(``)``;`
`let` bench_result `=` `benchmarking``::`measure_function`(``|``measurer``|` `{`
`let` `mut` vec`:` `Vec``<``usize``>` `=` `Vec``::`with_capacity`(``VEC_LENGTH``)``;`
`unsafe` `{`
vec`.``set_len``(``VEC_LENGTH``)``;`
`}`
`for` i `in` `0``..``VEC_LENGTH` `{`
measurer`.``measure``(``|``|` `{`
vec`[`i`]`
`}``)``;`
`}`
vec
`}``)``.``unwrap``(``)``;`
`println!``(``"`Reading a number from a vec takes `{:?}`!`"``,` bench_result`.``elapsed``(``)``)``;`

`extern` `crate` benchmarking`;`
`const` `VEC_LENGTH``:` `usize` `=` `100``;`
`benchmarking``::`warm_up`(``)``;`
`let` bench_result `=` `benchmarking``::`measure_function`(``|``measurer``|` `{`
`let` `mut` vec`:` `Vec``<``usize``>` `=` `Vec``::`with_capacity`(``VEC_LENGTH``)``;`
measurer`.``measure``(``|``|` `{`
`for` i `in` `0``..``VEC_LENGTH` `{`
vec`.``push``(`i`)``;`
`}`
`}``)``;`
vec
`}``)``.``unwrap``(``)``;`
`println!``(``"`Filling 0 to 99 into a vec takes `{:?}`!`"``,` bench_result`.``elapsed``(``)``)``;`

`extern` `crate` benchmarking`;`
`const` `VEC_LENGTH``:` `usize` `=` `100``;`
`benchmarking``::`warm_up`(``)``;`
`let` bench_result `=` `benchmarking``::`measure_function`(``|``measurer``|` `{`
`let` `mut` vec`:` `Vec``<``usize``>` `=` `Vec``::`with_capacity`(``VEC_LENGTH``)``;`
`for` loop_seq `in` `0``..``VEC_LENGTH` `{`
measurer`.``measure``(``|``|` `{`
vec`.``push``(`loop_seq`)``;`
`}``)``;`
`}`
vec
`}``)``.``unwrap``(``)``;`
`println!``(``"`Pushing a number into a vec takes `{:?}`!`"``,` bench_result`.``elapsed``(``)``)``;`

`extern` `crate` benchmarking`;`
`const` `VEC_LENGTH``:` `usize` `=` `100``;`
`benchmarking``::`warm_up`(``)``;`
`let` bench_result `=` `benchmarking``::`measure_function_n`(``2``,` `|``measurers``|` `{`
`let` `mut` vec`:` `Vec``<``usize``>` `=` `Vec``::`with_capacity`(``VEC_LENGTH``)``;`
`for` i `in` `0``..``VEC_LENGTH` `{`
measurers`[``1``]``.``measure``(``|``|` `{`
vec`.``push``(`i`)``;`
`}``)``;`
`}`
`for` i `in` `0``..``VEC_LENGTH` `{`
measurers`[``0``]``.``measure``(``|``|` `{`
vec`[`i`]`
`}``)``;`
`}`
vec
`}``)``.``unwrap``(``)``;`
`println!``(``"`Reading a number from a vec takes `{:?}`!`"``,` bench_result`[``0``]``.``elapsed``(``)``)``;`
`println!``(``"`Pushing a number into a vec takes `{:?}`!`"``,` bench_result`[``1``]``.``elapsed``(``)``)``;`

- The

and`warm_up`

functions of the`warm_up_with_duration`

crate runs on one thread. To warm up all CPUs, you can use the`benchmarking`

and`warm_up_multi_thread`

functions instead.`warm_up_multi_thread_with_duration` - The

and`measure_function`

functions of the`measure_function_with_times`

crate can execute a closure for N times. To execute it repeatly for a while instead, you can use the`benchmarking`

and`bench_function`

functions.`bench_function_with_duration` - To execute a closure with multiple threads to measure the throughput, you can use the

and`multi_thread_bench_function`

functions of the`multi_thread_bench_function_with_duration`

crate.`benchmarking`

## Crates.io

https://crates.io/crates/benchmarking