Sha256: 6e2fea54265bcc844f4484cd0b4257cfada6493c73323ea3c767b70ca1f73d95

Contents?: true

Size: 692 Bytes

Versions: 4

Compression:

Stored size: 692 Bytes

Contents

module CompSci
  module 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_avg(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
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
compsci-0.3.1.1 lib/compsci/timer.rb
compsci-0.3.0.1 lib/compsci/timer.rb
compsci-0.2.0.1 lib/compsci/timer.rb
compsci-0.1.1.1 lib/compsci/timer.rb