ブラウザのメインスレッドは高コストなリソース

Judul asli: The Browser's Main Thread Is Expensive

Mengapa Ini Penting

メインスレッド最適化はインタラクティブな高負荷UIの品質に直結する重要な技術課題である。

ブラウザのメインスレッドはJavaScript実行とレンダリングを担い、60Hzで約10ms、120Hzで約5msの予算しかなく、ブロックされるとjanが発生する。

ブラウザのメインスレッドは、JavaScript実行、イベント処理、ネットワークレスポンス処理、フレームワーク内部処理に加え、スタイル計算、レイアウト、ペイントといった画面描画パイプラインのほぼすべてを担当する。コンポジティングのみがコンポジタースレッドに委ねられる。

60Hzディスプレイでは1フレームあたり約16.6ミリ秒、ブラウザ自身の処理コストを差し引くと実質的な予算は約10ミリ秒となる。120Hzデバイスではこの予算がさらに半減する。

メインスレッドがブロックされると、スクロールのカクつき、ボタンの遅延応答、テキスト入力の遅延といったjanが発生する。記事では「コードが遅いのではなく、そのコードがメインスレッドを占有していることが問題」と指摘する。

対策として、作業の分割(Splitting)、バッチ処理(Batching)、優先度付け(Prioritizing)、遅延実行(Deferring)、コンポジタースレッドへの移行、Web Workerへのオフロード、処理そのものの削減が挙げられている。

Sumber

kciter.so — Baca artikel asli →