Class: Diagnostics::Sample
- Inherits:
-
Object
- Object
- Diagnostics::Sample
show all
- Includes:
- Log::Dependency
- Defined in:
- lib/diagnostics/sample/log.rb,
lib/diagnostics/sample/result.rb,
lib/diagnostics/sample/sample.rb,
lib/diagnostics/sample/measure.rb,
lib/diagnostics/sample/defaults.rb,
lib/diagnostics/sample/controls/mean.rb,
lib/diagnostics/sample/controls/time.rb,
lib/diagnostics/sample/measure/clock.rb,
lib/diagnostics/sample/controls/clock.rb,
lib/diagnostics/sample/controls/result.rb,
lib/diagnostics/sample/controls/frequency.rb,
lib/diagnostics/sample/controls/standard_deviation.rb
Defined Under Namespace
Modules: Controls, Defaults
Classes: Log, Measure, Result
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Instance Attribute Details
#cycles ⇒ Object
12
13
14
|
# File 'lib/diagnostics/sample/sample.rb', line 12
def cycles
@cycles ||= Defaults.cycles
end
|
#warmup_cycles ⇒ Object
17
18
19
|
# File 'lib/diagnostics/sample/sample.rb', line 17
def warmup_cycles
@warmup_cycles ||= Defaults.warmup_cycles
end
|
Class Method Details
.build(cycles = nil, warmup_cycles: nil, gc: nil, &action) ⇒ Object
25
26
27
28
29
30
31
32
33
|
# File 'lib/diagnostics/sample/sample.rb', line 25
def self.build(cycles=nil, warmup_cycles: nil, gc: nil, &action)
instance = new
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) ⇒ Object
35
36
37
38
|
# File 'lib/diagnostics/sample/sample.rb', line 35
def self.call(cycles=nil, warmup_cycles: nil, gc: nil, &action)
instance = build(cycles, warmup_cycles: warmup_cycles, gc: gc, &action)
instance.()
end
|
Instance Method Details
#call ⇒ Object
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/diagnostics/sample/sample.rb', line 40
def call
logger.trace { "Starting warmup (Warmup Cycles: #{warmup_cycles})" }
warmup_cycles.times do
elapsed_time_nanoseconds = measure.()
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
elapsed_time_nanoseconds = measure.()
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
|
7
8
9
|
# File 'lib/diagnostics/sample/sample.rb', line 7
def configure(action: nil, gc: nil)
Measure.configure(self, action: action, gc: gc)
end
|
#milliseconds(nanoseconds) ⇒ Object
68
69
70
|
# File 'lib/diagnostics/sample/sample.rb', line 68
def milliseconds(nanoseconds)
Rational(nanoseconds, 1_000_000)
end
|
#result ⇒ Object
21
22
23
|
# File 'lib/diagnostics/sample/sample.rb', line 21
def result
@result ||= Result.new
end
|