Module: Endeca::Benchmarking

Included in:
Endeca
Defined in:
lib/endeca/benchmarking.rb

Instance Method Summary collapse

Instance Method Details

#bm(metric_symbol, detail = nil) ⇒ Object

Log and benchmark the workings of a single block. Will only be called if Endeca.debug and Endeca.benchmark are true.



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/endeca/benchmarking.rb', line 7

def bm(metric_symbol, detail = nil)
  if Endeca.analyze?
    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
  else
    yield
  end
end

#increase_metric(metric_symbol, up_value) ⇒ Object



20
21
22
23
24
25
26
# File 'lib/endeca/benchmarking.rb', line 20

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