Fullmoon Core Engine:ビルド・レンダリング最適化の設計ノート
ビルド時のバンドル最適化と、ブラウザー実行時の処理の分離を区別して測定するウェブ性能の設計です。
1. ビルド時間と実行時間を区別する
この文書は、ウェブのビルドとレンダリング最適化の設計ノートです。RustやWebAssemblyを導入しただけで、アプリ全体が高速化するわけではありません。まずバンドル分析とブラウザーのプロファイリングでボトルネックを確認する必要があります。
ビルド段階では、モジュールの分割、未使用コードの除去、アセットの最適化を検討します。ブラウザーでは、ネットワークリクエスト、JavaScriptの解析・実行、レイアウト、ペイントを分けて測定します。ダウンロードするJavaScriptのサイズと、サーバーから最初の応答が届くまでの時間は、同じ指標ではありません。
2. WebAssemblyとWorkerの境界
CPU負荷の高い計算はWebAssemblyの適用候補になりますが、初期化やJavaScriptとの境界をまたぐコストも測定する必要があります。WorkerはDOMを直接走査したり変更したりできません。必要なデータをメインスレッドで抽出して渡し、結果を受け取って画面に反映します。Web Workerのドキュメントを参照してください。
- Workerの利用と、単一のWebAssemblyインスタンスが自動的に複数スレッドで動作することは別です。
- メッセージのシリアライズとデータコピーのコストを測定し、必要に応じてtransferableオブジェクトを検討します。
- キャンセルと時間制限を実装し、Workerが失敗してもページの基本機能を維持します。
3. 再現可能な性能比較
同じ端末とネットワーク条件で、コールドキャッシュとウォームキャッシュを区別して複数回測定します。ビルド時間、転送サイズ、LCP、INP、CLSを個別に記録し、1つの数値だけで性能全体を説明しません。
別途ベンチマーク資料のない高速化倍率やミリ秒単位の数値、無条件に1秒以内で描画するという保証は、成果として表示しません。