Sha256: 35ee44e6019b62885ee6763edc1e947e602525149d138e28fd421b1c493cf65a

Contents?: true

Size: 1.18 KB

Versions: 6

Compression:

Stored size: 1.18 KB

Contents

module Misc
  def self.pid_alive?(pid)
    !! Process.kill(0, pid) rescue false
  end

  def self.benchmark(repeats = 1, message = nil)
    require 'benchmark'
    res = nil
    begin
      measure = Benchmark.measure do
        repeats.times do |i|
          res = yield i
        end
      end
      if message
        puts "#{message }: #{ repeats } repeats"
      else
        puts "Benchmark for #{ repeats } repeats (#{caller.first})"
      end
      puts measure
    rescue Exception
      puts "Benchmark aborted"
      raise $!
    end
    res
  end

  def self.profile(options = {})
    require 'ruby-prof'
    profiler = RubyProf::Profile.new
    profiler.start
    begin
      res = yield
    rescue Exception
      puts "Profiling aborted"
      raise $!
    ensure
      result = profiler.stop
      printer = RubyProf::FlatPrinter.new(result)
      printer.print(STDOUT, options)
    end

    res
  end

  def self.exec_time(&block)
    start = Time.now
    eend = nil
    begin
      yield
    ensure
      eend = Time.now
    end
    eend - start
  end

  def self.wait_for_interrupt
    while true
      begin
        sleep 1
      rescue Interrupt
        break
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
scout-essentials-1.6.1 lib/scout/misc/monitor.rb
scout-essentials-1.6.0 lib/scout/misc/monitor.rb
scout-essentials-1.3.1 lib/scout/misc/monitor.rb
scout-essentials-1.3.0 lib/scout/misc/monitor.rb
scout-essentials-1.2.0 lib/scout/misc/monitor.rb
scout-essentials-1.1.1 lib/scout/misc/monitor.rb