Rust-Programming-Cookbook/Chapter03/external-deps/benches/cooking_with_rust.rs

33 wiersze
822 B
Rust

#[macro_use]
extern crate criterion;
use criterion::black_box;
use criterion::Criterion;
pub fn bubble_sort<T: PartialOrd + Clone>(collection: &[T]) -> Vec<T> {
let mut result: Vec<T> = collection.into();
for _ in 0..result.len() {
let mut swaps = 0;
for i in 1..result.len() {
if result[i - 1] > result[i] {
result.swap(i - 1, i);
swaps += 1;
}
}
if swaps == 0 {
break;
}
}
result
}
fn bench_bubble_sort_1k_asc(c: &mut Criterion) {
c.bench_function("Bubble sort 1k descending numbers", |b| {
let items: Vec<i32> = (0..1_000).rev().collect();
b.iter(|| black_box(bubble_sort(&items)))
});
}
criterion_group!(benches, bench_bubble_sort_1k_asc);
criterion_main!(benches);