mity / md4c

C Markdown parser. Fast. SAX-like interface. Compliant to CommonMark specification.
MIT License
759 stars 140 forks source link

Parsing ‘* * * * * * … a’ takes quadratic time #66

Closed andersk closed 5 years ago

andersk commented 5 years ago
$ python -c 'print("* " * 40000 + "a")' | time md2html > /dev/null
1.18user 0.00system 0:01.22elapsed 97%CPU (0avgtext+0avgdata 4776maxresident)k
0inputs+0outputs (0major+920minor)pagefaults 0swaps
$ python -c 'print("* " * 80000 + "a")' | time md2html > /dev/null
4.81user 0.00system 0:04.88elapsed 98%CPU (0avgtext+0avgdata 7744maxresident)k
0inputs+0outputs (0major+1684minor)pagefaults 0swaps
$ python -c 'print("* " * 160000 + "a")' | time md2html > /dev/null
19.88user 0.02system 0:20.06elapsed 99%CPU (0avgtext+0avgdata 13944maxresident)k
0inputs+0outputs (0major+3226minor)pagefaults 0swaps

Related: jgm/commonmark-hs#2, commonmark/cmark#284.