aboutsummaryrefslogtreecommitdiff
path: root/lib/cmark/benchmarks.md
diff options
context:
space:
mode:
Diffstat (limited to 'lib/cmark/benchmarks.md')
-rw-r--r--lib/cmark/benchmarks.md33
1 files changed, 33 insertions, 0 deletions
diff --git a/lib/cmark/benchmarks.md b/lib/cmark/benchmarks.md
new file mode 100644
index 0000000..ec96f6e
--- /dev/null
+++ b/lib/cmark/benchmarks.md
@@ -0,0 +1,33 @@
+# Benchmarks
+
+Here are some benchmarks, run on an ancient Thinkpad running Intel
+Core 2 Duo at 2GHz. The input text is a 11MB Markdown file built by
+concatenating the Markdown sources of all the localizations of the
+first edition of
+[*Pro Git*](https://github.com/progit/progit/tree/master/en) by Scott
+Chacon.
+
+|Implementation | Time (sec)|
+|-------------------|-----------:|
+| Markdown.pl | 2921.24 |
+| Python markdown | 291.25 |
+| PHP markdown | 20.82 |
+| kramdown | 17.32 |
+| cheapskate | 8.24 |
+| peg-markdown | 5.45 |
+| parsedown | 5.06 |
+| **commonmark.js** | 2.09 |
+| marked | 1.99 |
+| discount | 1.85 |
+| **cmark** | 0.29 |
+| hoedown | 0.21 |
+
+To run these benchmarks, use `make bench PROG=/path/to/program`.
+
+`time` is used to measure execution speed. The reported
+time is the *difference* between the time to run the program
+with the benchmark input and the time to run it with no input.
+(This procedure ensures that implementations in dynamic languages are
+not penalized by startup time.) A median of ten runs is taken. The
+process is reniced to a high priority so that the system doesn't
+interrupt runs.