module Morpheus::Benchmarking::HasBenchmarking

Mixin for any class that needs benchmarking

Public Instance Methods

start_benchmark(opts) click to toggle source
# File lib/morpheus/benchmarking.rb, line 141
def start_benchmark(opts)
  @benchmark_record = BenchmarkRecord.new(opts)
  return @benchmark_record
end
stop_benchmark(exit_code=0, err=nil) click to toggle source

finish the current benchmark and optionally print the time taken.

# File lib/morpheus/benchmarking.rb, line 147
def stop_benchmark(exit_code=0, err=nil)
  if defined?(@benchmark_record) && @benchmark_record
    @benchmark_record.stop(exit_code, err)
    @last_benchmark_record = @benchmark_record
    @benchmark_record = nil
    return @last_benchmark_record
  else
    return nil
  end
end
with_benchmark(opts, &block) click to toggle source

def benchmark_record

@benchmark_record

end

# File lib/morpheus/benchmarking.rb, line 122
def with_benchmark(opts, &block)
  exit_code, err = 0, nil
  begin
    start_benchmark(opts)
    if block_given?
      result = block.call()
      exit_code, err = Morpheus::Cli::CliRegistry.parse_command_result(result)
    end
  rescue => ex
    raise ex
    exit_code = 1
    err = ex.msg
  ensure
    stop_benchmark(exit_code, err)
  end
  #return result
  return exit_code, err
end