1
+ use std:: hint:: black_box;
2
+
1
3
use criterion:: Bencher ;
2
4
use time:: ext:: { NumericalDuration , NumericalStdDuration } ;
3
5
use time:: macros:: date;
4
6
use time:: { Date , Month , Time , Weekday } ;
5
7
8
+ const DATES : [ Date ; 24 ] = [
9
+ date ! ( 2019 -01 -01 ) ,
10
+ date ! ( 2020 -01 -01 ) ,
11
+ date ! ( 2019 -02 -01 ) ,
12
+ date ! ( 2020 -02 -01 ) ,
13
+ date ! ( 2019 -03 -01 ) ,
14
+ date ! ( 2020 -03 -01 ) ,
15
+ date ! ( 2019 -04 -01 ) ,
16
+ date ! ( 2020 -04 -01 ) ,
17
+ date ! ( 2019 -05 -01 ) ,
18
+ date ! ( 2020 -05 -01 ) ,
19
+ date ! ( 2019 -06 -01 ) ,
20
+ date ! ( 2020 -06 -01 ) ,
21
+ date ! ( 2019 -07 -01 ) ,
22
+ date ! ( 2020 -07 -01 ) ,
23
+ date ! ( 2019 -08 -01 ) ,
24
+ date ! ( 2020 -08 -01 ) ,
25
+ date ! ( 2019 -09 -01 ) ,
26
+ date ! ( 2020 -09 -01 ) ,
27
+ date ! ( 2019 -10 -01 ) ,
28
+ date ! ( 2020 -10 -01 ) ,
29
+ date ! ( 2019 -11 -01 ) ,
30
+ date ! ( 2020 -11 -01 ) ,
31
+ date ! ( 2019 -12 -01 ) ,
32
+ date ! ( 2020 -12 -01 ) ,
33
+ ] ;
34
+
6
35
setup_benchmark ! {
7
36
"Date" ,
8
37
@@ -43,153 +72,83 @@ setup_benchmark! {
43
72
}
44
73
45
74
fn month( ben: & mut Bencher <' _>) {
46
- ben. iter( || date!( 2019 -01 -01 ) . month( ) ) ;
47
- ben. iter( || date!( 2019 -02 -01 ) . month( ) ) ;
48
- ben. iter( || date!( 2019 -03 -01 ) . month( ) ) ;
49
- ben. iter( || date!( 2019 -04 -01 ) . month( ) ) ;
50
- ben. iter( || date!( 2019 -05 -01 ) . month( ) ) ;
51
- ben. iter( || date!( 2019 -06 -01 ) . month( ) ) ;
52
- ben. iter( || date!( 2019 -07 -01 ) . month( ) ) ;
53
- ben. iter( || date!( 2019 -08 -01 ) . month( ) ) ;
54
- ben. iter( || date!( 2019 -09 -01 ) . month( ) ) ;
55
- ben. iter( || date!( 2019 -10 -01 ) . month( ) ) ;
56
- ben. iter( || date!( 2019 -11 -01 ) . month( ) ) ;
57
- ben. iter( || date!( 2019 -12 -01 ) . month( ) ) ;
75
+ ben. iter( || {
76
+ for date in DATES {
77
+ black_box( date. month( ) ) ;
78
+ }
79
+ } ) ;
58
80
}
59
81
60
82
fn day( ben: & mut Bencher <' _>) {
61
- ben. iter( || date!( 2019 -01 -01 ) . day( ) ) ;
62
- ben. iter( || date!( 2019 -02 -01 ) . day( ) ) ;
63
- ben. iter( || date!( 2019 -03 -01 ) . day( ) ) ;
64
- ben. iter( || date!( 2019 -04 -01 ) . day( ) ) ;
65
- ben. iter( || date!( 2019 -05 -01 ) . day( ) ) ;
66
- ben. iter( || date!( 2019 -06 -01 ) . day( ) ) ;
67
- ben. iter( || date!( 2019 -07 -01 ) . day( ) ) ;
68
- ben. iter( || date!( 2019 -08 -01 ) . day( ) ) ;
69
- ben. iter( || date!( 2019 -09 -01 ) . day( ) ) ;
70
- ben. iter( || date!( 2019 -10 -01 ) . day( ) ) ;
71
- ben. iter( || date!( 2019 -11 -01 ) . day( ) ) ;
72
- ben. iter( || date!( 2019 -12 -01 ) . day( ) ) ;
83
+ ben. iter( || {
84
+ for date in DATES {
85
+ black_box( date. day( ) ) ;
86
+ }
87
+ } ) ;
73
88
}
74
89
75
90
fn ordinal( ben: & mut Bencher <' _>) {
76
- ben. iter( || date!( 2019 -01 -01 ) . ordinal( ) ) ;
77
- ben. iter( || date!( 2019 -02 -01 ) . ordinal( ) ) ;
78
- ben. iter( || date!( 2019 -03 -01 ) . ordinal( ) ) ;
79
- ben. iter( || date!( 2019 -04 -01 ) . ordinal( ) ) ;
80
- ben. iter( || date!( 2019 -05 -01 ) . ordinal( ) ) ;
81
- ben. iter( || date!( 2019 -06 -01 ) . ordinal( ) ) ;
82
- ben. iter( || date!( 2019 -07 -01 ) . ordinal( ) ) ;
83
- ben. iter( || date!( 2019 -08 -01 ) . ordinal( ) ) ;
84
- ben. iter( || date!( 2019 -09 -01 ) . ordinal( ) ) ;
85
- ben. iter( || date!( 2019 -10 -01 ) . ordinal( ) ) ;
86
- ben. iter( || date!( 2019 -11 -01 ) . ordinal( ) ) ;
87
- ben. iter( || date!( 2019 -12 -01 ) . ordinal( ) ) ;
91
+ ben. iter( || {
92
+ for date in DATES {
93
+ black_box( date. ordinal( ) ) ;
94
+ }
95
+ } ) ;
88
96
}
89
97
90
98
fn iso_week( ben: & mut Bencher <' _>) {
91
- ben. iter( || date!( 2019 -01 -01 ) . iso_week( ) ) ;
92
- ben. iter( || date!( 2019 -02 -01 ) . iso_week( ) ) ;
93
- ben. iter( || date!( 2019 -03 -01 ) . iso_week( ) ) ;
94
- ben. iter( || date!( 2019 -04 -01 ) . iso_week( ) ) ;
95
- ben. iter( || date!( 2019 -05 -01 ) . iso_week( ) ) ;
96
- ben. iter( || date!( 2019 -06 -01 ) . iso_week( ) ) ;
97
- ben. iter( || date!( 2019 -07 -01 ) . iso_week( ) ) ;
98
- ben. iter( || date!( 2019 -08 -01 ) . iso_week( ) ) ;
99
- ben. iter( || date!( 2019 -09 -01 ) . iso_week( ) ) ;
100
- ben. iter( || date!( 2019 -10 -01 ) . iso_week( ) ) ;
101
- ben. iter( || date!( 2019 -11 -01 ) . iso_week( ) ) ;
102
- ben. iter( || date!( 2019 -12 -01 ) . iso_week( ) ) ;
99
+ ben. iter( || {
100
+ for date in DATES {
101
+ black_box( date. iso_week( ) ) ;
102
+ }
103
+ } ) ;
103
104
}
104
105
105
106
fn sunday_based_week( ben: & mut Bencher <' _>) {
106
- ben. iter( || date!( 2019 -01 -01 ) . sunday_based_week( ) ) ;
107
- ben. iter( || date!( 2019 -02 -01 ) . sunday_based_week( ) ) ;
108
- ben. iter( || date!( 2019 -03 -01 ) . sunday_based_week( ) ) ;
109
- ben. iter( || date!( 2019 -04 -01 ) . sunday_based_week( ) ) ;
110
- ben. iter( || date!( 2019 -05 -01 ) . sunday_based_week( ) ) ;
111
- ben. iter( || date!( 2019 -06 -01 ) . sunday_based_week( ) ) ;
112
- ben. iter( || date!( 2019 -07 -01 ) . sunday_based_week( ) ) ;
113
- ben. iter( || date!( 2019 -08 -01 ) . sunday_based_week( ) ) ;
114
- ben. iter( || date!( 2019 -09 -01 ) . sunday_based_week( ) ) ;
115
- ben. iter( || date!( 2019 -10 -01 ) . sunday_based_week( ) ) ;
116
- ben. iter( || date!( 2019 -11 -01 ) . sunday_based_week( ) ) ;
117
- ben. iter( || date!( 2019 -12 -01 ) . sunday_based_week( ) ) ;
107
+ ben. iter( || {
108
+ for date in DATES {
109
+ black_box( date. sunday_based_week( ) ) ;
110
+ }
111
+ } ) ;
118
112
}
119
113
120
114
fn monday_based_week( ben: & mut Bencher <' _>) {
121
- ben. iter( || date!( 2019 -01 -01 ) . monday_based_week( ) ) ;
122
- ben. iter( || date!( 2019 -02 -01 ) . monday_based_week( ) ) ;
123
- ben. iter( || date!( 2019 -03 -01 ) . monday_based_week( ) ) ;
124
- ben. iter( || date!( 2019 -04 -01 ) . monday_based_week( ) ) ;
125
- ben. iter( || date!( 2019 -05 -01 ) . monday_based_week( ) ) ;
126
- ben. iter( || date!( 2019 -06 -01 ) . monday_based_week( ) ) ;
127
- ben. iter( || date!( 2019 -07 -01 ) . monday_based_week( ) ) ;
128
- ben. iter( || date!( 2019 -08 -01 ) . monday_based_week( ) ) ;
129
- ben. iter( || date!( 2019 -09 -01 ) . monday_based_week( ) ) ;
130
- ben. iter( || date!( 2019 -10 -01 ) . monday_based_week( ) ) ;
131
- ben. iter( || date!( 2019 -11 -01 ) . monday_based_week( ) ) ;
132
- ben. iter( || date!( 2019 -12 -01 ) . monday_based_week( ) ) ;
115
+ ben. iter( || {
116
+ for date in DATES {
117
+ black_box( date. monday_based_week( ) ) ;
118
+ }
119
+ } ) ;
133
120
}
134
121
135
122
fn to_calendar_date( ben: & mut Bencher <' _>) {
136
- ben. iter( || date!( 2019 -01 -01 ) . to_calendar_date( ) ) ;
137
- ben. iter( || date!( 2019 -02 -01 ) . to_calendar_date( ) ) ;
138
- ben. iter( || date!( 2019 -03 -01 ) . to_calendar_date( ) ) ;
139
- ben. iter( || date!( 2019 -04 -01 ) . to_calendar_date( ) ) ;
140
- ben. iter( || date!( 2019 -05 -01 ) . to_calendar_date( ) ) ;
141
- ben. iter( || date!( 2019 -06 -01 ) . to_calendar_date( ) ) ;
142
- ben. iter( || date!( 2019 -07 -01 ) . to_calendar_date( ) ) ;
143
- ben. iter( || date!( 2019 -08 -01 ) . to_calendar_date( ) ) ;
144
- ben. iter( || date!( 2019 -09 -01 ) . to_calendar_date( ) ) ;
145
- ben. iter( || date!( 2019 -10 -01 ) . to_calendar_date( ) ) ;
146
- ben. iter( || date!( 2019 -11 -01 ) . to_calendar_date( ) ) ;
147
- ben. iter( || date!( 2019 -12 -01 ) . to_calendar_date( ) ) ;
123
+ ben. iter( || {
124
+ for date in DATES {
125
+ black_box( date. to_calendar_date( ) ) ;
126
+ }
127
+ } ) ;
148
128
}
149
129
150
130
fn to_ordinal_date( ben: & mut Bencher <' _>) {
151
- ben. iter( || date!( 2019 -01 -01 ) . to_ordinal_date( ) ) ;
152
- ben. iter( || date!( 2019 -02 -01 ) . to_ordinal_date( ) ) ;
153
- ben. iter( || date!( 2019 -03 -01 ) . to_ordinal_date( ) ) ;
154
- ben. iter( || date!( 2019 -04 -01 ) . to_ordinal_date( ) ) ;
155
- ben. iter( || date!( 2019 -05 -01 ) . to_ordinal_date( ) ) ;
156
- ben. iter( || date!( 2019 -06 -01 ) . to_ordinal_date( ) ) ;
157
- ben. iter( || date!( 2019 -07 -01 ) . to_ordinal_date( ) ) ;
158
- ben. iter( || date!( 2019 -08 -01 ) . to_ordinal_date( ) ) ;
159
- ben. iter( || date!( 2019 -09 -01 ) . to_ordinal_date( ) ) ;
160
- ben. iter( || date!( 2019 -10 -01 ) . to_ordinal_date( ) ) ;
161
- ben. iter( || date!( 2019 -11 -01 ) . to_ordinal_date( ) ) ;
162
- ben. iter( || date!( 2019 -12 -01 ) . to_ordinal_date( ) ) ;
131
+ ben. iter( || {
132
+ for date in DATES {
133
+ black_box( date. to_ordinal_date( ) ) ;
134
+ }
135
+ } ) ;
163
136
}
164
137
165
138
fn to_iso_week_date( ben: & mut Bencher <' _>) {
166
- ben. iter( || date!( 2019 -01 -01 ) . to_iso_week_date( ) ) ;
167
- ben. iter( || date!( 2019 -02 -01 ) . to_iso_week_date( ) ) ;
168
- ben. iter( || date!( 2019 -03 -01 ) . to_iso_week_date( ) ) ;
169
- ben. iter( || date!( 2019 -04 -01 ) . to_iso_week_date( ) ) ;
170
- ben. iter( || date!( 2019 -05 -01 ) . to_iso_week_date( ) ) ;
171
- ben. iter( || date!( 2019 -06 -01 ) . to_iso_week_date( ) ) ;
172
- ben. iter( || date!( 2019 -07 -01 ) . to_iso_week_date( ) ) ;
173
- ben. iter( || date!( 2019 -08 -01 ) . to_iso_week_date( ) ) ;
174
- ben. iter( || date!( 2019 -09 -01 ) . to_iso_week_date( ) ) ;
175
- ben. iter( || date!( 2019 -10 -01 ) . to_iso_week_date( ) ) ;
176
- ben. iter( || date!( 2019 -11 -01 ) . to_iso_week_date( ) ) ;
177
- ben. iter( || date!( 2019 -12 -01 ) . to_iso_week_date( ) ) ;
139
+ ben. iter( || {
140
+ for date in DATES {
141
+ black_box( date. to_iso_week_date( ) ) ;
142
+ }
143
+ } ) ;
178
144
}
179
145
180
146
fn weekday( ben: & mut Bencher <' _>) {
181
- ben. iter( || date!( 2019 -01 -01 ) . weekday( ) ) ;
182
- ben. iter( || date!( 2019 -02 -01 ) . weekday( ) ) ;
183
- ben. iter( || date!( 2019 -03 -01 ) . weekday( ) ) ;
184
- ben. iter( || date!( 2019 -04 -01 ) . weekday( ) ) ;
185
- ben. iter( || date!( 2019 -05 -01 ) . weekday( ) ) ;
186
- ben. iter( || date!( 2019 -06 -01 ) . weekday( ) ) ;
187
- ben. iter( || date!( 2019 -07 -01 ) . weekday( ) ) ;
188
- ben. iter( || date!( 2019 -08 -01 ) . weekday( ) ) ;
189
- ben. iter( || date!( 2019 -09 -01 ) . weekday( ) ) ;
190
- ben. iter( || date!( 2019 -10 -01 ) . weekday( ) ) ;
191
- ben. iter( || date!( 2019 -11 -01 ) . weekday( ) ) ;
192
- ben. iter( || date!( 2019 -12 -01 ) . weekday( ) ) ;
147
+ ben. iter( || {
148
+ for date in DATES {
149
+ black_box( date. weekday( ) ) ;
150
+ }
151
+ } ) ;
193
152
}
194
153
195
154
fn next_day( ben: & mut Bencher <' _>) {
@@ -209,18 +168,13 @@ setup_benchmark! {
209
168
}
210
169
211
170
fn to_julian_day( ben: & mut Bencher <' _>) {
212
- ben. iter( || date!( 2019 -01 -01 ) . to_julian_day( ) ) ;
213
- ben. iter( || date!( 2019 -02 -01 ) . to_julian_day( ) ) ;
214
- ben. iter( || date!( 2019 -03 -01 ) . to_julian_day( ) ) ;
215
- ben. iter( || date!( 2019 -04 -01 ) . to_julian_day( ) ) ;
216
- ben. iter( || date!( 2019 -05 -01 ) . to_julian_day( ) ) ;
217
- ben. iter( || date!( 2019 -06 -01 ) . to_julian_day( ) ) ;
218
- ben. iter( || date!( 2019 -07 -01 ) . to_julian_day( ) ) ;
219
- ben. iter( || date!( 2019 -08 -01 ) . to_julian_day( ) ) ;
220
- ben. iter( || date!( 2019 -09 -01 ) . to_julian_day( ) ) ;
221
- ben. iter( || date!( 2019 -10 -01 ) . to_julian_day( ) ) ;
222
- ben. iter( || date!( 2019 -11 -01 ) . to_julian_day( ) ) ;
223
- ben. iter( || date!( 2019 -12 -01 ) . to_julian_day( ) ) ;
171
+ ben. iter( || {
172
+ for date in DATES {
173
+ black_box( date. to_julian_day( ) ) ;
174
+
175
+
176
+ }
177
+ } ) ;
224
178
}
225
179
// endregion getters
226
180
0 commit comments