]> git.proxmox.com Git - rustc.git/blame - vendor/arrayvec/benches/arraystring.rs
New upstream version 1.53.0+dfsg1
[rustc.git] / vendor / arrayvec / benches / arraystring.rs
CommitLineData
2c00a5a8
XL
1
2extern crate arrayvec;
3#[macro_use] extern crate bencher;
4
5use arrayvec::ArrayString;
6
7use bencher::Bencher;
8
9fn try_push_c(b: &mut Bencher) {
cdc7bbd5 10 let mut v = ArrayString::<512>::new();
2c00a5a8
XL
11 b.iter(|| {
12 v.clear();
13 while v.try_push('c').is_ok() {
14 }
15 v.len()
16 });
17 b.bytes = v.capacity() as u64;
18}
19
20fn try_push_alpha(b: &mut Bencher) {
cdc7bbd5 21 let mut v = ArrayString::<512>::new();
2c00a5a8
XL
22 b.iter(|| {
23 v.clear();
24 while v.try_push('α').is_ok() {
25 }
26 v.len()
27 });
28 b.bytes = v.capacity() as u64;
29}
30
31// Yes, pushing a string char-by-char is slow. Use .push_str.
32fn try_push_string(b: &mut Bencher) {
cdc7bbd5 33 let mut v = ArrayString::<512>::new();
2c00a5a8
XL
34 let input = "abcαβγ“”";
35 b.iter(|| {
36 v.clear();
37 for ch in input.chars().cycle() {
38 if !v.try_push(ch).is_ok() {
39 break;
40 }
41 }
42 v.len()
43 });
44 b.bytes = v.capacity() as u64;
45}
46
47fn push_c(b: &mut Bencher) {
cdc7bbd5 48 let mut v = ArrayString::<512>::new();
2c00a5a8
XL
49 b.iter(|| {
50 v.clear();
51 while !v.is_full() {
52 v.push('c');
53 }
54 v.len()
55 });
56 b.bytes = v.capacity() as u64;
57}
58
59fn push_alpha(b: &mut Bencher) {
cdc7bbd5 60 let mut v = ArrayString::<512>::new();
2c00a5a8
XL
61 b.iter(|| {
62 v.clear();
63 while !v.is_full() {
64 v.push('α');
65 }
66 v.len()
67 });
68 b.bytes = v.capacity() as u64;
69}
70
71fn push_string(b: &mut Bencher) {
cdc7bbd5 72 let mut v = ArrayString::<512>::new();
2c00a5a8
XL
73 let input = "abcαβγ“”";
74 b.iter(|| {
75 v.clear();
76 for ch in input.chars().cycle() {
77 if !v.is_full() {
78 v.push(ch);
79 } else {
80 break;
81 }
82 }
83 v.len()
84 });
85 b.bytes = v.capacity() as u64;
86}
87
88benchmark_group!(benches, try_push_c, try_push_alpha, try_push_string, push_c,
89 push_alpha, push_string);
90benchmark_main!(benches);