Skip to content

Commit 2349c86

Browse files
author
renatoathaydes
committed
Rust Benchmark for iterating over bytes VS chars.
1 parent 22c9f6f commit 2349c86

File tree

1 file changed

+8
-14
lines changed

1 file changed

+8
-14
lines changed
Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
11
use core::iter;
22

3-
use criterion::{BenchmarkId, Criterion, criterion_group, criterion_main, Throughput};
4-
5-
use phone_encoder::print_solution;
6-
use std::io::{self, BufWriter};
7-
8-
static NUM_SRC: [&str; 7] = ["123456", "78901234", "567890", "123456789", "012345", "43210", "98765432"];
3+
use criterion::{BenchmarkId, black_box, Criterion, criterion_group, criterion_main, Throughput};
94

105
static WORD_SRC: [&str; 26] = ["avocado", "band", "cereal", "dialog", "egg", "french",
116
"gorilla", "human", "india", "julia", "kilogram", "laureate", "magic", "nothing", "ostensible",
@@ -20,23 +15,22 @@ fn generate_data(size: usize, source: &[&'static str]) -> Vec<&'static str> {
2015
vec
2116
}
2217

23-
fn bench_print_solution(c: &mut Criterion) {
24-
let mut group = c.benchmark_group("phone_encoder");
18+
fn bench_iterate_over_string_characters(c: &mut Criterion) {
19+
let mut group = c.benchmark_group("str_iter");
2520
for words in [1, 10, 20, 30, 40, 50].iter()
2621
.map(|size| generate_data(*size as usize, &WORD_SRC)) {
27-
let num = generate_data(1, &NUM_SRC).remove(0);
2822
let size = words.len() as u64;
2923
group.throughput(Throughput::Elements(size));
30-
let stderr = io::stderr();
31-
let mut out = BufWriter::new(stderr.lock());
32-
group.bench_with_input(BenchmarkId::from_parameter(size), &(num, words), |b, (num, words)| {
24+
group.bench_with_input(BenchmarkId::from_parameter(size), &words, |b, words| {
3325
b.iter(|| {
34-
print_solution(num, words, &mut out);
26+
for ch in words.iter().flat_map(|w| w.chars()) {
27+
let _ = black_box(ch);
28+
}
3529
});
3630
});
3731
}
3832
group.finish();
3933
}
4034

41-
criterion_group!(benches, bench_print_solution);
35+
criterion_group!(benches, bench_iterate_over_string_characters);
4236
criterion_main!(benches);

0 commit comments

Comments
 (0)