1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
#![feature(test)]
extern crate test;
extern crate str_stack;
use str_stack::StrStack;
use std::fmt::Write;
#[bench]
fn bench_index(b: &mut test::Bencher) {
let mut stack = StrStack::new();
for i in 0..1000 {
write!(stack, "{}", i);
}
b.iter(|| {
for i in 0..stack.len() {
test::black_box(&stack[test::black_box(i)]);
}
})
}
#[bench]
fn bench_index_naive(b: &mut test::Bencher) {
let stack: Vec<_> = (0..1000).map(|i| i.to_string()).collect();
b.iter(|| {
for i in 0..stack.len() {
test::black_box(&stack[test::black_box(i)]);
}
})
}
#[bench]
fn bench_iter(b: &mut test::Bencher) {
let mut stack = StrStack::new();
for i in 0..1000 {
write!(stack, "{}", i);
}
b.iter(|| {
for i in &stack {
test::black_box(i);
}
})
}
#[bench]
fn bench_iter_naive(b: &mut test::Bencher) {
let stack: Vec<_> = (0..1000).map(|i| i.to_string()).collect();
b.iter(|| {
for i in &stack {
test::black_box(i);
}
})
}
#[bench]
fn bench_alloc(b: &mut test::Bencher) {
b.iter(|| {
let mut stack = StrStack::new();
for i in 0..1000 {
write!(stack, "{}", test::black_box(i));
}
test::black_box(stack);
})
}
#[bench]
fn bench_alloc_naive(b: &mut test::Bencher) {
b.iter(|| {
let stack: Vec<_> = (0..1000).map(|i| test::black_box(i).to_string()).collect();
test::black_box(stack);
})
}
|