lib/compsci/timer.rb in compsci-0.3.2.4 vs lib/compsci/timer.rb in compsci-0.3.3.1

- old
+ new

@@ -2,28 +2,28 @@ class Timer SECS_PER_MIN = 60 MINS_PER_HOUR = 60 SECS_PER_HOUR = SECS_PER_MIN * MINS_PER_HOUR - # lifted from seattlerb/minitest + # returns a float representing seconds since epoch if defined? Process::CLOCK_MONOTONIC def self.now Process.clock_gettime Process::CLOCK_MONOTONIC end else def self.now - Time.now + Time.now.to_f end end - def self.since(t) - self.now - t + def self.since f + self.now - f end - def self.elapsed(&work) - t = self.now - return yield, self.since(t) + def self.elapsed &work + f = self.now + return yield, self.since(f) end def self.loop_avg(count: 999, seconds: 1, &work) i = 0 start = self.now @@ -32,65 +32,49 @@ val = yield i += 1 break if i >= count break if self.since(start) > seconds } - return val, self.since(start) / i.to_f + return val, self.since(start) / i end - # YYYY-MM-DD HH::MM::SS.mmm - def self.timestamp(t = Time.now) - t.strftime "%Y-%m-%d %H:%M:%S.%L" - end - # HH::MM::SS.mmm.uuuuuuuu - def self.elapsed_display(elapsed_ms, show_us: false) + def self.elapsed_display(elapsed_ms, show_micro: false) elapsed_s, ms = elapsed_ms.divmod 1000 ms_only, ms_fraction = ms.round(8).divmod 1 h = elapsed_s / SECS_PER_HOUR elapsed_s -= h * SECS_PER_HOUR m, s = elapsed_s.divmod SECS_PER_MIN hmsms = [[h, m, s].map { |i| i.to_s.rjust(2, '0') }.join(':'), ms_only.to_s.rjust(3, '0')] - hmsms << (ms_fraction * 10 ** 8).round.to_s.ljust(8, '0') if show_us + hmsms << (ms_fraction * 10 ** 8).round.to_s.ljust(8, '0') if show_micro hmsms.join('.') end - def restart(t = Timer.now) - @start = t + # YYYY-MM-DD HH::MM::SS.mmm + def self.timestamp(t = Time.now) + t.strftime "%Y-%m-%d %H:%M:%S.%L" + end + + def restart(f = Timer.now) + @start = f self end alias_method :initialize, :restart - def timestamp(t = Time.now) - self.class.timestamp t + def elapsed(f = Timer.now) + f - @start end - def timestamp!(t = Time.now) - puts '-' * 70, timestamp(t), '-' * 70 + def elapsed_ms(f = Timer.now) + elapsed(f) * 1000 end - def elapsed(t = Timer.now) - t - @start + def elapsed_display(f = Timer.now) + Timer.elapsed_display(elapsed_ms(f)) end - - def elapsed_ms(t = Timer.now) - elapsed(t) * 1000 - end - - def elapsed_display(t = Timer.now) - self.class.elapsed_display(elapsed_ms(t)) - end alias_method :to_s, :elapsed_display alias_method :inspect, :elapsed_display - - def stamp(msg = '', t = Timer.now) - format("%s %s", elapsed_display(t), msg) - end - - def stamp!(msg = '', t = Timer.now) - puts stamp(msg, t) - end end end