Skip to content

Commit a1a04e0

Browse files
committed
add transmute-via-iterators bench
1 parent f826641 commit a1a04e0

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

library/alloc/benches/vec.rs

+16
Original file line numberDiff line numberDiff line change
@@ -548,6 +548,22 @@ fn bench_in_place_zip_iter_mut(b: &mut Bencher) {
548548
black_box(data);
549549
}
550550

551+
pub fn vec_cast<T, U>(input: Vec<T>) -> Vec<U> {
552+
input.into_iter().map(|e| unsafe { std::mem::transmute_copy(&e) }).collect()
553+
}
554+
555+
#[bench]
556+
fn bench_transmute(b: &mut Bencher) {
557+
let mut vec = vec![10u32; 100];
558+
b.bytes = 800; // 2 casts x 4 bytes x 100
559+
b.iter(|| {
560+
let v = std::mem::take(&mut vec);
561+
let v = black_box(vec_cast::<u32, i32>(v));
562+
let v = black_box(vec_cast::<i32, u32>(v));
563+
vec = v;
564+
});
565+
}
566+
551567
#[derive(Clone)]
552568
struct Droppable(usize);
553569

0 commit comments

Comments
 (0)