Open5

nest: ベンチマークの作成

okuokuokuoku

ちょっと dataChannel のパフォーマンスが不安なのでベンチマークしてみることにする。

今回は Webブラウザ → デバイス方向を計測する。デバイス → Webブラウザはまぁ後廻しで。。

  • 1メッセージ = 16000 バイト
  • Low watermark = 320000 バイト (20メッセージ) - WebRTCはlow watermarkコールバックを提供する
  • バッファサイズ = 3200000 バイト (200メッセージ) - 最初の接続時にこれだけバッファしておき、以降はlow watermarkイベントで補充する
okuokuokuoku

微妙

うーん。。ローカル同士で25MiB/sec。。FirefoxとEdgeではパフォーマンスに差は無かった。

ちなみにiOSだと直ぐ止まってしまう。これはtabであんまりCPU使うとダメな奴かな。。要デバッグ。

okuokuokuoku

最新の iOS 実機でbufferedamountlowが発火しない問題

iOSのSafariでは、接続直後に送った 3200000 バイト以降通信が進捗しない現象が観察された。

つまりバッファを埋め切れなかったって事か。。 bufferedAmount を見て watermark を超えるまでキューしないとダメって事かな。

これはどうも 最新のSafariのバグ っぽい。つまり、 bufferedamountlow イベントが何故か設定した bufferedAmountLowThreshold を下回っても発火しないようだ。 iOS 15の実機では正常に動作した。

...手元のmacは当初は動作していたものの、Sonomaにアップデートしたら動かなくなった。

https://github.com/okuoku/fnest-proto/blob/e3a82c1e251b1595677a85c97495266c3eed19cb/test_bandwidth_browser.mjs#L9-L14

bufferedAmount を見て適当な閾値を超えるまでキューする というロジックにしても発火しない。