#执行时间 #基准测试 #执行 #bench #时间

基准测试

这个包可以用来执行某些操作并测量执行时间。它不会向屏幕和文件系统输出任何内容。

14个版本

0.4.13 2024年5月1日
0.4.12 2023年2月4日
0.4.11 2022年3月5日
0.4.10 2021年4月21日
0.4.4 2019年7月28日

#31性能分析

Download history 856/week @ 2024-04-28 1458/week @ 2024-05-05 1162/week @ 2024-05-12 1232/week @ 2024-05-19 1036/week @ 2024-05-26 1109/week @ 2024-06-02 981/week @ 2024-06-09 951/week @ 2024-06-16 770/week @ 2024-06-23 765/week @ 2024-06-30 986/week @ 2024-07-07 1003/week @ 2024-07-14 694/week @ 2024-07-21 769/week @ 2024-07-28 611/week @ 2024-08-04 722/week @ 2024-08-11

2,882 每月下载量
3 包 中使用

MIT 许可证

28KB
572 代码行

基准测试

CI

这个包可以用来执行某些操作并测量执行时间。它不会向屏幕和文件系统输出任何内容。

示例

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());
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());
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());
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());
  • warm_upwarm_up_with_duration 函数在单个线程上运行。要预热所有CPU,可以使用 warm_up_multi_threadwarm_up_multi_thread_with_duration 函数。
  • measure_functionmeasure_function_with_times 函数可以执行闭包N次。如果你想反复执行一段时间,可以使用 bench_functionbench_function_with_duration 函数。
  • 要使用多个线程执行闭包以测量吞吐量,可以使用 multi_thread_bench_functionmulti_thread_bench_function_with_duration 函数。

Crates.io

https://crates.io/crates/benchmarking

文档

https://docs.rs/benchmarking

许可证

MIT

无运行时依赖