タグ

ブックマーク / nhiroki.jp (5)

  • Chrome 69 で Web Worker から Web Worker を作れるようになった話

    少し前のバージョンですが、Chrome 69 より Web Worker から Web Worker を作れるようになりました。この機能は Nested Workers とも呼ばれています。 Nested Dedicated Workers - Chrome Platform Status Intent to Implement and Ship: Nested dedicated workers - blink-dev 使用方法とユースケース 使い方は Window 上で Worker を作る場合と同じです。次のコードでは、Window から Parent Worker、Parent Worker から Child Worker を作り、postMessage() で Child Worker から Window までメッセージを送信します。 // index.html const wo

    Chrome 69 で Web Worker から Web Worker を作れるようになった話
  • ネットワーク API のメインスレッド依存をなくす話

    私は主に WebSocket のメインスレッド依存を取り除く作業を担当しました。依存を取り除いた結果、メインスレッドがそこそこ忙しい状況を再現した簡易的なベンチマークのスループットが二倍になったという報告があります。現実のアプリケーションではそこまでの性能は出ないと思いますが、いずれにせよメインスレッド依存を取り除くことで Web Worker 上でのネットワーク API の性能向上が見込めそうです。 未来 ネットワーク処理の中でも特にスクリプトローディングの off-the-main-thread 化が実現することで、Web Worker の起動をメインスレッド非依存で行えるようになり、スケーラビリティの向上や Worker 起動にかかる遅延を抑えることができます。特に Service Worker の起動が早くなると、ナビゲーションからレスポンスを返すまでの時間を削減することができます

    ネットワーク API のメインスレッド依存をなくす話
  • ウェブブラウザの off-the-main-thread API の話

    ウェブブラウザにおいてメインスレッドはとても重要なリソースです。なるべくメインスレッドを使える状態にしておくことが滑らかな UI/UX を実現する上で重要になります。しかし、実際には多くの処理が実装上の理由やブラウザ仕様の不足によりメインスレッドでしか動かせないため、メインスレッドは忙しくなりがちです。特にページロード時は JavaScript の実行やリソース読み込みなどでとても忙しくなります。 とあるページの perf プロファイル。メインスレッドでせわしなく処理が行われている様子が分かる。 これを解消するために、ブラウザの処理をメインスレッド以外 (off-the-main-thread) でも実行できるようにする試みが行われています。 1. Off-the-main-thread とは メインスレッド以外のスレッドに処理を委譲することを off-the-main-thread と呼

    ウェブブラウザの off-the-main-thread API の話
  • Service Worker スクリプトのインストールと更新処理

    Service Worker の実装が主要ブラウザで揃い始めて盛り上がってきましたね。その流れに便乗して久しぶりに Service Worker の仕様や実装に関する記事を書いてみました。今回は Service Worker スクリプトのインストールと更新処理についてです。 この記事は Service Worker スクリプトを少しでも手書きして動かしたことがある人を想定読者にしています。Service Worker について全く知らない人はまず別の入門記事を参照してください。また、細かいことを気にせずに Service Worker を使いたい人は Workbox といったライブラリやフレームワークの利用をおすすめします。 更新履歴 2019/09/24: Chrome 78 から importScripts() も更新対象になりました。それについて加筆しました。 2018/06/07:

    Service Worker スクリプトのインストールと更新処理
  • JavaScript のスレッド並列実行環境

    これは Chromium Browser アドベントカレンダーの十日目の記事です。記事では Chromium における JavaScript のスレッド並列実行環境について仕様・実装・API の面から包括的に紹介します。ブラウザの内部実装に興味がある人を対象に、各機能の使い方ではなく実行モデルに焦点を当てて説明しているため、難易度は高いです。使い方を知りたい人は MDN などの記事を読んでください。この記事をきっかけに実装解読に挑戦してみる人が一人でも増えると幸いです。 記事を書くにあたり、yuki3 さんに多くのコメントをいただき、議論に付き合っていただきました。ありがとうございました。なお、文責はすべて私 (nhiroki) にあります。誤りや補足、質問などは気軽に GitHub Issue もしくは Twitter へお寄せください。 更新履歴 2018/01/15 Layout

    JavaScript のスレッド並列実行環境
  • 1