1
- use bencher:: black_box;
2
1
use codspeed_bencher_compat:: { benchmark_group, benchmark_main, Bencher } ;
2
+ use std:: hint:: black_box;
3
3
4
4
use std:: fs:: File ;
5
5
use std:: io:: Read ;
@@ -28,25 +28,21 @@ fn jiter_iter_big(path: &str, bench: &mut Bencher) {
28
28
let json_data = black_box ( json. as_bytes ( ) ) ;
29
29
bench. iter ( || {
30
30
let mut jiter = Jiter :: new ( json_data, false ) ;
31
- let mut v_outer = Vec :: new ( ) ;
32
31
jiter. next_array ( ) . unwrap ( ) ;
33
32
34
33
loop {
35
- let mut v_inner = Vec :: new ( ) ;
36
34
if let Some ( peak) = jiter. next_array ( ) . unwrap ( ) {
37
35
let i = jiter. known_float ( peak) . unwrap ( ) ;
38
- v_inner . push ( i) ;
36
+ black_box ( i) ;
39
37
while let Some ( peak) = jiter. array_step ( ) . unwrap ( ) {
40
38
let i = jiter. known_float ( peak) . unwrap ( ) ;
41
- v_inner . push ( i) ;
39
+ black_box ( i) ;
42
40
}
43
41
}
44
- v_outer. push ( v_inner) ;
45
42
if jiter. array_step ( ) . unwrap ( ) . is_none ( ) {
46
43
break ;
47
44
}
48
45
}
49
- black_box ( v_outer)
50
46
} )
51
47
}
52
48
@@ -80,17 +76,15 @@ fn jiter_iter_string_array(path: &str, bench: &mut Bencher) {
80
76
let json_data = black_box ( json. as_bytes ( ) ) ;
81
77
bench. iter ( || {
82
78
let mut jiter = Jiter :: new ( json_data, false ) ;
83
- let mut v = Vec :: new ( ) ;
84
79
jiter. next_array ( ) . unwrap ( ) ;
85
80
let i = jiter. known_str ( ) . unwrap ( ) ;
86
81
// record len instead of allocating the string to simulate something like constructing a PyString
87
- v . push ( i. len ( ) ) ;
82
+ black_box ( i. len ( ) ) ;
88
83
while jiter. array_step ( ) . unwrap ( ) . is_some ( ) {
89
84
let i = jiter. known_str ( ) . unwrap ( ) ;
90
- v . push ( i. len ( ) ) ;
85
+ black_box ( i. len ( ) ) ;
91
86
}
92
87
jiter. finish ( ) . unwrap ( ) ;
93
- black_box ( v)
94
88
} )
95
89
}
96
90
@@ -99,15 +93,13 @@ fn jiter_iter_true_array(path: &str, bench: &mut Bencher) {
99
93
let json_data = black_box ( json. as_bytes ( ) ) ;
100
94
bench. iter ( || {
101
95
let mut jiter = Jiter :: new ( json_data, false ) ;
102
- let mut v = Vec :: new ( ) ;
103
96
let first_peak = jiter. next_array ( ) . unwrap ( ) . unwrap ( ) ;
104
97
let i = jiter. known_bool ( first_peak) . unwrap ( ) ;
105
- v . push ( i) ;
98
+ black_box ( i) ;
106
99
while let Some ( peak) = jiter. array_step ( ) . unwrap ( ) {
107
100
let i = jiter. known_bool ( peak) . unwrap ( ) ;
108
- v . push ( i) ;
101
+ black_box ( i) ;
109
102
}
110
- black_box ( v)
111
103
} )
112
104
}
113
105
@@ -116,18 +108,16 @@ fn jiter_iter_true_object(path: &str, bench: &mut Bencher) {
116
108
let json_data = black_box ( json. as_bytes ( ) ) ;
117
109
bench. iter ( || {
118
110
let mut jiter = Jiter :: new ( json_data, false ) ;
119
- let mut v = Vec :: new ( ) ;
120
111
if let Some ( first_key) = jiter. next_object ( ) . unwrap ( ) {
121
112
let first_key = first_key. to_string ( ) ;
122
113
let first_value = jiter. next_bool ( ) . unwrap ( ) ;
123
- v . push ( ( first_key, first_value) ) ;
114
+ black_box ( ( first_key, first_value) ) ;
124
115
while let Some ( key) = jiter. next_key ( ) . unwrap ( ) {
125
116
let key = key. to_string ( ) ;
126
117
let value = jiter. next_bool ( ) . unwrap ( ) ;
127
- v . push ( ( key, value) ) ;
118
+ black_box ( ( key, value) ) ;
128
119
}
129
120
}
130
- black_box ( v)
131
121
} )
132
122
}
133
123
@@ -136,15 +126,13 @@ fn jiter_iter_ints_array(path: &str, bench: &mut Bencher) {
136
126
let json_data = black_box ( json. as_bytes ( ) ) ;
137
127
bench. iter ( || {
138
128
let mut jiter = Jiter :: new ( json_data, false ) ;
139
- let mut v = Vec :: new ( ) ;
140
129
let first_peak = jiter. next_array ( ) . unwrap ( ) . unwrap ( ) ;
141
130
let i = jiter. known_int ( first_peak) . unwrap ( ) ;
142
- v . push ( i) ;
131
+ black_box ( i) ;
143
132
while let Some ( peak) = jiter. array_step ( ) . unwrap ( ) {
144
133
let i = jiter. known_int ( peak) . unwrap ( ) ;
145
- v . push ( i) ;
134
+ black_box ( i) ;
146
135
}
147
- black_box ( v)
148
136
} )
149
137
}
150
138
@@ -153,15 +141,13 @@ fn jiter_iter_floats_array(path: &str, bench: &mut Bencher) {
153
141
let json_data = black_box ( json. as_bytes ( ) ) ;
154
142
bench. iter ( || {
155
143
let mut jiter = Jiter :: new ( json_data, false ) ;
156
- let mut v = Vec :: new ( ) ;
157
144
let first_peak = jiter. next_array ( ) . unwrap ( ) . unwrap ( ) ;
158
145
let i = jiter. known_float ( first_peak) . unwrap ( ) ;
159
- v . push ( i) ;
146
+ black_box ( i) ;
160
147
while let Some ( peak) = jiter. array_step ( ) . unwrap ( ) {
161
148
let i = jiter. known_float ( peak) . unwrap ( ) ;
162
- v . push ( i) ;
149
+ black_box ( i) ;
163
150
}
164
- black_box ( v)
165
151
} )
166
152
}
167
153
0 commit comments