benchmark/rendering.rb in faml-0.2.5 vs benchmark/rendering.rb in faml-0.2.6

- old
+ new

@@ -1,35 +1,39 @@ #!/usr/bin/env ruby require 'benchmark/ips' require 'haml' require 'faml' +require 'slim' require 'escape_utils/html/haml' -template = ARGV[0] -unless template - $stderr.puts "Usage: #{$0} template.haml" +unless ARGV[0] + $stderr.puts "Usage: #{$0} template.haml [template.slim]" exit 1 end +haml_code = File.read(ARGV[0]) +slim_code = ARGV[1] ? File.read(ARGV[1]) : nil + Benchmark.ips do |x| obj = Object.new - Haml::Engine.new(File.read(template), ugly: true, escape_html: true).def_method(obj, :haml) - code_array = Faml::Engine.new.call(File.read(template)) - obj.instance_eval("def faml_array; #{code_array}; end") - code_string = Faml::Engine.new(generator: Temple::Generators::RailsOutputBuffer).call(File.read(template)) - obj.instance_eval("def faml_string; #{code_string}; end") - - x.report('Haml') do - obj.haml + Haml::Engine.new(haml_code, ugly: true, escape_html: true).def_method(obj, :haml) + obj.instance_eval %{ + def faml_array; #{Faml::Engine.new.call(haml_code)}; end + def faml_string; #{Faml::Engine.new(generator: Temple::Generators::RailsOutputBuffer).call(haml_code)}; end + } + if slim_code + obj.instance_eval %{ + def slim_array; #{Slim::Engine.new.call(slim_code)}; end + def slim_string; #{Slim::Engine.new(generator: Temple::Generators::RailsOutputBuffer).call(slim_code)}; end + } end - x.report('Faml (Array)') do - obj.faml_array + x.report('Haml') { obj.haml } + x.report('Faml (Array)') { obj.faml_array } + x.report('Faml (String)') { obj.faml_string } + if slim_code + x.report('Slim (Array)') { obj.slim_array } + x.report('Slim (String)') { obj.slim_string } end - - x.report('Faml (String)') do - obj.faml_string - end - x.compare! end