discourse/script/benchmarks/markdown/bench.rb

133 lines
5.2 KiB
Ruby

# frozen_string_literal: true
require 'benchmark/ips'
require File.expand_path('../../../../config/environment', __FILE__)
# set any flags here
# MiniRacer::Platform.set_flags! :noturbo
tests = [
["tiny post", "**hello**"],
["giant post", File.read("giant_post.md")],
["most features", File.read("most_features.md")],
["lots of mentions", File.read("lots_of_mentions.md")]
]
PrettyText.cook("")
PrettyText.v8.eval("window.commonmark = window.markdownit('commonmark')")
# Benchmark.ips do |x|
# x.report("markdown") do
# PrettyText.markdown("x")
# end
#
# x.report("cook") do
# PrettyText.cook("y")
# end
# end
#
# exit
Benchmark.ips do |x|
[true, false].each do |sanitize|
tests.each do |test, text|
x.report("#{test} sanitize: #{sanitize}") do
PrettyText.markdown(text, sanitize: sanitize)
end
end
end
tests.each do |test, text|
x.report("markdown it no extensions commonmark #{test}") do
PrettyText.v8.eval("window.commonmark.render(#{text.inspect})")
end
end
end
# 27-07-2017 - Sam's NUC
#
# v8 5.7
#
#
# tiny post sanitize: true
# 160.678 (±19.9%) i/s - 760.000 in 5.005630s
# giant post sanitize: true
# 132.195 (±14.4%) i/s - 649.000 in 5.042695s
# most features sanitize: true
# 56.205 (± 8.9%) i/s - 280.000 in 5.038138s
# lots of mentions sanitize: true
# 0.318 (± 0.0%) i/s - 2.000 in 6.293644s
# tiny post sanitize: false
# 404.304 (±20.8%) i/s - 1.920k in 5.019903s
# giant post sanitize: false
# 327.721 (±11.9%) i/s - 1.624k in 5.033749s
# most features sanitize: false
# 76.649 (±10.4%) i/s - 385.000 in 5.085552s
# lots of mentions sanitize: false
# 0.306 (± 0.0%) i/s - 2.000 in 6.525968s
# markdown it no extensions commonmark tiny post
# 5.871k (±19.1%) i/s - 28.544k in 5.073585s
# markdown it no extensions commonmark giant post
# 1.006k (±12.5%) i/s - 4.960k in 5.041623s
# markdown it no extensions commonmark most features
# 1.447k (± 8.9%) i/s - 7.205k in 5.029094s
# markdown it no extensions commonmark lots of mentions
# 1.962k (± 8.3%) i/s - 9.850k in 5.061684s
#
#
# v8 5.9
#
#
# tiny post sanitize: true
# 156.179 (±16.0%) i/s - 765.000 in 5.059401s
# giant post sanitize: true
# 129.972 (±10.8%) i/s - 650.000 in 5.071824s
# most features sanitize: true
# 54.960 (± 9.1%) i/s - 275.000 in 5.051284s
# lots of mentions sanitize: true
# 0.321 (± 0.0%) i/s - 2.000 in 6.251009s
# tiny post sanitize: false
# 431.159 (±10.4%) i/s - 2.166k in 5.085303s
# giant post sanitize: false
# 300.236 (±11.7%) i/s - 1.479k in 5.029557s
# most features sanitize: false
# 73.808 (±10.8%) i/s - 371.000 in 5.092310s
# lots of mentions sanitize: false
# 0.297 (± 0.0%) i/s - 2.000 in 6.729708s
# markdown it no extensions commonmark tiny post
# 6.421k (±13.0%) i/s - 32.012k in 5.084672s
# markdown it no extensions commonmark giant post
# 901.622 (± 9.2%) i/s - 4.452k in 5.016748s
# markdown it no extensions commonmark most features
# 1.410k (± 6.5%) i/s - 7.112k in 5.070053s
# markdown it no extensions commonmark lots of mentions
# 1.934k (± 6.4%) i/s - 9.672k in 5.025858s
#
# v8 noturbo 5.9
#
#
# tiny post sanitize: true
# 105.152 (±17.1%) i/s - 512.000 in 5.034419s
# giant post sanitize: true
# 97.002 (±12.4%) i/s - 480.000 in 5.038382s
# most features sanitize: true
# 46.355 (±12.9%) i/s - 228.000 in 5.009251s
# lots of mentions sanitize: true
# 0.278 (± 0.0%) i/s - 2.000 in 7.205837s
# tiny post sanitize: false
# 201.166 (±13.4%) i/s - 990.000 in 5.017725s
# giant post sanitize: false
# 174.212 (±10.9%) i/s - 867.000 in 5.040859s
# most features sanitize: false
# 60.272 (±14.9%) i/s - 295.000 in 5.029353s
# lots of mentions sanitize: false
# 0.309 (± 0.0%) i/s - 2.000 in 6.483433s
# markdown it no extensions commonmark tiny post
# 6.331k (±13.8%) i/s - 31.065k in 5.023613s
# markdown it no extensions commonmark giant post
# 1.045k (± 9.6%) i/s - 5.208k in 5.053733s
# markdown it no extensions commonmark most features
# 1.448k (± 6.7%) i/s - 7.239k in 5.024831s
# markdown it no extensions commonmark lots of mentions
# 1.986k (± 5.2%) i/s - 9.990k in 5.044624s