class Diagnostics::Sample
Attributes
cycles[W]
warmup_cycles[W]
Public Class Methods
build(cycles=nil, warmup_cycles: nil, gc: nil, &action)
click to toggle source
# File lib/diagnostics/sample/sample.rb, line 25 def self.build(cycles=nil, warmup_cycles: nil, gc: nil, &action) gc = Defaults.gc if gc.nil? result = Result.new result.gc = gc instance = new(result) instance.cycles = cycles unless cycles.nil? instance.warmup_cycles = warmup_cycles unless warmup_cycles.nil? instance.configure(action: action, gc: gc) instance end
call(cycles=nil, warmup_cycles: nil, gc: nil, &action)
click to toggle source
# File lib/diagnostics/sample/sample.rb, line 40 def self.call(cycles=nil, warmup_cycles: nil, gc: nil, &action) instance = build(cycles, warmup_cycles: warmup_cycles, gc: gc, &action) instance.() end
Public Instance Methods
call()
click to toggle source
# File lib/diagnostics/sample/sample.rb, line 45 def call logger.trace { "Starting warmup (Warmup Cycles: #{warmup_cycles})" } warmup_cycles.times do |iteration| elapsed_time_nanoseconds = measure.(iteration) elapsed_time = milliseconds(elapsed_time_nanoseconds) result.warmup_cycle(elapsed_time) end logger.debug { "Finished warmup (Warmup Cycles: #{warmup_cycles})" } logger.trace { "Starting sample (Cycles: #{cycles}, Warmup Cycles: #{warmup_cycles})" } cycles.times do |iteration| elapsed_time_nanoseconds = measure.(iteration + self.warmup_cycles) elapsed_time = milliseconds(elapsed_time_nanoseconds) result.cycle(elapsed_time) end logger.info { "Finished sample (Cycles: #{cycles}, Warmup Cycles: #{warmup_cycles}, Mean Cycle Time: #{result.mean_cycle_time_milliseconds}ms)" } result end
configure(action: nil, gc: nil)
click to toggle source
# File lib/diagnostics/sample/sample.rb, line 11 def configure(action: nil, gc: nil) Measure.configure(self, action: action, gc: gc) end
cycles()
click to toggle source
# File lib/diagnostics/sample/sample.rb, line 16 def cycles @cycles ||= Defaults.cycles end
milliseconds(nanoseconds)
click to toggle source
# File lib/diagnostics/sample/sample.rb, line 73 def milliseconds(nanoseconds) Rational(nanoseconds, 1_000_000) end
warmup_cycles()
click to toggle source
# File lib/diagnostics/sample/sample.rb, line 21 def warmup_cycles @warmup_cycles ||= Defaults.warmup_cycles end