Module: Morpheus::Benchmarking::HasBenchmarking

Included in:
Terminal
Defined in:
lib/morpheus/benchmarking.rb

Overview

Mixin for any class that needs benchmarking

Instance Method Summary collapse

Instance Method Details

#start_benchmark(opts) ⇒ Object



149
150
151
152
# File 'lib/morpheus/benchmarking.rb', line 149

def start_benchmark(opts)
  @benchmark_record = BenchmarkRecord.new(opts)
  return @benchmark_record
end

#stop_benchmark(exit_code = 0, err = nil) ⇒ Object

finish the current benchmark and optionally print the time taken.



155
156
157
158
159
160
161
162
163
164
# File 'lib/morpheus/benchmarking.rb', line 155

def stop_benchmark(exit_code=0, err=nil)
  if @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) ⇒ Object

def benchmark_record

@benchmark_record

end



121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# File 'lib/morpheus/benchmarking.rb', line 121

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::CliCommand.parse_command_result(result)
      if result.is_a?(Array)
        exit_code = result[0]
        err = result[0]
      elsif result == true || result == nil
        exit_code = 0
      elsif result == false
        exit_code = 1
      else
        exit_code = result
      end
    end
  rescue => ex
    raise ex
    # exit_code = 1
    # err = ex.msg
  ensure
    stop_benchmark(exit_code, err)
  end
  return exit_code, err
end