Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion};
- fn generate_data(n: usize) -> Vec<u64> {
- use rand::prelude::*;
- let mut rng = thread_rng();
- let mut res = vec![0u64; n];
- rng.fill(&mut res[..]);
- res
- }
- const N: usize = 1000;
- pub fn criterion_benchmark(c: &mut Criterion) {
- let data = generate_data(N);
- let mut group = c.benchmark_group("vec_fill");
- group.bench_function(BenchmarkId::new("with_capacity_extend", ""), |b| {
- b.iter(|| {
- let mut result = Vec::with_capacity(data.len() + 1);
- result.push(0);
- result.extend(data.iter());
- result
- })
- });
- group.bench_function(BenchmarkId::new("clone_insert", ""), |b| {
- b.iter(|| {
- let mut result = data.clone();
- result.insert(0, 0);
- result
- })
- });
- group.bench_function(BenchmarkId::new("chain_collect", ""), |b| {
- b.iter(|| {
- let result: Vec<u64> = std::iter::once(0).chain(data.iter().copied()).collect();
- result
- })
- });
- group.finish();
- }
- criterion_group!(benches, criterion_benchmark);
- criterion_main!(benches);
Advertisement
Add Comment
Please, Sign In to add comment