1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
$:.unshift 'lib'
require "ruby-prof"
require 'mustache'
require "pathname"
template = """
{{#products}}
<div class='product_brick'>
<div class='container'>
<div class='element'>
<img src='images/{{image}}' class='product_miniature' />
</div>
<div class='element description'>
<a href={{url}} class='product_name block bold'>
{{external_index}}
</a>
</div>
</div>
</div>
{{/products}}
"""
data = {
products: []
}
200.times do
data[:products] << {
:external_index=>"product",
:url=>"/products/7",
:image=>"products/product.jpg"
}
end
# Uncomment to measure object allocations. Requires ruby 2.0.0
# RubyProf.measure_mode = RubyProf::ALLOCATIONS
view = Mustache.new
view.template = template
view.render # Call render once so the template will be compiled
RubyProf.start
500.times do
view.render(data)
end
result = RubyProf.stop
printer = RubyProf::GraphHtmlPrinter.new(result)
Pathname.new(FileUtils.pwd).join("benchmarks/render_collection_profile.html").open("w+") do |file|
printer.print(file, {})
end
|