Python用のMarkdownを扱うモジュールを比較してみた
Posted on Tue, 03 May 2011 14:34:02 +0900
ベンチとってみました。
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系のラッパーが独走しています。

## 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%