refactor(mmio): deduplicate code and avoid allocation by cagatay-y · Pull Request #2319 · hermit-os/kernel

startup_benchmark Build Time 88.65 s 89.35 s 0.99 ❗ startup_benchmark File Size 0.79 MB 0.79 MB 1.00 ❗ Startup Time - 1 core 0.79 s (±0.03 s) 0.81 s (±0.03 s) 0.97 Startup Time - 2 cores 0.81 s (±0.03 s) 0.82 s (±0.03 s) 1.00 Startup Time - 4 cores 0.81 s (±0.03 s) 0.83 s (±0.02 s) 0.98 multithreaded_benchmark Build Time 90.93 s 92.62 s 0.98 ❗ multithreaded_benchmark File Size 0.89 MB 0.89 MB 1.00 ❗ Multithreaded Pi Efficiency - 2 Threads 90.22 % (±5.66 %) 90.72 % (±8.59 %) 0.99 Multithreaded Pi Efficiency - 4 Threads 44.43 % (±2.90 %) 44.88 % (±4.39 %) 0.99 Multithreaded Pi Efficiency - 8 Threads 26.46 % (±1.94 %) 25.87 % (±3.25 %) 1.02 micro_benchmarks Build Time 99.86 s 100.57 s 0.99 ❗ micro_benchmarks File Size 0.90 MB 0.90 MB 1.00 ❗ Scheduling time - 1 thread 74.49 ticks (±5.07 ticks) 74.98 ticks (±4.47 ticks) 0.99 Scheduling time - 2 threads 41.09 ticks (±5.15 ticks) 40.19 ticks (±4.30 ticks) 1.02 Micro - Time for syscall (getpid) 3.06 ticks (±0.30 ticks) 2.97 ticks (±0.23 ticks) 1.03 Memcpy speed - (built_in) block size 4096 73950.75 MByte/s (±51226.88 MByte/s) 76264.90 MByte/s (±52720.43 MByte/s) 0.97 Memcpy speed - (built_in) block size 1048576 30572.57 MByte/s (±25234.79 MByte/s) 30292.34 MByte/s (±24927.05 MByte/s) 1.01 Memcpy speed - (built_in) block size 16777216 23033.40 MByte/s (±19187.67 MByte/s) 23336.56 MByte/s (±19347.79 MByte/s) 0.99 Memset speed - (built_in) block size 4096 73770.54 MByte/s (±51131.54 MByte/s) 76939.35 MByte/s (±53180.56 MByte/s) 0.96 Memset speed - (built_in) block size 1048576 31337.26 MByte/s (±25668.42 MByte/s) 31021.82 MByte/s (±25328.96 MByte/s) 1.01 Memset speed - (built_in) block size 16777216 23797.03 MByte/s (±19734.93 MByte/s) 24084.23 MByte/s (±19864.53 MByte/s) 0.99 Memcpy speed - (rust) block size 4096 64507.64 MByte/s (±45028.30 MByte/s) 67864.13 MByte/s (±47549.43 MByte/s) 0.95 Memcpy speed - (rust) block size 1048576 30323.53 MByte/s (±24954.00 MByte/s) 30092.92 MByte/s (±24855.28 MByte/s) 1.01 Memcpy speed - (rust) block size 16777216 22946.63 MByte/s (±19092.15 MByte/s) 23650.21 MByte/s (±19669.17 MByte/s) 0.97 Memset speed - (rust) block size 4096 64519.77 MByte/s (±45035.72 MByte/s) 67668.78 MByte/s (±47427.13 MByte/s) 0.95 Memset speed - (rust) block size 1048576 31080.49 MByte/s (±25383.36 MByte/s) 30783.24 MByte/s (±25249.62 MByte/s) 1.01 Memset speed - (rust) block size 16777216 23716.00 MByte/s (±19649.09 MByte/s) 24398.50 MByte/s (±20179.80 MByte/s) 0.97 alloc_benchmarks Build Time 96.84 s 96.87 s 1.00 ❗ alloc_benchmarks File Size 0.86 MB 0.86 MB 1.00 ❗ Allocations - Allocation success 100.00 % 100.00 % 1 Allocations - Deallocation success 100.00 % 100.00 % 1 Allocations - Pre-fail Allocations 100.00 % 100.00 % 1 Allocations - Average Allocation time 6481.22 Ticks (±86.15 Ticks) 5277.51 Ticks (±516.92 Ticks) 1.23 ❗ Allocations - Average Allocation time (no fail) 6481.22 Ticks (±86.15 Ticks) 5277.51 Ticks (±516.92 Ticks) 1.23 ❗ Allocations - Average Deallocation time 1243.24 Ticks (±113.29 Ticks) 959.09 Ticks (±254.64 Ticks) 1.30 ❗ mutex_benchmark Build Time 90.11 s 91.13 s 0.99 ❗ mutex_benchmark File Size 0.90 MB 0.90 MB 1.00 ❗ Mutex Stress Test Average Time per Iteration - 1 Threads 13.06 ns (±0.73 ns) 13.26 ns (±0.96 ns) 0.98 Mutex Stress Test Average Time per Iteration - 2 Threads 19.60 ns (±10.77 ns) 20.28 ns (±12.66 ns) 0.97