Skip to content

Commit 36b2354

Browse files
authored
avoid measuring allocation in jiter iter benches (#46)
1 parent f6739a8 commit 36b2354

File tree

1 file changed

+13
-27
lines changed

1 file changed

+13
-27
lines changed

benches/main.rs

+13-27
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
use bencher::black_box;
21
use codspeed_bencher_compat::{benchmark_group, benchmark_main, Bencher};
2+
use std::hint::black_box;
33

44
use std::fs::File;
55
use std::io::Read;
@@ -28,25 +28,21 @@ fn jiter_iter_big(path: &str, bench: &mut Bencher) {
2828
let json_data = black_box(json.as_bytes());
2929
bench.iter(|| {
3030
let mut jiter = Jiter::new(json_data, false);
31-
let mut v_outer = Vec::new();
3231
jiter.next_array().unwrap();
3332

3433
loop {
35-
let mut v_inner = Vec::new();
3634
if let Some(peak) = jiter.next_array().unwrap() {
3735
let i = jiter.known_float(peak).unwrap();
38-
v_inner.push(i);
36+
black_box(i);
3937
while let Some(peak) = jiter.array_step().unwrap() {
4038
let i = jiter.known_float(peak).unwrap();
41-
v_inner.push(i);
39+
black_box(i);
4240
}
4341
}
44-
v_outer.push(v_inner);
4542
if jiter.array_step().unwrap().is_none() {
4643
break;
4744
}
4845
}
49-
black_box(v_outer)
5046
})
5147
}
5248

@@ -80,17 +76,15 @@ fn jiter_iter_string_array(path: &str, bench: &mut Bencher) {
8076
let json_data = black_box(json.as_bytes());
8177
bench.iter(|| {
8278
let mut jiter = Jiter::new(json_data, false);
83-
let mut v = Vec::new();
8479
jiter.next_array().unwrap();
8580
let i = jiter.known_str().unwrap();
8681
// record len instead of allocating the string to simulate something like constructing a PyString
87-
v.push(i.len());
82+
black_box(i.len());
8883
while jiter.array_step().unwrap().is_some() {
8984
let i = jiter.known_str().unwrap();
90-
v.push(i.len());
85+
black_box(i.len());
9186
}
9287
jiter.finish().unwrap();
93-
black_box(v)
9488
})
9589
}
9690

@@ -99,15 +93,13 @@ fn jiter_iter_true_array(path: &str, bench: &mut Bencher) {
9993
let json_data = black_box(json.as_bytes());
10094
bench.iter(|| {
10195
let mut jiter = Jiter::new(json_data, false);
102-
let mut v = Vec::new();
10396
let first_peak = jiter.next_array().unwrap().unwrap();
10497
let i = jiter.known_bool(first_peak).unwrap();
105-
v.push(i);
98+
black_box(i);
10699
while let Some(peak) = jiter.array_step().unwrap() {
107100
let i = jiter.known_bool(peak).unwrap();
108-
v.push(i);
101+
black_box(i);
109102
}
110-
black_box(v)
111103
})
112104
}
113105

@@ -116,18 +108,16 @@ fn jiter_iter_true_object(path: &str, bench: &mut Bencher) {
116108
let json_data = black_box(json.as_bytes());
117109
bench.iter(|| {
118110
let mut jiter = Jiter::new(json_data, false);
119-
let mut v = Vec::new();
120111
if let Some(first_key) = jiter.next_object().unwrap() {
121112
let first_key = first_key.to_string();
122113
let first_value = jiter.next_bool().unwrap();
123-
v.push((first_key, first_value));
114+
black_box((first_key, first_value));
124115
while let Some(key) = jiter.next_key().unwrap() {
125116
let key = key.to_string();
126117
let value = jiter.next_bool().unwrap();
127-
v.push((key, value));
118+
black_box((key, value));
128119
}
129120
}
130-
black_box(v)
131121
})
132122
}
133123

@@ -136,15 +126,13 @@ fn jiter_iter_ints_array(path: &str, bench: &mut Bencher) {
136126
let json_data = black_box(json.as_bytes());
137127
bench.iter(|| {
138128
let mut jiter = Jiter::new(json_data, false);
139-
let mut v = Vec::new();
140129
let first_peak = jiter.next_array().unwrap().unwrap();
141130
let i = jiter.known_int(first_peak).unwrap();
142-
v.push(i);
131+
black_box(i);
143132
while let Some(peak) = jiter.array_step().unwrap() {
144133
let i = jiter.known_int(peak).unwrap();
145-
v.push(i);
134+
black_box(i);
146135
}
147-
black_box(v)
148136
})
149137
}
150138

@@ -153,15 +141,13 @@ fn jiter_iter_floats_array(path: &str, bench: &mut Bencher) {
153141
let json_data = black_box(json.as_bytes());
154142
bench.iter(|| {
155143
let mut jiter = Jiter::new(json_data, false);
156-
let mut v = Vec::new();
157144
let first_peak = jiter.next_array().unwrap().unwrap();
158145
let i = jiter.known_float(first_peak).unwrap();
159-
v.push(i);
146+
black_box(i);
160147
while let Some(peak) = jiter.array_step().unwrap() {
161148
let i = jiter.known_float(peak).unwrap();
162-
v.push(i);
149+
black_box(i);
163150
}
164-
black_box(v)
165151
})
166152
}
167153

0 commit comments

Comments
 (0)