Copilotにこのブログの改修をやらせてみた
Copilotに雑にパフォーマンス改善をオーダーしてみたところ、ビルド時間がそこそこ減った。
改善内容としては、JSDOMをリプレイスされた。要するに以前の記事で言及していたポストプロセッサ部分。
パフォーマンスのためにフラグメントのみで処理していたが、そもそも処理の内容的にJSDOMほどのDOM API網羅性はいらんということで、もっとコンパクトなcheerioに差し替えられた。
こちらがJSDOMを使っていたバージョンをCloudflare Pagesにデプロイしたときのビルド時間。
[11ty] Benchmark 11125ms 37% 1098× (Configuration) "cleanUp" Transform
[11ty] Copied 112 Wrote 1098 files in 29.70 seconds (27.0ms each, v3.1.2)
こちらが改修後。
[11ty] Benchmark 2827ms 14% 1098× (Configuration) "cleanUp" Transform
[11ty] Copied 112 Wrote 1098 files in 20.46 seconds (18.6ms each, v3.1.2)
どちらもコンテンツは同じで、1098ページの処理が約8秒、70%以上短縮された。パイプライン全体ではもうちょい減ってるけど、ポストプロセッサ部分以外は変えてないので、ビルド時の負荷状況のブレも多少含まれていそう。
ただ、早くなったのはいいんだけど、ピュアES派の大槻さんとしてはjQuery風構文はあんまり良い気分ではない……。ほんとはV8がDOMまで扱ってくれれば良いんだけど、そこはレンダリングエンジン側との棲み分けがあるので仕方ない……。
あと、なんかついでに余計な変更入れやがって壊れたりコードの可読性が下がったりしたのでそこはお叱りを入れて直させたり、多少は自分の手で直したり。
壊れたことの検知には、エコシステムの寿命でビルドできなくなったときのために作成している、プロダクションビルドのスナップショットを活用した。AIにリファクタやらすときはスナップショットテストやった方が安全。いや自分がロジック差し替えるときにも同じチェックしてるから、そこは別にAI関係なくリファクタ一般の話か。
ついでに、直した後でCloudflare Pagesにデプロイして、ビルドログに✨ Success! Uploaded 0 files (1249 already uploaded) (0.66 sec)が出ていること、つまり改修前後で出力に変化がなかったことも確認しておいた。
ちなみにそのあともパフォーマンスチューニングをさせようとしてみたけど、特に有効な改善策は出てこなかった。
まぁメモ化の意味があるところは全部メモ化してたしI/Oも最小限だし(ビルドログのアップロードファイル数がEleventyでハンドルしたファイル数と一致していないのはその辺のせい)スキャンを複数回走らせないように気をつけて組んでたしで、自分のコードはだいたいチューニングしきってたから、ライブラリ差し替えくらいしかできることが残ってなかったってのはそれはそうか……。
あと、現時点ですでにCloudflare Pagesがビルド環境組み上げる時間の方が圧倒的に長いので、これ以上ビルドを早くしたところで実効的な意味は無かったりもする……。