Markdownパーサーの速度を比較する

Javaで利用できるMarkdownパーサーの速度を比較しました。

参考:Java の flexmark-java で Markdown をいじる

メンテが続いていそうな3つのライブラリについて比較します。

  • commonmark-java : Atlassian製。CommonMarkの実装。CommonMarkとはMarkdownの標準仕様がないので共通仕様を定義しようという試みの仕様群らしい。
  • flexmark-java : commonmark-javaをベースにして開発されているもの。一番開発が活発なように思える(2017年12月時点)。PDFも出力できるとか。
  • markedj : GitBucketで使われている。最近コミット履歴が無いが、GitBucketが続く限り継続して開発されると思われる。

比較

4つのMarkdown、sample1〜4を用意しました。1〜3はネットで適当に拾ったサンプルで、4はただのテキストを1行だけ書いたものです。

結果は以下の通り。

markedj -----------
sample1 12.380207 ms
sample2 20.927672 ms
sample3 8.181507 ms
sample4 0.254558 ms
flexmark -----------
sample1 4.395711 ms
sample2 9.726367 ms
sample3 5.945249 ms
sample4 0.191649 ms
commonmark -----------
sample1 4.197779 ms
sample2 8.765042 ms
sample3 3.582374 ms
sample4 0.061305 ms

コードはこちら

使いやすさはどれもあんまり大差ない印象。実装されている機能はflexmarkが一番多いみたい。

余談

これはSashimiで採用するために計測しました。SashimiではデフォルトでMarkdownが有効であるような設定にする予定です。