Sha256: e6de3da92d51946ad8aa01a6f7f4b727add0baf36892cfcef3c2a94729ea33f8

Contents?: true

Size: 934 Bytes

Versions: 4

Compression:

Stored size: 934 Bytes

Contents

module Endeca
  module Benchmarking
    # Log and benchmark the workings of a single block. Will only be called if
    # Endeca.debug and Endeca.benchmark are true.
    def bm(metric_symbol, detail = nil)
      result = nil
      ms = ::Benchmark.ms { result = yield }
      add_bm_detail(metric_symbol,ms,detail) if detail.to_s.strip.length > 0
      increase_metric(metric_symbol, ms)
      Endeca.logger.debug("#{metric_symbol.to_s}: #{'%.1f' % ms}ms")
      result
    end

    def increase_metric(metric_symbol, up_value)
      Thread.current[:endeca] ||= {}
      Thread.current[:endeca][metric_symbol] ||= 0
      Thread.current[:endeca][metric_symbol] += up_value
    end

    private

    def add_bm_detail(label,time,detail)
      Thread.current[:endeca] ||= {}
      Thread.current[:endeca]["#{label}_detail"] ||= []
      Thread.current[:endeca]["#{label}_detail"] << {:detail => detail, :time => time} 
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
endeca-1.5.3 lib/endeca/benchmarking.rb
endeca-1.5.2 lib/endeca/benchmarking.rb
endeca-1.5.1 lib/endeca/benchmarking.rb
endeca-1.5.0 lib/endeca/benchmarking.rb