V8 v13.8でJSON.stringifyが2倍以上高速化
V8 v13.8でJSON.stringifyが2倍以上高速化。副作用のない単純なオブジェクトのシリアライズに特化した新しい反復的アプローチを実装し、パフォーマンスを大幅に改善。
- 新しいシリアライザ:
toJSONメソッドやreplacer引数がない単純なオブジェクトを処理する「ファストパス」を導入。再帰的実装を反復的アプローチに変更し、スタックオーバーフローを防止。 - 文字列処理の最適化: SIMD命令やSWAR技術を利用し、文字列内のエスケープ文字検索を高速化。
- プロパティキーの最適化: 特定の条件を満たすプロパティキーを持つオブジェクトの隠しクラスにフラグを設定。次回以降のシリアライズ時にキーのチェックを省略する「エクスプレスレーン」を導入。
- 数値変換の改善: 数値から文字列への変換アルゴリズムをDragonboxに更新。
- メモリ管理の改善: 一時バッファをセグメント化し、メモリの再割り当てとコピーのオーバーヘッドを削減。