class PerfLab::Operator

Public Class Methods

new(existing:, improved:, equality:) click to toggle source
# File lib/perflab/operator.rb, line 3
def initialize(existing:, improved:, equality:)
  @existing = existing
  @improved = improved
  @equality = equality
end

Public Instance Methods

bmbm() click to toggle source
# File lib/perflab/operator.rb, line 25
def bmbm
  Benchmark.bmbm(@improved, @existing)
end
bmbm_improved() click to toggle source
# File lib/perflab/operator.rb, line 29
def bmbm_improved
  Benchmark.bmbm(@improved)
end
correct?() click to toggle source
# File lib/perflab/operator.rb, line 49
def correct?
  if @equality.present?
    result = @equality.call(@existing.call, @improved.call)
    raise ArgumentError, 'Equality must return a boolean' unless [TrueClass, FalseClass].include?(result.class)

    result
  else
    @existing.call == @improved.call
  end
end
ips() click to toggle source
# File lib/perflab/operator.rb, line 33
def ips
  Benchmark.ips(@improved, @existing)
end
ips_improved() click to toggle source
# File lib/perflab/operator.rb, line 37
def ips_improved
  Benchmark.ipsa(@improved)
end
ipsa() click to toggle source
# File lib/perflab/operator.rb, line 41
def ipsa
  Benchmark.ipsa(@improved, @existing)
end
ipsa_improved() click to toggle source
# File lib/perflab/operator.rb, line 45
def ipsa_improved
  Benchmark.ipsa(@improved)
end
profile() click to toggle source
# File lib/perflab/operator.rb, line 9
def profile
  puts 'Rehearsal...'
  @improved.call

  puts 'Profiling...'
  Profiler.profile(@improved)
end
profile_existing() click to toggle source
# File lib/perflab/operator.rb, line 17
def profile_existing
  puts 'Rehearsal...'
  @existing.call

  puts 'Profiling...'
  Profiler.profile(@existing)
end