Skip to content

Commit c9f240c

Browse files
committed
Inline method in the only object that is using it
1 parent 4e1c54b commit c9f240c

5 files changed

Lines changed: 209 additions & 81 deletions

File tree

lib/benchmark_runner.rb

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,6 @@ def expand_pre_init(path)
4141
]
4242
end
4343

44-
# Sort benchmarks with headlines first, then others, then micro
45-
def sort_benchmarks(bench_names, metadata)
46-
headline_benchmarks = metadata.select { |_, meta| meta['category'] == 'headline' }.keys
47-
micro_benchmarks = metadata.select { |_, meta| meta['category'] == 'micro' }.keys
48-
49-
headline_names, bench_names = bench_names.partition { |name| headline_benchmarks.include?(name) }
50-
micro_names, other_names = bench_names.partition { |name| micro_benchmarks.include?(name) }
51-
headline_names.sort + other_names.sort + micro_names.sort
52-
end
53-
5444
# Check which OS we are running
5545
def os
5646
@os ||= (

lib/results_table_builder.rb

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
require_relative '../misc/stats'
2+
require 'yaml'
23

34
class ResultsTableBuilder
45
SECONDS_TO_MS = 1000.0
56
BYTES_TO_MIB = 1024.0 * 1024.0
67

7-
def initialize(executable_names:, bench_data:, bench_names:, include_rss: false)
8+
def initialize(executable_names:, bench_data:, include_rss: false)
89
@executable_names = executable_names
910
@bench_data = bench_data
10-
@bench_names = bench_names
1111
@include_rss = include_rss
1212
@base_name = executable_names.first
1313
@other_names = executable_names[1..]
14+
@bench_names = compute_bench_names
1415
end
1516

1617
def build
@@ -143,4 +144,21 @@ def stddev(values)
143144
def stddev_percent(values)
144145
100 * stddev(values) / mean(values)
145146
end
147+
148+
def compute_bench_names
149+
# Get keys from all rows in case a benchmark failed for only some executables
150+
all_bench_names = @bench_data.map { |k, v| v.keys }.flatten.uniq
151+
benchmarks_metadata = YAML.load_file('benchmarks.yml')
152+
sort_benchmarks(all_bench_names, benchmarks_metadata)
153+
end
154+
155+
# Sort benchmarks with headlines first, then others, then micro
156+
def sort_benchmarks(bench_names, metadata)
157+
headline_benchmarks = metadata.select { |_, meta| meta['category'] == 'headline' }.keys
158+
micro_benchmarks = metadata.select { |_, meta| meta['category'] == 'micro' }.keys
159+
160+
headline_names, bench_names = bench_names.partition { |name| headline_benchmarks.include?(name) }
161+
micro_names, other_names = bench_names.partition { |name| micro_benchmarks.include?(name) }
162+
headline_names.sort + other_names.sort + micro_names.sort
163+
end
146164
end

run_benchmarks.rb

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,6 @@ def benchmarks_metadata
2929
@benchmarks_metadata ||= YAML.load_file('benchmarks.yml')
3030
end
3131

32-
def sort_benchmarks(bench_names)
33-
BenchmarkRunner.sort_benchmarks(bench_names, benchmarks_metadata)
34-
end
35-
3632
# Run all the benchmarks and record execution times
3733
def run_benchmarks(ruby:, ruby_description:, categories:, name_filters:, out_path:, harness:, pre_init:, no_pinning:)
3834
bench_data = {}
@@ -175,9 +171,6 @@ def run_benchmarks(ruby:, ruby_description:, categories:, name_filters:, out_pat
175171
end
176172

177173
bench_end_time = Time.now.to_f
178-
# Get keys from all rows in case a benchmark failed for only some executables.
179-
bench_names = sort_benchmarks(bench_data.map { |k, v| v.keys }.flatten.uniq)
180-
181174
bench_total_time = (bench_end_time - bench_start_time).to_i
182175
puts("Total time spent benchmarking: #{bench_total_time}s")
183176

@@ -193,7 +186,6 @@ def run_benchmarks(ruby:, ruby_description:, categories:, name_filters:, out_pat
193186
builder = ResultsTableBuilder.new(
194187
executable_names: all_names,
195188
bench_data: bench_data,
196-
bench_names: bench_names,
197189
include_rss: args.rss
198190
)
199191
table, format = builder.build

test/benchmark_runner_test.rb

Lines changed: 0 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -107,57 +107,6 @@
107107
end
108108
end
109109

110-
describe '.sort_benchmarks' do
111-
before do
112-
@metadata = {
113-
'fib' => { 'category' => 'micro' },
114-
'railsbench' => { 'category' => 'headline' },
115-
'optcarrot' => { 'category' => 'headline' },
116-
'some_bench' => { 'category' => 'other' },
117-
'another_bench' => { 'category' => 'other' },
118-
'zebra' => { 'category' => 'other' }
119-
}
120-
end
121-
122-
it 'sorts benchmarks with headlines first, then others, then micro' do
123-
bench_names = ['fib', 'some_bench', 'railsbench', 'another_bench', 'optcarrot']
124-
result = BenchmarkRunner.sort_benchmarks(bench_names, @metadata)
125-
126-
# Headlines should be first
127-
headline_indices = [result.index('railsbench'), result.index('optcarrot')]
128-
assert_equal true, headline_indices.all? { |i| i < 2 }
129-
130-
# Micro should be last
131-
assert_equal 'fib', result.last
132-
133-
# Others in the middle
134-
other_indices = [result.index('some_bench'), result.index('another_bench')]
135-
assert_equal true, other_indices.all? { |i| i >= 2 && i < result.length - 1 }
136-
end
137-
138-
it 'sorts alphabetically within categories' do
139-
bench_names = ['zebra', 'another_bench', 'some_bench']
140-
result = BenchmarkRunner.sort_benchmarks(bench_names, @metadata)
141-
assert_equal ['another_bench', 'some_bench', 'zebra'], result
142-
end
143-
144-
it 'handles empty list' do
145-
result = BenchmarkRunner.sort_benchmarks([], @metadata)
146-
assert_equal [], result
147-
end
148-
149-
it 'handles single benchmark' do
150-
result = BenchmarkRunner.sort_benchmarks(['fib'], @metadata)
151-
assert_equal ['fib'], result
152-
end
153-
154-
it 'handles only headline benchmarks' do
155-
bench_names = ['railsbench', 'optcarrot']
156-
result = BenchmarkRunner.sort_benchmarks(bench_names, @metadata)
157-
assert_equal ['optcarrot', 'railsbench'], result
158-
end
159-
end
160-
161110
describe '.os' do
162111
it 'detects the operating system' do
163112
result = BenchmarkRunner.os

0 commit comments

Comments
 (0)