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