Python用のMarkdownを扱うモジュールを比較してみた

ベンチとってみました。

C向けのMarkdownライブラリ

libupskirt とか upskirt とか Discount とか PEG-Markdown とかがあります。 なんでこんな名前にしたかは知りません。。

Python向けのMarkdonモジュール

Pure-Pythonモジュールである Markdown 、 libupskirtから派生した upskirt のソースを使用している pantyshot 、 libupskirtから派生しつつ upskirt とか異なるソースとなっている cMarkdown 、 Discountをラップした python-discount が使えます。 pantyshotとか悪乗りしてますね。。 PEG-Markdown用のラッパーは無かったので、作ってみました。 (結局速度が遅かったので、githubにだけあげています。 python-pegmarkdown )

ベンチマーク結果

ベンチの内容はMarkdown書式の文字列をHTML形式に変換するというものです。 変換元のMarkdown書式のファイルは2byte文字を含んだUTF-8の5000バイト程のファイルです。 20000回実行時の実行時間は以下のようになりました。 libupskirt系のラッパーが独走しています。

http://image.hexacosa.net/images/container/0000000000000419_M.png
## benchmarker:       release 3.0.1 (for python)
## python platform:   linux2 [GCC 4.5.2]
## python version:    2.7.1+
## python executable: /home/hattori/.virtualenvs/twopointseven/bin/python

##                                 user       sys     total      real
pantyshot                        3.0300    0.0000    3.0300    3.0391
pegmarkdown                     47.5500    0.0000   47.5500   47.7065
cmarkdown                        2.8500    0.1800    3.0300    3.0837
markdown                       262.2200    0.2900  262.5100  263.9747
discount                        13.5900    0.0300   13.6200   13.8648

## Ranking                         real
pantyshot                        3.0391 (100.0%) *************************
cmarkdown                        3.0837 ( 98.6%) *************************
discount                        13.8648 ( 21.9%) *****
pegmarkdown                     47.7065 (  6.4%) **
markdown                       263.9747 (  1.2%)

## Ratio Matrix                    real    [01]    [02]    [03]    [04]    [05]
[01] pantyshot                   3.0391  100.0%  101.5%  456.2% 1569.7% 8685.8%
[02] cmarkdown                   3.0837   98.6%  100.0%  449.6% 1547.0% 8560.2%
[03] discount                   13.8648   21.9%   22.2%  100.0%  344.1% 1903.9%
[04] pegmarkdown                47.7065    6.4%    6.5%   29.1%  100.0%  553.3%
[05] markdown                  263.9747    1.2%    1.2%    5.3%   18.1%  100.0%

ベンチマークスクリプト

まとめ

モジュールの使いやすさは比較できていませんが、速度を重視したい場合は cMarkdownpantyshot を使えばOKでしょう。 Windowsでは試していないので使えないかもしれません。

以上、Markdown用モジュールの比較でした。