| Library | Version | Seconds | n times slower than pyromark |
| markdown2 | 2.5.3 | 4.005 | 160 |
| markdown | 3.7 | 3.245 | 130 |
| mistletoe | 1.4.0 | 2.980 | 119 |
| markdown_it | 3.0.0 | 2.583 | 103 |
| mistune | 3.1.1 | 1.885 | 75 |
| pyromark | 0.9.0 | 0.025 | 1 |
# pip install markdown markdown2 markdown-it-py mistletoe mistune pyromark requests
from operator import itemgetter
from timeit import timeit
import markdown
import markdown2
import markdown_it
import mistletoe
import mistune
import pyromark
import requests
text = requests.get(
"https://raw.githubusercontent.com/rust-lang/rust/refs/tags/1.82.0/INSTALL.md"
).text
results = {
library: timeit(renderer, number=1000)
for library, renderer in (
(markdown_it, lambda: markdown_it.MarkdownIt().render(text)),
(markdown, lambda: markdown.markdown(text)),
(mistune, lambda: mistune.html(text)),
(markdown2, lambda: markdown2.markdown(text)),
(mistletoe, lambda: mistletoe.markdown(text)),
(pyromark, lambda: pyromark.html(text)),
)
}
print("| Library | Version | Seconds | n times slower than pyromark |")
print("| ------- | ------- | ------- | ---------------------------- |")
for library, seconds in sorted(
results.items(), key=itemgetter(1), reverse=True
):
print(
"|",
library.__name__,
"|",
library.__version__,
"|",
format(seconds, ".3f"),
"|",
format(seconds / results[pyromark], ".0f"),
"|",
)