Skip to content

Instantly share code, notes, and snippets.

@mity
Last active August 3, 2017 09:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mity/24822b24d35ef1f998f970965f8c8e53 to your computer and use it in GitHub Desktop.
Save mity/24822b24d35ef1f998f970965f8c8e53 to your computer and use it in GitHub Desktop.
#!/bin/bash
# Generate samples to examine some basic features of the parser:
rm -rf samples
mkdir samples
touch samples/empty.md
#cp ~/prj/cmark/bench/benchinput.md samples/cmark-benchinput.md
#python3 -c 'print("\n" * 10*1000000)' > samples/many-blanks.md
python3 -c 'print("foo\n\n" * 1000000)' > samples/many-paragraphs.md
python3 -c 'print("###### foo\n" * 1000000)' > samples/many-atx-headers.md
#python3 -c 'print("~~~\nfoo\n~~~\n\n" * 1000000)' > samples/many-fenced-code-blocks.md
python3 -c 'print("foo " * 10*1000000)' > samples/long-block-oneline.md
#python3 -c 'print("foo\n" * 1000000)' > samples/long-block-multiline.md
#python3 -c 'print("*foo* " * 1000000)' > samples/many-emphasis.md
#python3 -c 'print("[a](/url) " * 1000000)' > samples/many-links.md
#python3 -c 'print("* foo\n" * 1000000)' > samples/long-list.md
#python3 -c 'print("* foo\n * a\n * b\n" * 1000000)' > samples/long-list-with-sublists.md
#python3 -c 'print("foo\n\n* foo\n\n" * 1000000)' > samples/many-lists.md
PROG_LIST="$HOME/prj/md4c/bin/md2html/md2html $HOME/prj/md4c+ast/bin-release/md2html+ast/md2html+ast $HOME/prj/cmark/build/src/cmark"
for prog in $PROG_LIST; do
printf "\n\n%s [performance]:\n" "$prog"
for sample in samples/*.md; do
# dry run to warm-up fs cache etc.
$prog $sample >/dev/null
printf "%s: " "$sample"
for i in `seq 10`; do
time -p $prog samples/empty.md
time -p $prog $sample >/dev/null
done 2>&1 | grep real | awk '{print $2}' | python3 ~/prj/cmark/bench/stats.py
done
done
for prog in $PROG_LIST; do
printf "\n\n%s [memory consumption]:\n" "$prog"
for sample in samples/*.md; do
printf "%s: " "$sample"
memusage $prog $sample 2>&1 >/dev/null | grep 'summary:' | sed 's/.*summary://'
done
done
@mity
Copy link
Author

mity commented Jul 24, 2017

Results of MD4C's current master versus Cmark's current master:

samples/cmark-benchinput.md: mean = 0.3650, median = 0.3600, stdev = 0.0097
samples/empty.md: mean = 0.0000, median = 0.0000, stdev = 0.0000
samples/long-block-multiline.md: mean = 0.0400, median = 0.0400, stdev = 0.0000
samples/long-block-oneline.md: mean = 0.0700, median = 0.0700, stdev = 0.0000
samples/many-atx-headers.md: mean = 0.0900, median = 0.0900, stdev = 0.0000
samples/many-blanks.md: mean = 0.0700, median = 0.0700, stdev = 0.0000
samples/many-emphasis.md: mean = 0.1100, median = 0.1100, stdev = 0.0000
samples/many-fenced-code-blocks.md: mean = 0.1600, median = 0.1600, stdev = 0.0000
samples/many-links.md: mean = 0.2100, median = 0.2100, stdev = 0.0000
samples/many-paragraphs.md: mean = 0.0900, median = 0.0900, stdev = 0.0000


/home/mity/prj/cmark/build/src/cmark:
samples/cmark-benchinput.md: mean = 0.7060, median = 0.7000, stdev = 0.0158
samples/empty.md: mean = 0.0000, median = 0.0000, stdev = 0.0000
samples/long-block-multiline.md: mean = 0.2300, median = 0.2300, stdev = 0.0000
samples/long-block-oneline.md: mean = 0.1000, median = 0.1000, stdev = 0.0000
samples/many-atx-headers.md: mean = 0.4670, median = 0.4650, stdev = 0.0095
samples/many-blanks.md: mean = 0.3110, median = 0.3100, stdev = 0.0032
samples/many-emphasis.md: mean = 0.8460, median = 0.8450, stdev = 0.0070
samples/many-fenced-code-blocks.md: mean = 0.4010, median = 0.4000, stdev = 0.0057
samples/many-links.md: mean = 0.5110, median = 0.5100, stdev = 0.0032
samples/many-paragraphs.md: mean = 0.4860, median = 0.4900, stdev = 0.0052

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment