ベンチマーク結果

すべてのベンチマークは、E2E暗号化(AES-128-GCM)を有効にしたbleRPCファームウェアを実行するnRF54L15 DKペリフェラルに対して実施されました。MTUは247バイトにネゴシエーションされています。コネクションインターバルはプラットフォームにより異なります。

スループット比較

Python (macOS)

30.3
KB/s flash read

CI: 15ms

iOS (iPhone 16)

32.1
KB/s flash read

CI: 30ms

Android (Pixel 5)

59.0
KB/s flash read

CI: 30ms

プラットフォーム別詳細結果

Python Central (macOS, bleak)

コネクションインターバル: 15ms(macOSネゴシエーション) — テストコード

ベンチマーク結果詳細
flash_read_throughput30.3 KB/s10x 8192バイト、264.2 ms/回
flash_read_overhead60.1 ms/回1バイト x 20回
echo_roundtrip60.6 ms/回50回
data_write_throughput3.3 KB/s200バイト x 20回、59.9 ms/回
counter_stream (P→C)5.8 ms/アイテム20アイテム、117 ms
counter_upload (C→P)7.4 ms/アイテム20アイテム、147 ms
機能テスト結果詳細
echo_basicPASS
echo_emptyPASS
echo_max_lengthPASS256文字
flash_read_basicPASS16バイト
flash_read_8kbPASS8192バイト
data_write_basicPASS1024バイト
data_write_8kbPASS8192バイト
multi_container_echoPASS250文字
counter_streamPASS5アイテム
counter_stream_largePASS20アイテム
counter_uploadPASS5アイテム
counter_upload_largePASS20アイテム

iOS Central (iPhone 16, CoreBluetooth)

コネクションインターバル: 30ms(iOSネゴシエーション) — テストコード

ベンチマーク結果詳細
flash_read_throughput32.1 KB/s10x 8192バイト、249.0 ms/回
flash_read_overhead62.3 ms/回1バイト x 20回
echo_roundtrip60.0 ms/回50回
data_write_throughput3.3 KB/s200バイト x 20回、60.0 ms/回
counter_stream (P→C)6.1 ms/アイテム20アイテム、121 ms
counter_upload (C→P)4.5 ms/アイテム20アイテム、91 ms
機能テスト結果詳細
echo_basicPASS
echo_emptyPASS
flash_read_basicPASS64バイト
flash_read_8kbPASS8192バイト
data_writePASS64バイト
counter_streamPASS5アイテム
counter_uploadPASS5アイテム

Android Central (Pixel 5)

コネクションインターバル: 30ms(Androidネゴシエーション) — テストコード

ベンチマーク結果詳細
flash_read_throughput59.0 KB/s10x 8192バイト、135.7 ms/回
flash_read_overhead90.4 ms/回1バイト x 20回
echo_roundtrip62.2 ms/回50回
data_write_throughput3.2 KB/s200バイト x 20回、60.3 ms/回
counter_stream (P→C)3.7 ms/アイテム20アイテム、73 ms
counter_upload (C→P)5.1 ms/アイテム20アイテム、101 ms
機能テスト結果詳細
echo_basicPASS
echo_emptyPASS
flash_read_basicPASS64バイト
flash_read_8kbPASS8192バイト
data_writePASS64バイト
counter_streamPASS5アイテム
counter_uploadPASS5アイテム

パフォーマンスに関する注記

コネクションインターバルの影響

コネクションインターバル(CI)は、ラウンドトリップレイテンシの主要な要因です。各リクエスト・レスポンスサイクルには、最低2つのコネクションイベントが必要です:

ペリフェラルは推奨CIを15〜30ms(PREF_MIN_INT=12, PREF_MAX_INT=24)でアドバタイズします。実際のCIはCentral側のOSによって決定されます。

暗号化のオーバーヘッド

E2E暗号化はトランザクションあたり20バイトのオーバーヘッドを追加します(4バイトのカウンター + 16バイトのAES-GCMタグ)。大きなペイロード(8 KB)の場合、このオーバーヘッドは無視できる程度です(0.3%未満)。AES-128-GCMの暗号化/復号自体は、最新のモバイルデバイスではハードウェアアクセラレーションされ、8 KBのペイロードでも1ms未満で完了

スループット最適化