12 ポイント 投稿者 xguru 2020-06-17 | まだコメントはありません。 | WhatsAppで共有

Tonariによる「リアルタイム」ビデオ会議の実装レビュー

→ ZoomやWebRTCの遅延は315〜500ms

リアルタイム水準である130msの遅延を実現するため、WebRTCスタック75万行に手を入れるよりも、スタック全体を最初から目的のハードウェアに合わせて設計し、再実装することにした

→ セキュリティ、性能、保守性のためにRustを選択

主に使用したCrate群

→ 標準ライブラリより優れたもの: crossbeam, parking_lot, bytes, socket2

→ ログとCLIを美しく: fern, structopt

→ cargo支援ツール: cargo-release, cargo-udeps, cargo tree, cargo-geiger, cargo-flamegraph

Rustの難しい点

  • コンパイル時間が長い

  • ライブラリのカバレッジが不足

  • 最初から正確で明確なコード記述を求められる

  • 型推論器が強力すぎて、動的型付け言語を使っているように感じることがある

  • 言語が今も進化し続けている

Rustを選んだ結果

  • ソフトウェア起因のダウンタイムを経験していない

  • 効率的なリソース利用により、高性能なコードを容易に書けた

  • CPUとメモリ使用量はいずれも予測可能で一貫している

  • 一貫した遅延時間とフレームレートを保証

  • コードベースの保守体験も素晴らしい

  • 最終的に保守可能で信頼できる製品を作り上げ、フレームレート、レイテンシ、リソース効率の面で高速な性能を発揮した

→ Rustなしでは難しかっただろう

まだコメントはありません。

まだコメントはありません。