ブログエンジンを自作した
- #Programming
- #F#
注: ウェブサイトを SvelteKit に移行したため,2025年現在は自作ブログエンジンを使っていません……
静的サイトジェネレータ flxble を自作して,ウェブサイトをそれに移行した.
Markdown プロセッサは Markdig を使い,それ以外はテンプレートエンジンも含めて全て F# で自作した.
現在 1000 記事あるテスト用のブログを全部レンダリングしてタグや月別アーカイブ,RSS まで生成するのに合計 1.7 秒ほどしかかからないので, Hugo ほどではないが十分高速なブログエンジンの部類に入るだろう.
他の多くのテンプレートエンジンと違ってわたしの自作したテンプレートエンジンは内部で mutable state を使っていないのでimmutable,自動的にスレッドセーフになっている.
そのお陰で安全に並列化できるのだが,並列化しなくても既存の end-userend-user .NET テンプレートエンジンの中でおそらく最速になってしまった.
せっかくなので Hugo にも勝ちたいが,プロファイラにかけたところ,実行時間のほどんどを Markdig の Markdown パーシング・レンダリングが占めていたので, 自分で書いた部分をいくら弄ってもこれ以上速くなる望みがあまりないことがわかった.
さすがに Markdown 処理系を自作したくはない.