分散情報処理の課題レポート(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)、ヘッドレス。
- 値は実行環境と実行ごとに変わる。レポートの値と完全には一致しない。