🏃🏼Markdown→HTMLはこう進化したーパイプライン最前線2025/06/09に公開2025/06/143件MarkdownWebAssemblyMDXunifiedAstrotechGitHubで編集を提案Discussionryoppippi6ヶ月前こちらのベンチマークによるとmarkdown-itの方が速いのですが、何がこの差を生んでいるのでしょうか https://www.measurethat.net/benchmarks/ShowResult/589852 返信を追加Kenji6ヶ月前に更新うわ!めっちゃいい質問です!!! 単純レンダリング1回だけを秒数で測るベンチは余計な仕事をしていない markdown-it の方が速いんです。markdown-it は「正しい HTML を素早く出す」ことにフォーカスしてるからですね。 unified は「途中で AST を自在に改造できること」を第一優先に設計されています。速度よりも型安全性と変換汎用性を取っているため、設計思想のコストがそのまま数値に表れます。 変換処理がよく挟まるかどうかで変わってきますね! 例えば、GFM拡張(表や打ち消し線を追加)、リンク整形(外部リンクに rel="noopener" を追加)や<code>タグのシンタックスハイライトとかです。 加工の項目が増えれば、項目ごとに再パースするので、DOMっぽいオブジェクトやトークン列を作り直すんですよ。なので、ファイル数が多いとビルド時間が雪だるま式に時間がかかるんだと思います。 結果として unified 型の方がビルド時間はかからないんだなーと理解してました! 返信を追加ryoppippi6ヶ月前なるほどです。そうするとプラグインが多く挟まるとunifiedの方が遅くなっていくと言う話なんですね!ありがとうございます。 返信を追加
ryoppippi6ヶ月前こちらのベンチマークによるとmarkdown-itの方が速いのですが、何がこの差を生んでいるのでしょうか https://www.measurethat.net/benchmarks/ShowResult/589852 返信を追加
Kenji6ヶ月前に更新うわ!めっちゃいい質問です!!! 単純レンダリング1回だけを秒数で測るベンチは余計な仕事をしていない markdown-it の方が速いんです。markdown-it は「正しい HTML を素早く出す」ことにフォーカスしてるからですね。 unified は「途中で AST を自在に改造できること」を第一優先に設計されています。速度よりも型安全性と変換汎用性を取っているため、設計思想のコストがそのまま数値に表れます。 変換処理がよく挟まるかどうかで変わってきますね! 例えば、GFM拡張(表や打ち消し線を追加)、リンク整形(外部リンクに rel="noopener" を追加)や<code>タグのシンタックスハイライトとかです。 加工の項目が増えれば、項目ごとに再パースするので、DOMっぽいオブジェクトやトークン列を作り直すんですよ。なので、ファイル数が多いとビルド時間が雪だるま式に時間がかかるんだと思います。 結果として unified 型の方がビルド時間はかからないんだなーと理解してました! 返信を追加
Discussion
こちらのベンチマークによるとmarkdown-itの方が速いのですが、何がこの差を生んでいるのでしょうか
うわ!めっちゃいい質問です!!!
単純レンダリング1回だけを秒数で測るベンチは余計な仕事をしていない markdown-it の方が速いんです。markdown-it は「正しい HTML を素早く出す」ことにフォーカスしてるからですね。
unified は「途中で AST を自在に改造できること」を第一優先に設計されています。速度よりも型安全性と変換汎用性を取っているため、設計思想のコストがそのまま数値に表れます。
変換処理がよく挟まるかどうかで変わってきますね!
例えば、GFM拡張(表や打ち消し線を追加)、リンク整形(外部リンクに rel="noopener" を追加)や<code>タグのシンタックスハイライトとかです。
加工の項目が増えれば、項目ごとに再パースするので、DOMっぽいオブジェクトやトークン列を作り直すんですよ。なので、ファイル数が多いとビルド時間が雪だるま式に時間がかかるんだと思います。
結果として unified 型の方がビルド時間はかからないんだなーと理解してました!
なるほどです。そうするとプラグインが多く挟まるとunifiedの方が遅くなっていくと言う話なんですね!ありがとうございます。