Skip to content

Instantly share code, notes, and snippets.

@gettalong
Created March 12, 2025 22:21
Show Gist options
  • Save gettalong/b85f244821c83824ba238aefe737a019 to your computer and use it in GitHub Desktop.
Save gettalong/b85f244821c83824ba238aefe737a019 to your computer and use it in GitHub Desktop.
Parsing into AST a file with kramdown vs versadok
# Lorem ipsum
Lorem ipsum *dolor sit* amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
labore et dolore magna aliqua. Ut enim _ad minim_ veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea *commodo consequat*. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint _occaecat cupidatat_ non proident, sunt
in culpa qui *officia deserunt* mollit anim id est laborum.
* Lorem ipsum *dolor* sit
* Consectetur adipiscing elit, sed do
* Duis aute irure dolor
1. Lorem ipsum *dolor sit* amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
labore et dolore magna aliqua. Ut enim _ad minim_ veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea *commodo consequat*. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint _occaecat cupidatat_ non proident, sunt
in culpa qui *officia deserunt* mollit anim id est laborum.
2. Lorem ipsum *dolor sit* amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
labore et dolore magna aliqua. Ut enim _ad minim_ veniam, quis nostrud exercitation ullamco
laboris nisi ut aliquip ex ea *commodo consequat*. Duis aute irure dolor in reprehenderit in
voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint _occaecat cupidatat_
non proident, sunt in culpa qui *officia deserunt* mollit anim id est laborum.
3. Lorem ipsum *dolor sit* amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
labore et dolore magna aliqua. Ut enim _ad minim_ veniam, quis nostrud exercitation ullamco
laboris nisi ut aliquip ex ea *commodo consequat*. Duis aute irure dolor in reprehenderit in
voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint _occaecat cupidatat_
non proident, sunt in culpa qui *officia deserunt* mollit anim id est laborum.
* Lorem ipsum *dolor sit* amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
labore et dolore magna aliqua. Ut enim _ad minim_ veniam, quis nostrud exercitation ullamco
laboris nisi ut aliquip ex ea *commodo consequat*. Duis aute irure dolor in reprehenderit in
voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint _occaecat cupidatat_
non proident, sunt in culpa qui *officia deserunt* mollit anim id est laborum.
1. Lorem ipsum *dolor sit* amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
labore et dolore magna aliqua. Ut enim _ad minim_ veniam, quis nostrud exercitation ullamco
laboris nisi ut aliquip ex ea *commodo consequat*. Duis aute irure dolor in reprehenderit in
voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint _occaecat
cupidatat_ non proident, sunt in culpa qui *officia deserunt* mollit anim id est laborum.
2. Lorem ipsum *dolor sit* amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
labore et dolore magna aliqua. Ut enim _ad minim_ veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea *commodo consequat*. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint _occaecat cupidatat_ non proident, sunt
in culpa qui *officia deserunt* mollit anim id est laborum.
* Lorem ipsum
* Dolor sit
* amet, consectetur
> Lorem ipsum *dolor sit* amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
labore et dolore magna aliqua. Ut enim _ad minim_ veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea *commodo consequat*. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint _occaecat cupidatat_ non proident, sunt
in culpa qui *officia deserunt* mollit anim id est laborum.
> # Lorem ipsum
>
> Lorem ipsum *dolor sit* amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
> labore et dolore magna aliqua. Ut enim _ad minim_ veniam, quis nostrud exercitation ullamco laboris
> nisi ut aliquip ex ea *commodo consequat*. Duis aute irure dolor in reprehenderit in voluptate velit
> esse cillum dolore eu fugiat nulla pariatur. Excepteur sint _occaecat cupidatat_ non proident, sunt
> in culpa qui *officia deserunt* mollit anim id est laborum.
>
>
> * Lorem ipsum *dolor* sit
>
> * Consectetur adipiscing elit, sed do
>
> * Duis aute irure dolor
>
>
> 1. Lorem ipsum *dolor sit* amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
> labore et dolore magna aliqua. Ut enim _ad minim_ veniam, quis nostrud exercitation ullamco laboris
> nisi ut aliquip ex ea *commodo consequat*. Duis aute irure dolor in reprehenderit in voluptate velit
> esse cillum dolore eu fugiat nulla pariatur. Excepteur sint _occaecat cupidatat_ non proident, sunt
> in culpa qui *officia deserunt* mollit anim id est laborum.
>
> 2. Lorem ipsum *dolor sit* amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
> labore et dolore magna aliqua. Ut enim _ad minim_ veniam, quis nostrud exercitation ullamco
> laboris nisi ut aliquip ex ea *commodo consequat*. Duis aute irure dolor in reprehenderit in
> voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint _occaecat cupidatat_
> non proident, sunt in culpa qui *officia deserunt* mollit anim id est laborum.
>
> 3. Lorem ipsum *dolor sit* amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
> labore et dolore magna aliqua. Ut enim _ad minim_ veniam, quis nostrud exercitation ullamco
> laboris nisi ut aliquip ex ea *commodo consequat*. Duis aute irure dolor in reprehenderit in
> voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint _occaecat cupidatat_
> non proident, sunt in culpa qui *officia deserunt* mollit anim id est laborum.
>
>
> * Lorem ipsum *dolor sit* amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
> labore et dolore magna aliqua. Ut enim _ad minim_ veniam, quis nostrud exercitation ullamco
> laboris nisi ut aliquip ex ea *commodo consequat*. Duis aute irure dolor in reprehenderit in
> voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint _occaecat cupidatat_
> non proident, sunt in culpa qui *officia deserunt* mollit anim id est laborum.
>
> 1. Lorem ipsum *dolor sit* amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
> labore et dolore magna aliqua. Ut enim _ad minim_ veniam, quis nostrud exercitation ullamco
> laboris nisi ut aliquip ex ea *commodo consequat*. Duis aute irure dolor in reprehenderit in
> voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint _occaecat
> cupidatat_ non proident, sunt in culpa qui *officia deserunt* mollit anim id est laborum.
>
> 2. Lorem ipsum *dolor sit* amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
> labore et dolore magna aliqua. Ut enim _ad minim_ veniam, quis nostrud exercitation ullamco laboris
> nisi ut aliquip ex ea *commodo consequat*. Duis aute irure dolor in reprehenderit in voluptate velit
> esse cillum dolore eu fugiat nulla pariatur. Excepteur sint _occaecat cupidatat_ non proident, sunt
> in culpa qui *officia deserunt* mollit anim id est laborum.
>
> * Lorem ipsum
>
> * Dolor sit
>
> * amet, consectetur
>
>
> > Lorem ipsum *dolor sit* amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
> labore et dolore magna aliqua. Ut enim _ad minim_ veniam, quis nostrud exercitation ullamco laboris
> nisi ut aliquip ex ea *commodo consequat*. Duis aute irure dolor in reprehenderit in voluptate velit
> esse cillum dolore eu fugiat nulla pariatur. Excepteur sint _occaecat cupidatat_ non proident, sunt
> in culpa qui *officia deserunt* mollit anim id est laborum.
prelude: |
str = File.read('bench.md')
require 'kramdown'
require 'versadok'
benchmark:
kramdown: 'Kramdown::Document.new(str)'
versadok: 'VersaDok::Parser.new.parse(str).finish'
Without YJIT on Ruby 3.4.1
Warming up --------------------------------------
kramdown 259.422 i/s - 270.000 times in 1.040775s (3.85ms/i)
versadok 1.158k i/s - 1.265k times in 1.091970s (863.22μs/i)
Calculating -------------------------------------
kramdown 276.681 i/s - 778.000 times in 2.811901s (3.61ms/i)
versadok 1.138k i/s - 3.475k times in 3.052762s (878.49μs/i)
Comparison:
versadok: 1138.3 i/s
kramdown: 276.7 i/s - 4.11x slower
With YJIT on Ruby 3.4.1
Warming up --------------------------------------
kramdown 334.871 i/s - 336.000 times in 1.003372s (2.99ms/i)
versadok 1.853k i/s - 1.969k times in 1.062396s (539.56μs/i)
Calculating -------------------------------------
kramdown 315.374 i/s - 1.004k times in 3.183520s (3.17ms/i)
versadok 1.822k i/s - 5.560k times in 3.052272s (548.97μs/i)
Comparison:
versadok: 1821.6 i/s
kramdown: 315.4 i/s - 5.78x slower
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment