D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
opt
/
td-agent
/
embedded
/
lib
/
ruby
/
gems
/
2.1.0
/
gems
/
kramdown-1.13.2
/
doc
/
Filename :
tests.page
back
Copy
--- title: Tests and Benchmark --- # Tests and Benchmark ## Tests There exist several test suites for testing the correctness of a Markdown implementation. The original [Markdown Test Suite] is the standard which one needs to test against. The [PHP Markdown suite][MDTest] contains the original test suite and several more tests (some specifically geared towards the extension of the PHP Markdown Extra package). I have used the latter test tool to roughly verify that kramdown is able to parse standard Markdown. However, since the syntax used by kramdown varies slightly from standard Markdown most of the tests fail - which is fine. When looking at the differences one can see that the failures result from these differences. Besides using the above mentioned test suite kramdown comes with its own set of tests which is used to verify that the implementation matches the kramdown specification. If you believe you have found a bug in the implementation, please follow these steps: * Check the [syntax page](syntax.html) and see if the behaviour is not intended. * If the behaviour is not intended and it seems that kramdown should parse some text in another fashion, please open a [bug report] and attach two files: one with the text and one with the HTML conversion you think is correct. [bug report]: http://github.com/gettalong/kramdown/issues ## Benchmark kramdown comes with a small benchmark to test how fast it is in regard to four other Ruby Markdown implementations: Maruku, BlueFeather, BlueCloth, RDiscount and Redcarpet. The first two are written using only Ruby, the latter three are written in C and need to be compiled. As one can see below, kramdown is currently (September 2014) ~3x faster than Maruku, ~4.5x faster than BlueFeather but ~30x slower than RDiscount and ~150x slower than Redcarpet: <pre><code> Running tests on 2014-09-16 under ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux] Test using file mdsyntax.text and 20 runs Rehearsal ---------------------------------------------------- kramdown 1.4.2 0.900000 0.010000 0.910000 ( 0.914992) Maruku 0.7.1 2.360000 0.040000 2.400000 ( 2.403571) BlueFeather 0.41 3.760000 0.010000 3.770000 ( 3.776421) BlueCloth 2.2.0 0.050000 0.000000 0.050000 ( 0.050221) RDiscount 2.1.7 0.020000 0.000000 0.020000 ( 0.024180) redcarpet 3.1.2 0.010000 0.000000 0.010000 ( 0.004579) ------------------------------------------- total: 7.160000sec user system total real kramdown 1.4.2 0.830000 0.000000 0.830000 ( 0.834144) Maruku 0.7.1 2.250000 0.030000 2.280000 ( 2.286579) BlueFeather 0.41 3.680000 0.010000 3.690000 ( 3.693769) BlueCloth 2.2.0 0.050000 0.000000 0.050000 ( 0.044831) RDiscount 2.1.7 0.020000 0.000000 0.020000 ( 0.022847) redcarpet 3.1.2 0.010000 0.000000 0.010000 ( 0.004601) Real time of X divided by real time of kramdown Maruku 2.7412 BlueFeather 4.4282 BlueCloth 0.0537 RDiscount 0.0274 redcarpet 0.0055 Test using file mdbasics.text and 20 runs Rehearsal ---------------------------------------------------- kramdown 1.4.2 0.150000 0.000000 0.150000 ( 0.149989) Maruku 0.7.1 0.580000 0.010000 0.590000 ( 0.584910) BlueFeather 0.41 0.780000 0.000000 0.780000 ( 0.788740) BlueCloth 2.2.0 0.020000 0.000000 0.020000 ( 0.014700) RDiscount 2.1.7 0.000000 0.000000 0.000000 ( 0.007692) redcarpet 3.1.2 0.010000 0.000000 0.010000 ( 0.002064) ------------------------------------------- total: 1.550000sec user system total real kramdown 1.4.2 0.150000 0.000000 0.150000 ( 0.151586) Maruku 0.7.1 0.520000 0.000000 0.520000 ( 0.525707) BlueFeather 0.41 0.770000 0.010000 0.780000 ( 0.763559) BlueCloth 2.2.0 0.020000 0.000000 0.020000 ( 0.015509) RDiscount 2.1.7 0.010000 0.000000 0.010000 ( 0.006545) redcarpet 3.1.2 0.000000 0.000000 0.000000 ( 0.001475) Real time of X divided by real time of kramdown Maruku 3.468 BlueFeather 5.0371 BlueCloth 0.1023 RDiscount 0.0432 redcarpet 0.0097 </code></pre> And here are some graphs which show the execution times of the various kramdown releases on different Ruby interpreters: ![ruby 1.8.7p302]({relocatable: img/graph-ruby-1.8.7-302.png}) ![ruby 1.9.3p448]({relocatable: img/graph-ruby-1.9.3p448-448.png}) ![ruby 2.0.0p247]({relocatable: img/graph-ruby-2.0.0p247-247.png}) ![ruby 2.1.2p95]({relocatable: img/graph-ruby-2.1.2p95-95.png}) ![jruby 1.7.15]({relocatable: img/graph-jruby-1.7.15-392.png}) ![rubinius 2.2.10]({relocatable: img/graph-rubinius-2.2.10-0.png}) [Markdown Test Suite]: http://daringfireball.net/projects/downloads/MarkdownTest_1.0.zip [MDTest]: http://www.michelf.com/docs/projets/mdtest-1.0.zip