Module: Coradoc::PerformanceRegression
- Defined in:
- lib/coradoc/performance_regression.rb
Defined Under Namespace
Classes: BenchmarkResult, ComparisonResult
Constant Summary
collapse
- THRESHOLDS =
{
markdown_parse_small: 2.0,
markdown_parse_medium: 3.0,
asciidoc_parse: 5.0,
html_serialize: 5.0,
md_to_html: 10.0,
adoc_to_html: 10.0,
core_model_creation: 1.0
}.freeze
Class Method Summary
collapse
Class Method Details
.compare_with_baseline(baseline_path, iterations: 3) ⇒ Object
63
64
65
66
67
68
69
70
71
72
73
|
# File 'lib/coradoc/performance_regression.rb', line 63
def compare_with_baseline(baseline_path, iterations: 3)
return [] unless File.exist?(baseline_path)
baseline_data = JSON.parse(File.read(baseline_path))
baseline_map = baseline_data.each_with_object({}) { |d, m| m[d['name']] = d['duration'] }
results = run_all(iterations:)
results.map do |r|
ComparisonResult.new(name: r.name, duration: r.duration, baseline: baseline_map[r.name])
end
end
|
.print_results(summary) ⇒ Object
53
54
55
56
57
58
59
60
61
|
# File 'lib/coradoc/performance_regression.rb', line 53
def print_results(summary)
results = summary[:results]
results.each do |r|
status = r.passed? ? 'PASS' : 'FAIL'
puts " #{status} #{r.name}: #{r.duration.round(4)}s (threshold: #{r.threshold}s)"
end
puts
puts "#{summary[:total] - summary[:failed_count]}/#{summary[:total]} passed"
end
|
.run_all(iterations: 3) ⇒ Object
37
38
39
40
41
42
43
44
45
|
# File 'lib/coradoc/performance_regression.rb', line 37
def run_all(iterations: 3)
benchmarks = build_benchmarks
benchmarks.map do |name, threshold, block|
times = []
iterations.times { times << Benchmark.realtime { block.call } }
avg = times.sum / times.size
BenchmarkResult.new(name:, duration: avg, iterations:, threshold:)
end
end
|
.run_all_with_summary(iterations: 3) ⇒ Object
47
48
49
50
51
|
# File 'lib/coradoc/performance_regression.rb', line 47
def run_all_with_summary(iterations: 3)
results = run_all(iterations:)
failed = results.count { |r| !r.passed? }
{ results:, failed_count: failed, total: results.size }
end
|