@@ -4,8 +4,9 @@ extern crate test;
4
4
5
5
use std:: { cell:: RefCell , sync:: Arc } ;
6
6
7
+ use paste:: paste;
7
8
use spdlog:: {
8
- formatter:: { pattern, Formatter , FullFormatter , Pattern , PatternFormatter } ,
9
+ formatter:: { pattern, Formatter , FullFormatter , Pattern , PatternFormatter , RuntimePattern } ,
9
10
prelude:: * ,
10
11
sink:: Sink ,
11
12
Record , StringBuf ,
@@ -76,15 +77,7 @@ fn bench_pattern(bencher: &mut Bencher, pattern: impl Pattern + Clone + 'static)
76
77
bench_formatter ( bencher, PatternFormatter :: new ( pattern) ) ;
77
78
}
78
79
79
- #[ bench]
80
- fn bench_1_full_formatter ( bencher : & mut Bencher ) {
81
- bench_formatter ( bencher, FullFormatter :: new ( ) )
82
- }
83
-
84
- #[ bench]
85
- fn bench_2_full_pattern ( bencher : & mut Bencher ) {
86
- let pattern = pattern ! ( "[{date} {time}.{millisecond}] [{level}] {payload}{eol}" ) ;
87
-
80
+ fn bench_full_pattern ( bencher : & mut Bencher , pattern : impl Pattern + Clone + ' static ) {
88
81
let full_formatter = Arc :: new ( StringSink :: with ( |b| {
89
82
b. formatter ( Box :: new ( FullFormatter :: new ( ) ) )
90
83
} ) ) ;
@@ -103,192 +96,81 @@ fn bench_2_full_pattern(bencher: &mut Bencher) {
103
96
bench_pattern ( bencher, pattern)
104
97
}
105
98
106
- #[ bench]
107
- fn bench_weekday_name ( bencher : & mut Bencher ) {
108
- bench_pattern ( bencher, pattern ! ( "{weekday_name}" ) )
109
- }
110
-
111
- #[ bench]
112
- fn bench_weekday_name_full ( bencher : & mut Bencher ) {
113
- bench_pattern ( bencher, pattern ! ( "{weekday_name_full}" ) )
114
- }
115
-
116
- #[ bench]
117
- fn bench_month_name ( bencher : & mut Bencher ) {
118
- bench_pattern ( bencher, pattern ! ( "{month_name}" ) )
119
- }
120
-
121
- #[ bench]
122
- fn bench_month_name_full ( bencher : & mut Bencher ) {
123
- bench_pattern ( bencher, pattern ! ( "{month_name_full}" ) )
124
- }
125
-
126
- #[ bench]
127
- fn bench_datetime ( bencher : & mut Bencher ) {
128
- bench_pattern ( bencher, pattern ! ( "{datetime}" ) )
129
- }
130
-
131
- #[ bench]
132
- fn bench_year_short ( bencher : & mut Bencher ) {
133
- bench_pattern ( bencher, pattern ! ( "{year_short}" ) )
134
- }
135
-
136
- #[ bench]
137
- fn bench_year ( bencher : & mut Bencher ) {
138
- bench_pattern ( bencher, pattern ! ( "{year}" ) )
139
- }
140
-
141
- #[ bench]
142
- fn bench_date_short ( bencher : & mut Bencher ) {
143
- bench_pattern ( bencher, pattern ! ( "{date_short}" ) )
144
- }
145
-
146
- #[ bench]
147
- fn bench_date ( bencher : & mut Bencher ) {
148
- bench_pattern ( bencher, pattern ! ( "{date}" ) )
149
- }
150
-
151
- #[ bench]
152
- fn bench_month ( bencher : & mut Bencher ) {
153
- bench_pattern ( bencher, pattern ! ( "{month}" ) )
154
- }
155
-
156
- #[ bench]
157
- fn bench_day ( bencher : & mut Bencher ) {
158
- bench_pattern ( bencher, pattern ! ( "{day}" ) )
159
- }
160
-
161
- #[ bench]
162
- fn bench_hour ( bencher : & mut Bencher ) {
163
- bench_pattern ( bencher, pattern ! ( "{hour}" ) )
164
- }
165
-
166
- #[ bench]
167
- fn bench_hour_12 ( bencher : & mut Bencher ) {
168
- bench_pattern ( bencher, pattern ! ( "{hour_12}" ) )
169
- }
170
-
171
- #[ bench]
172
- fn bench_minute ( bencher : & mut Bencher ) {
173
- bench_pattern ( bencher, pattern ! ( "{minute}" ) )
174
- }
175
-
176
- #[ bench]
177
- fn bench_second ( bencher : & mut Bencher ) {
178
- bench_pattern ( bencher, pattern ! ( "{second}" ) )
179
- }
180
-
181
- #[ bench]
182
- fn bench_millsecond ( bencher : & mut Bencher ) {
183
- bench_pattern ( bencher, pattern ! ( "{millisecond}" ) )
184
- }
185
-
186
- #[ bench]
187
- fn bench_microsecond ( bencher : & mut Bencher ) {
188
- bench_pattern ( bencher, pattern ! ( "{microsecond}" ) )
189
- }
190
-
191
- #[ bench]
192
- fn bench_nanosecond ( bencher : & mut Bencher ) {
193
- bench_pattern ( bencher, pattern ! ( "{nanosecond}" ) )
194
- }
195
-
196
- #[ bench]
197
- fn bench_am_pm ( bencher : & mut Bencher ) {
198
- bench_pattern ( bencher, pattern ! ( "{am_pm}" ) )
199
- }
200
-
201
- #[ bench]
202
- fn bench_time_12 ( bencher : & mut Bencher ) {
203
- bench_pattern ( bencher, pattern ! ( "{time_12}" ) )
204
- }
205
-
206
- #[ bench]
207
- fn bench_time_short ( bencher : & mut Bencher ) {
208
- bench_pattern ( bencher, pattern ! ( "{time_short}" ) )
209
- }
210
-
211
- #[ bench]
212
- fn bench_time ( bencher : & mut Bencher ) {
213
- bench_pattern ( bencher, pattern ! ( "{time}" ) )
214
- }
215
-
216
- #[ bench]
217
- fn bench_tz_offset ( bencher : & mut Bencher ) {
218
- bench_pattern ( bencher, pattern ! ( "{tz_offset}" ) )
219
- }
220
-
221
- #[ bench]
222
- fn bench_unix_timestamp ( bencher : & mut Bencher ) {
223
- bench_pattern ( bencher, pattern ! ( "{unix_timestamp}" ) )
224
- }
225
-
226
- #[ bench]
227
- fn bench_full ( bencher : & mut Bencher ) {
228
- bench_pattern ( bencher, pattern ! ( "{full}" ) )
229
- }
230
-
231
- #[ bench]
232
- fn bench_level ( bencher : & mut Bencher ) {
233
- bench_pattern ( bencher, pattern ! ( "{level}" ) )
234
- }
235
-
236
- #[ bench]
237
- fn bench_level_short ( bencher : & mut Bencher ) {
238
- bench_pattern ( bencher, pattern ! ( "{level_short}" ) )
239
- }
99
+ //
240
100
241
101
#[ bench]
242
- fn bench_source ( bencher : & mut Bencher ) {
243
- bench_pattern ( bencher, pattern ! ( "{source}" ) )
244
- }
245
-
246
- #[ bench]
247
- fn bench_file_name ( bencher : & mut Bencher ) {
248
- bench_pattern ( bencher, pattern ! ( "{file_name}" ) )
249
- }
250
-
251
- #[ bench]
252
- fn bench_file ( bencher : & mut Bencher ) {
253
- bench_pattern ( bencher, pattern ! ( "{file}" ) )
254
- }
255
-
256
- #[ bench]
257
- fn bench_line ( bencher : & mut Bencher ) {
258
- bench_pattern ( bencher, pattern ! ( "{line}" ) )
259
- }
260
-
261
- #[ bench]
262
- fn bench_column ( bencher : & mut Bencher ) {
263
- bench_pattern ( bencher, pattern ! ( "{column}" ) )
264
- }
265
-
266
- #[ bench]
267
- fn bench_module_path ( bencher : & mut Bencher ) {
268
- bench_pattern ( bencher, pattern ! ( "{module_path}" ) )
269
- }
270
-
271
- #[ bench]
272
- fn bench_logger ( bencher : & mut Bencher ) {
273
- bench_pattern ( bencher, pattern ! ( "{logger}" ) )
274
- }
275
-
276
- #[ bench]
277
- fn bench_payload ( bencher : & mut Bencher ) {
278
- bench_pattern ( bencher, pattern ! ( "{payload}" ) )
279
- }
280
-
281
- #[ bench]
282
- fn bench_pid ( bencher : & mut Bencher ) {
283
- bench_pattern ( bencher, pattern ! ( "{pid}" ) )
284
- }
285
-
286
- #[ bench]
287
- fn bench_tid ( bencher : & mut Bencher ) {
288
- bench_pattern ( bencher, pattern ! ( "{tid}" ) )
102
+ fn bench_1_full_formatter ( bencher : & mut Bencher ) {
103
+ bench_formatter ( bencher, FullFormatter :: new ( ) )
289
104
}
290
105
291
106
#[ bench]
292
- fn bench_eol ( bencher : & mut Bencher ) {
293
- bench_pattern ( bencher, pattern ! ( "{eol}" ) )
107
+ fn bench_2_full_pattern_ct ( bencher : & mut Bencher ) {
108
+ bench_full_pattern (
109
+ bencher,
110
+ pattern ! ( "[{date} {time}.{millisecond}] [{level}] {payload}{eol}" ) ,
111
+ )
112
+ }
113
+
114
+ #[ bench]
115
+ fn bench_3_full_pattern_rt ( bencher : & mut Bencher ) {
116
+ bench_full_pattern (
117
+ bencher,
118
+ RuntimePattern :: new ( "[{date} {time}.{millisecond}] [{level}] {payload}{eol}" ) . unwrap ( ) ,
119
+ )
120
+ }
121
+
122
+ macro_rules! bench_patterns {
123
+ ( $( ( $name: ident, $placeholder: literal) ) ,+ $( , ) ? ) => {
124
+ $( paste! {
125
+ #[ bench]
126
+ fn [ <bench_4_ct_ $name>] ( bencher: & mut Bencher ) {
127
+ bench_pattern( bencher, pattern!( $placeholder) )
128
+ }
129
+ #[ bench]
130
+ fn [ <bench_5_rt_ $name>] ( bencher: & mut Bencher ) {
131
+ bench_pattern( bencher, RuntimePattern :: new( $placeholder) . unwrap( ) )
132
+ }
133
+ } ) +
134
+ } ;
135
+ }
136
+
137
+ bench_patterns ! {
138
+ ( weekday_name, "{weekday_name}" ) ,
139
+ ( weekday_name_full, "{weekday_name_full}" ) ,
140
+ ( month_name, "{month_name}" ) ,
141
+ ( month_name_full, "{month_name_full}" ) ,
142
+ ( datetime, "{datetime}" ) ,
143
+ ( year_short, "{year_short}" ) ,
144
+ ( year, "{year}" ) ,
145
+ ( date_short, "{date_short}" ) ,
146
+ ( date, "{date}" ) ,
147
+ ( month, "{month}" ) ,
148
+ ( day, "{day}" ) ,
149
+ ( hour, "{hour}" ) ,
150
+ ( hour_12, "{hour_12}" ) ,
151
+ ( minute, "{minute}" ) ,
152
+ ( second, "{second}" ) ,
153
+ ( millsecond, "{millisecond}" ) ,
154
+ ( microsecond, "{microsecond}" ) ,
155
+ ( nanosecond, "{nanosecond}" ) ,
156
+ ( am_pm, "{am_pm}" ) ,
157
+ ( time_12, "{time_12}" ) ,
158
+ ( time_short, "{time_short}" ) ,
159
+ ( time, "{time}" ) ,
160
+ ( tz_offset, "{tz_offset}" ) ,
161
+ ( unix_timestamp, "{unix_timestamp}" ) ,
162
+ ( full, "{full}" ) ,
163
+ ( level, "{level}" ) ,
164
+ ( level_short, "{level_short}" ) ,
165
+ ( source, "{source}" ) ,
166
+ ( file_name, "{file_name}" ) ,
167
+ ( file, "{file}" ) ,
168
+ ( line, "{line}" ) ,
169
+ ( column, "{column}" ) ,
170
+ ( module_path, "{module_path}" ) ,
171
+ ( logger, "{logger}" ) ,
172
+ ( payload, "{payload}" ) ,
173
+ ( pid, "{pid}" ) ,
174
+ ( tid, "{tid}" ) ,
175
+ ( eol, "{eol}" ) ,
294
176
}
0 commit comments