Skip to content

About

Browser multithreading experiments (Web Worker, SharedArrayBuffer, Atomics)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

thread-sync-experiment

分散情報処理の課題レポート(Webブラウザのマルチスレッド処理)で使った実験コードです。

実験

  • 実験1: 1,000ms間CPUを占有する計算を、メインスレッドで実行した場合とWorkerで実行した場合で、描画回数(requestAnimationFrame)と入力応答遅延を比べる。
  • 実験2: 4つのWorkerが共有カウンタ(SharedArrayBuffer)へ100,000回ずつ+1する。同期なし(view[0] = view[0] + 1)とAtomics.addで、最終値と所要時間を比べる。

各条件を5回試行し、算術平均を標準出力にJSONで出力する(各試行の値はrawSingle、rawMulti、rawNoLock、rawAtomics)。

実行方法

Microsoft Edgeがインストールされた環境で次を実行する。

npm install
node run_experiment.mjs > results.json
  • SharedArrayBufferを使うため、スクリプト内でテストページにCross-Origin-Opener-Policy: same-originとCross-Origin-Embedder-Policy: require-corpを付けて配信している(サーバの用意は不要)。
  • レポートの実行環境: Windows 11、論理12コア、Microsoft Edge 156(Chromium)、ヘッドレス。
  • 値は実行環境と実行ごとに変わる。レポートの値と完全には一致しない。

About

Browser multithreading experiments (Web Worker, SharedArrayBuffer, Atomics)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages