instiki/vendor/rails/actionpack/lib/action_view/helpers/benchmark_helper.rb

33 lines
1.2 KiB
Ruby
Raw Normal View History

2007-01-22 14:43:50 +01:00
require 'benchmark'
module ActionView
module Helpers
# This helper offers a method to measure the execution time of a block
# in a template.
2007-01-22 14:43:50 +01:00
module BenchmarkHelper
# Allows you to measure the execution time of a block
# in a template and records the result to the log. Wrap this block around
# expensive operations or possible bottlenecks to get a time reading
# for the operation. For example, let's say you thought your file
# processing method was taking too long; you could wrap it in a benchmark block.
2007-01-22 14:43:50 +01:00
#
# <% benchmark "Process data files" do %>
# <%= expensive_files_operation %>
2007-01-22 14:43:50 +01:00
# <% end %>
#
# That would add something like "Process data files (0.34523)" to the log,
# which you can then use to compare timings when optimizing your code.
2007-01-22 14:43:50 +01:00
#
# You may give an optional logger level as the second argument
# (:debug, :info, :warn, :error); the default value is :info.
2007-01-22 14:43:50 +01:00
def benchmark(message = "Benchmarking", level = :info)
if controller.logger
2007-01-22 14:43:50 +01:00
real = Benchmark.realtime { yield }
controller.logger.send(level, "#{message} (#{'%.5f' % real})")
else
yield
2007-01-22 14:43:50 +01:00
end
end
end
end
end