Sha256: 9dbf5c0e05ef9222a31c09c80b225c626eeb97fb9e5f0fedc5c94d43ba16cc22

Contents?: true

Size: 643 Bytes

Versions: 2

Compression:

Stored size: 643 Bytes

Contents

require 'compsci'

module CompSci::Timer
  # lifted from seattlerb/minitest
  if defined? Process::CLOCK_MONOTONIC
    def self.now
      Process.clock_gettime Process::CLOCK_MONOTONIC
    end
  else
    def self.now
      Time.now
    end
  end

  def self.since(t)
    self.now - t
  end

  def self.elapsed(&work)
    t = self.now
    return yield, self.since(t)
  end

  def self.loop_average(count: 999, seconds: 1, &work)
    i = 0
    start = self.now
    val = nil
    loop {
      val = yield
      i += 1
      break if i >= count
      break if self.since(start) > seconds
    }
    return val, self.since(start) / i.to_f
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
compsci-0.0.2.1 lib/compsci/timer.rb
compsci-0.0.1.1 lib/compsci/timer.rb