require 'rubygems' require 'pathname' require 'extlib' require 'bluecloth' require 'redcloth' require 'benchmark' require Pathname.new(__FILE__).parent/"lib/glyph.rb" def macro_exec(text) Glyph::Interpreter.new(text).document.output end def sep puts "="*100 end N = 50 def rep(x, title, &block) x.report(title.to_s) { N.times(&block) } end def reset_glyph Glyph.lite_mode = true Glyph['system.quiet'] = true end text = %{ Lorem ipsum dolor sit amet, consectetur _adipisicing 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. } html = %{ p[Lorem ipsum dolor sit amet, consectetur em[adipisicing elit], sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.] p[Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.] ul[ li[Duis aute irure dolor in strong[reprehenderit] in voluptate velit esse cillum dolore eu fugiat nulla pariatur.] li[Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.] ] } reset_glyph Glyph.run! 'load:all' Benchmark.bm(30) do |x| sep puts " => Core Classes" rep(x, "Glyph::Interpreter.new.parse") {Glyph::Interpreter.new(text).parse} rep(x, "Glyph::Parser.new(text).parse") {Glyph::Parser.new(text).parse} sep puts " => Macro Set: Glyph" sep rep(x, "section[...]") { macro_exec "section[#{text}]" } rep(x, "snippet[...]") { macro_exec "snippet:[test|#{text}]snippet[test]" } rep(x, "textile[...]") { macro_exec "textile[#{text}]" } rep(x, "markdown[...]") { macro_exec "markdown[#{text}]" } rep(x, "HTML text") { macro_exec html } sep rep(x, "Markdown (BlueCloth)") {BlueCloth.new(text).to_html } rep(x, "Textile (RedCloth)") {RedCloth.new(text).to_html } sep puts " => Macro Set: XML" reset_glyph Glyph['options.macro_set'] = 'xml' Glyph.run! 'load:all' rep(x, "HTML text") { macro_exec html } end