AgentSkillsCN

wasm-optimizer

可检测JS/TS代码中的繁重计算模式,并针对WebAssembly(WASM)及其他高性能替代库提出优化建议。“利用WASM加速”“提升性能”“优化繁重计算”“Canvas处理速度慢”“JSON.parse效率低”“寻找crypto-js的替代方案”,以及在图像处理、加密解密、数值计算、数据压缩、海量数据操作等场景下提升性能的相关问题时均可使用。

SKILL.md
--- frontmatter
name: wasm-optimizer
description: JS/TSコードの重い処理パターンを検出し、WebAssembly (WASM) やその他の高速代替ライブラリへの最適化を提案する。「WASMで高速化」「パフォーマンス改善」「重い処理を最適化」「Canvas処理が遅い」「JSON.parseが遅い」「crypto-jsの代替」や、画像処理、暗号化、数値計算、圧縮、大量データ操作のパフォーマンス改善に関する質問時に使用する。
globs:
  - "**/*.js"
  - "**/*.ts"
  - "**/*.tsx"
  - "**/*.jsx"
  - "**/*.mjs"

WebAssembly Optimization Guide

JS/TS コードに含まれる重い処理パターンを検出し、WebAssembly ベースのライブラリへの置き換えを提案する。

重い処理パターンと WASM 代替ライブラリ

パターン検出シグナルWASM 代替期待改善
画像処理Canvas, ImageData, getPixel ループwasm-vips, @squoosh/lib5-20x
暗号化CryptoJS, crypto-js, 手動ハッシュlibsodium-wrappers (WASM), @noble/hashes (純JS高速)3-10x
JSON 大量パースループ内 JSON.parse, 巨大 JSONsimd_json_wasm2-5x
文字列距離計算Levenshtein, editDistance, diffwasm-pack カスタム Rust ビルド10-50x
行列演算3重ループ (i,j,k), 行列積@stdlib/stdlib WASM, wasm-pack5-20x
圧縮/展開pako, zlib, gzip 処理fflate (純JS高速), brotli-wasm (WASM)2-8x
XML パースDOMParser ループ, xml2jsfast-xml-parser (WASM版)2-5x
数値計算大量 Math.*, ループ内演算wasm-pack Rust ビルド5-30x

パターン検出の判断基準

以下の条件に該当する場合、WASM 最適化の候補とする:

  1. ネストループ(深さ >= 2) でデータ処理を行っている
  2. Canvas API (getImageData, putImageData, ピクセル操作) を使用
  3. crypto-js / CryptoJS を import している
  4. ループ内で JSON.parse を呼び出している
  5. 手動実装の文字列距離関数 (Levenshtein, Hamming, Jaro-Winkler)
  6. 3重ループの行列演算 (result[i][j] += a[i][k] * b[k][j])
  7. 大量データの sort/filter/reduce (1万件以上が見込まれる)

提案時の注意事項

  • WASM は初回ロードのオーバーヘッドがあるため、頻繁に呼ばれる処理 に限定して提案
  • バンドルサイズへの影響を必ず言及
  • dynamic import + Web Worker の組み合わせを推奨
  • 既存のテストがある場合、移行後もテストがパスすることを確認するよう促す

詳細ドキュメント