Method: RMTools.timer

Defined in:
lib/rmtools/dev/timer.rb

.timer(ts = 1, output = true) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/rmtools/dev/timer.rb', line 5

def timer(ts=1, output=true)
  timez = ts - 1
  quiet, mute_warn = $quiet, $log.mute_warn
  $quiet = $log.mute_warn = true
  t1 = Time.now
  begin
    timez.times {yield} if timez > 0
  rescue
    $quiet, $log.mute_warn = quiet, mute_warn
    raise $!
  end
  res = yield
  t2 = Time.now
  ts.times {}
  t3 = Time.now.to_f*1000
  t2 = t2.to_f*1000
  t1 = t1.to_f*1000
  delta = (t2 - t1 - (t3 - t2)).round.to_f
  $quiet, $log.mute_warn = quiet, mute_warn
  res = res.inspect
  puts "#{output ? "res: #{res.size > 1000 ? res[0...999]+"…" : res}\n" : "size of res string: #{res.to_s.size}, "}one: #{Painter.gray '%0.4fms'%[delta/ts]}, total: #{Painter.gray "#{delta}ms"}"
end