Skip to content

build(deps): update uart_16550 to 0.5#2191

Merged
mkroening merged 1 commit intomainfrom
uart_16550
Mar 24, 2026
Merged

build(deps): update uart_16550 to 0.5#2191
mkroening merged 1 commit intomainfrom
uart_16550

Conversation

@mkroening
Copy link
Copy Markdown
Member

Copy link
Copy Markdown

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark Results

Details
Benchmark Current: eefd1b8 Previous: 4c22c31 Performance Ratio
startup_benchmark Build Time 89.09 s 90.17 s 0.99
startup_benchmark File Size 0.79 MB 0.75 MB 1.06
Startup Time - 1 core 0.81 s (±0.03 s) 0.98 s (±0.03 s) 0.83
Startup Time - 2 cores 0.81 s (±0.03 s) 0.98 s (±0.03 s) 0.83
Startup Time - 4 cores 0.82 s (±0.03 s) 1.00 s (±0.03 s) 0.82
multithreaded_benchmark Build Time 89.91 s 91.64 s 0.98
multithreaded_benchmark File Size 0.85 MB 0.86 MB 0.99
Multithreaded Pi Efficiency - 2 Threads 89.58 % (±7.80 %) 89.26 % (±10.81 %) 1.00
Multithreaded Pi Efficiency - 4 Threads 44.53 % (±3.69 %) 44.92 % (±4.32 %) 0.99
Multithreaded Pi Efficiency - 8 Threads 25.83 % (±1.62 %) 25.91 % (±2.37 %) 1.00
micro_benchmarks Build Time 98.46 s 101.61 s 0.97
micro_benchmarks File Size 0.86 MB 0.86 MB 0.99
Scheduling time - 1 thread 71.20 ticks (±3.68 ticks) 67.68 ticks (±4.76 ticks) 1.05
Scheduling time - 2 threads 39.85 ticks (±3.85 ticks) 37.13 ticks (±2.98 ticks) 1.07
Micro - Time for syscall (getpid) 3.85 ticks (±0.29 ticks) 3.06 ticks (±0.21 ticks) 1.26
Memcpy speed - (built_in) block size 4096 62861.67 MByte/s (±44861.11 MByte/s) 62028.17 MByte/s (±44120.92 MByte/s) 1.01
Memcpy speed - (built_in) block size 1048576 29324.69 MByte/s (±24433.61 MByte/s) 29725.68 MByte/s (±24767.71 MByte/s) 0.99
Memcpy speed - (built_in) block size 16777216 25628.03 MByte/s (±21529.96 MByte/s) 23735.01 MByte/s (±19993.82 MByte/s) 1.08
Memset speed - (built_in) block size 4096 63252.06 MByte/s (±45096.15 MByte/s) 62645.46 MByte/s (±44535.77 MByte/s) 1.01
Memset speed - (built_in) block size 1048576 30111.28 MByte/s (±24889.04 MByte/s) 30489.41 MByte/s (±25183.33 MByte/s) 0.99
Memset speed - (built_in) block size 16777216 26370.66 MByte/s (±21982.56 MByte/s) 24493.79 MByte/s (±20492.02 MByte/s) 1.08
Memcpy speed - (rust) block size 4096 56798.32 MByte/s (±41988.54 MByte/s) 55993.21 MByte/s (±41228.70 MByte/s) 1.01
Memcpy speed - (rust) block size 1048576 29559.15 MByte/s (±24604.01 MByte/s) 29227.83 MByte/s (±24343.04 MByte/s) 1.01
Memcpy speed - (rust) block size 16777216 25611.81 MByte/s (±21530.02 MByte/s) 24332.46 MByte/s (±20458.37 MByte/s) 1.05
Memset speed - (rust) block size 4096 57187.47 MByte/s (±42174.68 MByte/s) 56758.80 MByte/s (±41669.95 MByte/s) 1.01
Memset speed - (rust) block size 1048576 30344.36 MByte/s (±25028.29 MByte/s) 29980.38 MByte/s (±24755.59 MByte/s) 1.01
Memset speed - (rust) block size 16777216 26354.96 MByte/s (±21979.91 MByte/s) 25029.32 MByte/s (±20883.16 MByte/s) 1.05
alloc_benchmarks Build Time 92.23 s 97.19 s 0.95
alloc_benchmarks File Size 0.86 MB 0.82 MB 1.05
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 6055.75 Ticks (±70.85 Ticks) 6046.09 Ticks (±67.21 Ticks) 1.00
Allocations - Average Allocation time (no fail) 6055.75 Ticks (±70.85 Ticks) 6046.09 Ticks (±67.21 Ticks) 1.00
Allocations - Average Deallocation time 840.12 Ticks (±85.96 Ticks) 833.89 Ticks (±81.37 Ticks) 1.01
mutex_benchmark Build Time 91.19 s 91.39 s 1.00
mutex_benchmark File Size 0.86 MB 0.86 MB 0.99
Mutex Stress Test Average Time per Iteration - 1 Threads 13.02 ns (±0.76 ns) 12.88 ns (±0.77 ns) 1.01
Mutex Stress Test Average Time per Iteration - 2 Threads 23.42 ns (±20.87 ns) 24.96 ns (±20.94 ns) 0.94

This comment was automatically generated by workflow using github-action-benchmark.

let mut uart = unsafe { Uart16550::new_port(base).unwrap() };
uart.init(Config::default()).unwrap();
uart.test_loopback().unwrap();
uart.check_connected().unwrap();
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please note that this will most likely fail on real hardware. Most null modem cables (for point-to-point communication) ignore the necessary lanes

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, thanks for pointing that out! I removed the checks entirely, since we don't have any fallback at the moment.

@mkroening mkroening force-pushed the uart_16550 branch 3 times, most recently from 791738a to 1255cc0 Compare March 23, 2026 09:17
@mkroening mkroening marked this pull request as ready for review March 23, 2026 09:17
@mkroening mkroening added this pull request to the merge queue Mar 24, 2026
Merged via the queue into main with commit a461fef Mar 24, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants