# require "rubygems" # require "ruby-prof" ENV["RAILS_ENV"] ||= 'test' require File.dirname(__FILE__) + "/../config/environment" unless defined?(RAILS_ROOT) %w{sites pages layouts}.each do |collection| Mongoid.master.collection(collection).drop end puts "Starting test..." site = Site.create :name => 'Benchmark Website', :subdomain => 'benchmark' simple = site.pages.create :title => 'Simple', :slug => 'simple', :raw_template => %{
Lorem ipsum
} base = site.pages.create :title => 'Base page', :slug => 'base', :raw_template => %{
{% block body %}Just to say hi{% endblock %}
} page_1 = site.pages.create :title => 'Page 1', :slug => 'page_1', :raw_template => %{ {% extends base %} {% block sidebar %}A sidebar here{% endblock %} {% block body %}
{% block main %}DEFAULT MAIN CONTENT{% endblock %}
{% endblock %} } page_2 = site.pages.create :title => 'Page 2', :slug => 'page_2', :raw_template => %{ {% extends page_1 %} {% block sidebar %}{{ block.super }} / INDEX sidebar{% endblock %} {% block main %}Lorem ipsum{% endblock %} } puts "OUTPUT = #{page_2.render(Liquid::Context.new)}" context = Liquid::Context.new({}, { 'site' => site }, { :site => site }) Benchmark.bm do |bm| bm.report("Rendering a simple page 10k times") do 10000.times do Page.where(:title => 'Simple').first.render(context) end end bm.report("Rendering a complex page 10k times") do 10000.times do Page.last.render(context) end end end # # empty page (imac 27'): User System Total Real # Rendering page 10k times 21.390000 1.820000 23.210000 ( 24.120529) # # page with inherited template (imac 27'): User System Total Real # Rendering page 10k times 85.840000 7.600000 93.440000 ( 97.841248) # # with optimization (imac 27'): User System Total Real # Rendering page 10k times 84.240000 7.280000 91.520000 ( 95.475565) # # with locomotive liquid (imac 27'): User System Total Real # Rendering page 10k times 38.750000 3.050000 41.800000 ( 42.880022)