aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_view/helpers/benchmark_helper.rb
blob: 126f505a9818c34f0d8c87d3978ede6fa4393b8c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
require 'benchmark'

module ActionView
  module Helpers
    module BenchmarkHelper
      # Measures the execution time of a block in a template and reports the result to the log. Example:
      #
      #  <% benchmark "Notes section" do %>
      #    <%= expensive_notes_operation %>
      #  <% end %>
      #
      # Will add something like "Notes section (0.345234)" to the log.
      def benchmark(message = "Benchmarking", &block)
        return if @logger.nil?

        bm = Benchmark.measure do
          block.call
        end
        
        @logger.info("#{message} (#{bm.real})")
      end
    end
  end
end