Benchmark Results

All benchmarks were performed against a nRF54L15 DK peripheral running bleRPC firmware. MTU was negotiated to 247 bytes. Connection interval varies by platform.

Throughput Comparison

Python (macOS)

30.3
KB/s flash read

CI: 15ms

iOS (iPhone 16)

26.4
KB/s flash read

CI: 30ms

Android (Pixel 5)

56.7
KB/s flash read

CI: 30ms

Detailed Results by Platform

Python Central (macOS, bleak)

Connection interval: 15ms (macOS negotiation)

TestResultDetails
flash_read_throughput30.3 KB/s10x 8192 bytes, 273 ms/call
flash_read_overhead34.2 ms/call1 byte x 20 calls
echo_basicPASS
echo_emptyPASS
echo_max_lengthPASS256-char string
flash_read_basicPASS64 bytes
flash_read_8kbPASS8192 bytes
multi_container_echoPASSMulti-container request

iOS Central (iPhone 16, CoreBluetooth)

Connection interval: 30ms (iOS negotiation)

TestResultDetails
flash_read_throughput26.4 KB/s10x 8192 bytes, 302.8 ms/call
flash_read_overhead59.9 ms/call1 byte x 20 calls
echo_roundtrip60.0 ms/call50 calls
data_write_throughput3.3 KB/s200 bytes x 20 calls, 60.0 ms/call
counter_stream (P→C)6.1 ms/item20 items in 123ms
counter_upload (C→P)5.9 ms/item20 items in 118ms
echo_basicPASS
echo_emptyPASS
flash_read_basicPASS64 bytes
flash_read_8kbPASS8192 bytes
data_writePASS64 bytes
counter_streamPASS5 items
counter_uploadPASS5 items

Android Central (Pixel 5)

Connection interval: 30ms (Android negotiation)

TestResultDetails
flash_read_throughput56.7 KB/s10x 8192 bytes, 141.0 ms/call
flash_read_overhead90.1 ms/call1 byte x 20 calls
echo_roundtrip62.1 ms/call50 calls
data_write_throughput3.2 KB/s200 bytes x 20 calls, 61.8 ms/call
counter_stream (P→C)3.2 ms/item20 items in 64ms
counter_upload (C→P)5.5 ms/item20 items in 110ms
echo_basicPASS
echo_emptyPASS
flash_read_basicPASS64 bytes
flash_read_8kbPASS8192 bytes
data_writePASS64 bytes
counter_streamPASS5 items
counter_uploadPASS5 items

Performance Notes

Connection Interval Impact

The connection interval (CI) is the primary factor in round-trip latency. Each request–response cycle requires at least 2 connection events:

The peripheral advertises preferred CI of 15–30ms (PREF_MIN_INT=12, PREF_MAX_INT=24). The actual CI is determined by the Central’s OS.

Throughput Optimizations