1
- //! SmolStr vs String benchmarks.
2
1
use criterion:: { criterion_group, criterion_main, Criterion } ;
3
2
use rand:: distr:: { Alphanumeric , SampleString } ;
4
3
use smol_str:: { format_smolstr, SmolStr , StrExt , ToSmolStr } ;
@@ -15,16 +14,11 @@ fn format_bench(c: &mut Criterion) {
15
14
let str_len = len. checked_sub ( n. to_smolstr ( ) . len ( ) ) . unwrap ( ) ;
16
15
let str = Alphanumeric . sample_string ( & mut rand:: rng ( ) , str_len) ;
17
16
18
- c. bench_function ( & format ! ( "SmolStr format_smolstr! len={len}" ) , |b| {
17
+ c. bench_function ( & format ! ( "format_smolstr! len={len}" ) , |b| {
19
18
let mut v = <_ >:: default ( ) ;
20
19
b. iter ( || v = format_smolstr ! ( "{str}-{n}" ) ) ;
21
20
assert_eq ! ( v, format!( "{str}-{n}" ) ) ;
22
21
} ) ;
23
- c. bench_function ( & format ! ( "std format! len={len}" ) , |b| {
24
- let mut v = <_ >:: default ( ) ;
25
- b. iter ( || v = format ! ( "{str}-{n}" ) ) ;
26
- assert_eq ! ( v, format!( "{str}-{n}" ) ) ;
27
- } ) ;
28
22
}
29
23
}
30
24
@@ -37,11 +31,6 @@ fn from_str_bench(c: &mut Criterion) {
37
31
b. iter ( || v = SmolStr :: from ( black_box ( & str) ) ) ;
38
32
assert_eq ! ( v, str ) ;
39
33
} ) ;
40
- c. bench_function ( & format ! ( "std String::from len={len}" ) , |b| {
41
- let mut v = <_ >:: default ( ) ;
42
- b. iter ( || v = String :: from ( black_box ( & str) ) ) ;
43
- assert_eq ! ( v, str ) ;
44
- } ) ;
45
34
}
46
35
}
47
36
@@ -55,11 +44,6 @@ fn clone_bench(c: &mut Criterion) {
55
44
b. iter ( || v = smolstr. clone ( ) ) ;
56
45
assert_eq ! ( v, str ) ;
57
46
} ) ;
58
- c. bench_function ( & format ! ( "std String::clone len={len}" ) , |b| {
59
- let mut v = <_ >:: default ( ) ;
60
- b. iter ( || v = str. clone ( ) ) ;
61
- assert_eq ! ( v, str ) ;
62
- } ) ;
63
47
}
64
48
}
65
49
@@ -73,11 +57,6 @@ fn eq_bench(c: &mut Criterion) {
73
57
b. iter ( || v = smolstr == black_box ( & str) ) ;
74
58
assert ! ( v) ;
75
59
} ) ;
76
- c. bench_function ( & format ! ( "std String::eq len={len}" ) , |b| {
77
- let mut v = false ;
78
- b. iter ( || v = & str == black_box ( & str) ) ;
79
- assert ! ( v) ;
80
- } ) ;
81
60
}
82
61
}
83
62
@@ -90,16 +69,11 @@ fn to_lowercase_bench(c: &mut Criterion) {
90
69
str. push ( END_CHAR ) ;
91
70
let str = str. as_str ( ) ;
92
71
93
- c. bench_function ( & format ! ( "SmolStr to_lowercase_smolstr len={len}" ) , |b| {
72
+ c. bench_function ( & format ! ( "to_lowercase_smolstr len={len}" ) , |b| {
94
73
let mut v = <_ >:: default ( ) ;
95
74
b. iter ( || v = str. to_lowercase_smolstr ( ) ) ;
96
75
assert_eq ! ( v, str . to_lowercase( ) ) ;
97
76
} ) ;
98
- c. bench_function ( & format ! ( "std to_lowercase len={len}" ) , |b| {
99
- let mut v = <_ >:: default ( ) ;
100
- b. iter ( || v = str. to_lowercase ( ) ) ;
101
- assert_eq ! ( v, str . to_lowercase( ) ) ;
102
- } ) ;
103
77
}
104
78
}
105
79
@@ -108,17 +82,9 @@ fn to_ascii_lowercase_bench(c: &mut Criterion) {
108
82
let str = Alphanumeric . sample_string ( & mut rand:: rng ( ) , len) ;
109
83
let str = str. as_str ( ) ;
110
84
111
- c. bench_function (
112
- & format ! ( "SmolStr to_ascii_lowercase_smolstr len={len}" ) ,
113
- |b| {
114
- let mut v = <_ >:: default ( ) ;
115
- b. iter ( || v = str. to_ascii_lowercase_smolstr ( ) ) ;
116
- assert_eq ! ( v, str . to_ascii_lowercase( ) ) ;
117
- } ,
118
- ) ;
119
- c. bench_function ( & format ! ( "std to_ascii_lowercase len={len}" ) , |b| {
85
+ c. bench_function ( & format ! ( "to_ascii_lowercase_smolstr len={len}" ) , |b| {
120
86
let mut v = <_ >:: default ( ) ;
121
- b. iter ( || v = str. to_ascii_lowercase ( ) ) ;
87
+ b. iter ( || v = str. to_ascii_lowercase_smolstr ( ) ) ;
122
88
assert_eq ! ( v, str . to_ascii_lowercase( ) ) ;
123
89
} ) ;
124
90
}
@@ -131,16 +97,11 @@ fn replace_bench(c: &mut Criterion) {
131
97
+ & Alphanumeric . sample_string ( & mut rand:: rng ( ) , len - 1 - len / 2 ) ;
132
98
let str = s_dash_s. as_str ( ) ;
133
99
134
- c. bench_function ( & format ! ( "SmolStr replace_smolstr len={len}" ) , |b| {
100
+ c. bench_function ( & format ! ( "replace_smolstr len={len}" ) , |b| {
135
101
let mut v = <_ >:: default ( ) ;
136
102
b. iter ( || v = str. replace_smolstr ( "-" , "_" ) ) ;
137
103
assert_eq ! ( v, str . replace( "-" , "_" ) ) ;
138
104
} ) ;
139
- c. bench_function ( & format ! ( "std replace len={len}" ) , |b| {
140
- let mut v = <_ >:: default ( ) ;
141
- b. iter ( || v = str. replace ( "-" , "_" ) ) ;
142
- assert_eq ! ( v, str . replace( "-" , "_" ) ) ;
143
- } ) ;
144
105
}
145
106
}
146
107
0 commit comments