Upgrade to Pro — share decks privately, control downloads, hide ads and more …

My First WASM Challenge: Building a School of F...

Avatar for Tokachi269 Tokachi269
October 28, 2025
59

My First WASM Challenge: Building a School of Fish Simulation

Avatar for Tokachi269

Tokachi269

October 28, 2025

Transcript

  1. • JavaScript と C++(WASM)はメモリ管理も型も別物 → JSは動的型付け言語であり、WASMは静的型付け言語のため呼び 出すたびに型変換・安全チェックが発生する。 • ccall/cwrapのラッパーが関数登録や例外処理を毎回行う →

    呼び出しごとに変換・例外処理が走るため、小さい関数を大量に呼 ぶと遅くなる。 • JIT最適化が効かない → 境界部分はJIT最適化の対象外? • 1回あたりは軽くても数が膨大 原因 最初の壁 ― JavaScript↔WASMの境界
  2. • データ構造 → SoA化(Structure of Arrays)でキャッシュ効率UP • 探索処理 → KD-treeで近傍探索

    • メモリ管理 → 固定ヒープで再確保を防止 • 処理の間引き → 重い処理を数フレームに1回に実行して負荷分散 • 並列化 → WebAssembly Threads+スレッドプール化 内部最適化