1use digit_layout::DigitLayout;
2use std::hint::black_box;
3use std::time::Instant;
4
5fn main() {
6 println!("Starting performance test...");
7 println!();
8 println!("Testing layout creation:");
9
10 let start = Instant::now();
11 for _ in 0..5 {
12 black_box(DigitLayout::unsigned(8, 1));
13 black_box(DigitLayout::unsigned(16, 1));
14 black_box(DigitLayout::unsigned(32, 1));
15 black_box(DigitLayout::unsigned(64, 1));
16 }
17 let duration = start.elapsed();
18 println!("Creating unsigned integer layouts: {:?}", duration / 20);
19
20 let start = Instant::now();
21 for _ in 0..5 {
22 black_box(DigitLayout::real(5, 10, 1));
23 black_box(DigitLayout::real(8, 23, 1));
24 black_box(DigitLayout::real(11, 52, 1));
25 }
26 let duration = start.elapsed();
27 println!("Creating floating point layouts: {:?}", duration / 15);
28
29 let start = Instant::now();
30 for _ in 0..5 {
31 black_box(DigitLayout::named("custom", 1, 4));
32 }
33 let duration = start.elapsed();
34 println!("Creating custom layouts: {:?}", duration / 5);
35 println!();
36 println!("Testing layout decoding:");
37
38 let u8_layout = DigitLayout::unsigned(8, 1);
39 let f32_layout = DigitLayout::real(8, 23, 1);
40 let custom_layout = DigitLayout::named("custom", 1, 4);
41
42 let start = Instant::now();
43 for _ in 0..5 {
44 black_box(u8_layout.decode());
45 }
46 let duration = start.elapsed();
47 println!("Decoding unsigned integer layouts: {:?}", duration / 5);
48
49 let start = Instant::now();
50 for _ in 0..5 {
51 black_box(f32_layout.decode());
52 }
53 let duration = start.elapsed();
54 println!("Decoding floating point layouts: {:?}", duration / 5);
55
56 let start = Instant::now();
57 for _ in 0..5 {
58 black_box(custom_layout.decode());
59 }
60 let duration = start.elapsed();
61 println!("Decoding custom layouts: {:?}", duration / 5);
62}