|
1 | 1 | use criterion::{black_box, criterion_group, criterion_main, Criterion};
|
2 | 2 |
|
3 | 3 | fn get_bunch_of_strings() -> Vec<String> {
|
4 |
| - let files = glob::glob("fixtures/threejs_src/**/*.js").unwrap(); |
5 |
| - let mut files = files |
6 |
| - .into_iter() |
7 |
| - .map(|p| p.unwrap().canonicalize().unwrap()) |
8 |
| - .collect::<Vec<_>>(); |
9 |
| - files.sort(); |
10 |
| - let stirngs = files |
11 |
| - .iter() |
12 |
| - .map(|p| std::fs::read_to_string(p).unwrap()) |
13 |
| - .collect::<Vec<_>>(); |
| 4 | + let files = glob::glob("fixtures/threejs_src/**/*.js").unwrap(); |
| 5 | + let mut files = files.into_iter().map(|p| p.unwrap().canonicalize().unwrap()).collect::<Vec<_>>(); |
| 6 | + files.sort(); |
| 7 | + let stirngs = files.iter().map(|p| std::fs::read_to_string(p).unwrap()).collect::<Vec<_>>(); |
14 | 8 |
|
15 |
| - let mut ret = vec![]; |
16 |
| - for _ in 0..10 { |
17 |
| - ret.extend(stirngs.clone()); |
18 |
| - } |
19 |
| - ret |
| 9 | + let mut ret = vec![]; |
| 10 | + for _ in 0..10 { |
| 11 | + ret.extend(stirngs.clone()); |
| 12 | + } |
| 13 | + ret |
20 | 14 | }
|
21 | 15 |
|
22 | 16 | fn criterion_benchmark(c: &mut Criterion) {
|
23 |
| - let bunch_of_strings = get_bunch_of_strings(); |
24 |
| - |
25 |
| - let mut joiner = string_wizard::Joiner::new(); |
26 |
| - bunch_of_strings.clone().into_iter().for_each(|s| { |
27 |
| - joiner.append_raw(s); |
28 |
| - }); |
29 |
| - c.bench_function("Joiner#join", |b| b.iter(|| black_box(joiner.join()))); |
30 |
| - c.bench_function("Vec#concat", |b| { |
31 |
| - b.iter(|| black_box(bunch_of_strings.concat())) |
32 |
| - }); |
33 |
| - c.bench_function("manual_push", |b| { |
34 |
| - b.iter(|| { |
35 |
| - let mut output = String::new(); |
36 |
| - bunch_of_strings.iter().for_each(|s| { |
37 |
| - output.push_str(s); |
38 |
| - }); |
39 |
| - black_box(output) |
40 |
| - }) |
41 |
| - }); |
42 |
| - c.bench_function("manual_push_with_cap", |b| { |
43 |
| - b.iter(|| { |
44 |
| - let cap: usize = bunch_of_strings.iter().map(|s| s.len()).sum(); |
45 |
| - let mut output = String::with_capacity(cap); |
46 |
| - bunch_of_strings.iter().for_each(|s| { |
47 |
| - output.push_str(s); |
48 |
| - }); |
49 |
| - black_box(output) |
50 |
| - }) |
51 |
| - }); |
| 17 | + let bunch_of_strings = get_bunch_of_strings(); |
| 18 | + |
| 19 | + let mut joiner = string_wizard::Joiner::new(); |
| 20 | + bunch_of_strings.clone().into_iter().for_each(|s| { |
| 21 | + joiner.append_raw(s); |
| 22 | + }); |
| 23 | + c.bench_function("Joiner#join", |b| b.iter(|| black_box(joiner.join()))); |
| 24 | + c.bench_function("Vec#concat", |b| b.iter(|| black_box(bunch_of_strings.concat()))); |
| 25 | + c.bench_function("manual_push", |b| { |
| 26 | + b.iter(|| { |
| 27 | + let mut output = String::new(); |
| 28 | + bunch_of_strings.iter().for_each(|s| { |
| 29 | + output.push_str(s); |
| 30 | + }); |
| 31 | + black_box(output) |
| 32 | + }) |
| 33 | + }); |
| 34 | + c.bench_function("manual_push_with_cap", |b| { |
| 35 | + b.iter(|| { |
| 36 | + let cap: usize = bunch_of_strings.iter().map(|s| s.len()).sum(); |
| 37 | + let mut output = String::with_capacity(cap); |
| 38 | + bunch_of_strings.iter().for_each(|s| { |
| 39 | + output.push_str(s); |
| 40 | + }); |
| 41 | + black_box(output) |
| 42 | + }) |
| 43 | + }); |
52 | 44 | }
|
53 | 45 |
|
54 | 46 | criterion_group!(benches, criterion_benchmark);
|
|
0 commit comments