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 在 性能分析
2,882 每月下载量
在 3 包 中使用
28KB
572 代码行
基准测试
这个包可以用来执行某些操作并测量执行时间。它不会向屏幕和文件系统输出任何内容。
示例
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_up
和warm_up_with_duration
函数在单个线程上运行。要预热所有CPU,可以使用warm_up_multi_thread
和warm_up_multi_thread_with_duration
函数。measure_function
和measure_function_with_times
函数可以执行闭包N次。如果你想反复执行一段时间,可以使用bench_function
和bench_function_with_duration
函数。- 要使用多个线程执行闭包以测量吞吐量,可以使用
multi_thread_bench_function
和multi_thread_bench_function_with_duration
函数。
Crates.io
https://crates.io/crates/benchmarking