Class: MinerMover::Timer
- Inherits:
-
Object
- Object
- MinerMover::Timer
- Defined in:
- lib/miner_mover/timer.rb
Constant Summary collapse
- SECS_PER_MIN =
60
- MINS_PER_HOUR =
60
- SECS_PER_HOUR =
SECS_PER_MIN * MINS_PER_HOUR
Class Method Summary collapse
- .elapsed(&work) ⇒ Object
-
.elapsed_display(elapsed_ms, show_micro: false) ⇒ Object
HH::MM::SS.mmm.uuuuuuuu.
- .now ⇒ Object
- .since(f) ⇒ Object
-
.timestamp(t = Time.now) ⇒ Object
YYYY-MM-DD HH::MM::SS.mmm.
Instance Method Summary collapse
- #elapsed(f = Timer.now) ⇒ Object
- #elapsed_display(f = Timer.now) ⇒ Object (also: #to_s, #inspect)
- #elapsed_ms(f = Timer.now) ⇒ Object
- #restart(f = Timer.now) ⇒ Object (also: #initialize)
Class Method Details
.elapsed(&work) ⇒ Object
22 23 24 25 |
# File 'lib/miner_mover/timer.rb', line 22 def self.elapsed &work f = self.now return yield, self.since(f) end |
.elapsed_display(elapsed_ms, show_micro: false) ⇒ Object
HH::MM::SS.mmm.uuuuuuuu
28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/miner_mover/timer.rb', line 28 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_micro hmsms.join('.') end |
.now ⇒ Object
9 10 11 |
# File 'lib/miner_mover/timer.rb', line 9 def self.now Process.clock_gettime Process::CLOCK_MONOTONIC end |
.since(f) ⇒ Object
18 19 20 |
# File 'lib/miner_mover/timer.rb', line 18 def self.since f self.now - f end |
.timestamp(t = Time.now) ⇒ Object
YYYY-MM-DD HH::MM::SS.mmm
43 44 45 |
# File 'lib/miner_mover/timer.rb', line 43 def self.(t = Time.now) t.strftime "%Y-%m-%d %H:%M:%S.%L" end |
Instance Method Details
#elapsed(f = Timer.now) ⇒ Object
53 54 55 |
# File 'lib/miner_mover/timer.rb', line 53 def elapsed(f = Timer.now) f - @start end |
#elapsed_display(f = Timer.now) ⇒ Object Also known as: to_s, inspect
61 62 63 |
# File 'lib/miner_mover/timer.rb', line 61 def elapsed_display(f = Timer.now) Timer.elapsed_display(elapsed_ms(f)) end |