benchmark/
benchmark.rs

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}