Skip to content

Performance

128x faster than Markdown, 105x faster than markdown-it-py, 79x faster than mistune, 8x faster than markdown-it-pyrs.

If you use threading, the difference with other libraries will be even more enormous, since pyromark releases the GIL.

Python 3.11.3 (main, Jun  5 2023, 09:32:32) [GCC 13.1.1 20230429]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.14.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import requests, markdown, markdown_it, mistune, markdown_it_pyrs, pyromark

In [2]: (
   ...:     markdown.__version__,
   ...:     markdown_it.__version__,
   ...:     mistune.__version__,
   ...:     markdown_it_pyrs.__version__,
   ...: )
Out[2]: ('3.4.4', '3.0.0', '3.0.1', '0.3.0')

In [3]: text = requests.get(
   ...:     "https://raw.githubusercontent.com/rust-lang/rust/1.71.1/README.md"
   ...: ).text

In [4]: %timeit markdown.markdown(text)
7.66 ms ± 31.9 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

In [5]: %timeit markdown_it.MarkdownIt().render(text)
6.25 ms ± 28.5 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

In [6]: %timeit mistune.html(text)
4.73 ms ± 10.5 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

In [7]: %timeit markdown_it_pyrs.MarkdownIt().render(text)
460 µs ± 1.33 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)

In [8]: %timeit pyromark.markdown(text)
59.7 µs ± 171 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)