Skip to content

Commit 03fafdf

Browse files
committed
Inline method in the only object that is using it
1 parent fad55f8 commit 03fafdf

File tree

5 files changed

+209
-82
lines changed

5 files changed

+209
-82
lines changed

lib/benchmark_runner.rb

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,6 @@ def free_file_no(directory)
1616
end
1717
end
1818

19-
# Sort benchmarks with headlines first, then others, then micro
20-
def sort_benchmarks(bench_names, metadata)
21-
headline_benchmarks = metadata.select { |_, meta| meta['category'] == 'headline' }.keys
22-
micro_benchmarks = metadata.select { |_, meta| meta['category'] == 'micro' }.keys
23-
24-
headline_names, bench_names = bench_names.partition { |name| headline_benchmarks.include?(name) }
25-
micro_names, other_names = bench_names.partition { |name| micro_benchmarks.include?(name) }
26-
headline_names.sort + other_names.sort + micro_names.sort
27-
end
28-
2919
# Checked system - error or return info if the command fails
3020
def check_call(command, env: {}, raise_error: true, quiet: false)
3121
puts("+ #{command}") unless quiet

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 & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,6 @@
1515
require_relative 'lib/argument_parser'
1616
require_relative 'lib/results_table_builder'
1717

18-
def sort_benchmarks(bench_names)
19-
benchmarks_metadata = YAML.load_file('benchmarks.yml')
20-
BenchmarkRunner.sort_benchmarks(bench_names, benchmarks_metadata)
21-
end
22-
2318
args = ArgumentParser.parse(ARGV)
2419

2520
CPUConfig.configure_for_benchmarking(turbo: args.turbo)
@@ -52,9 +47,6 @@ def sort_benchmarks(bench_names)
5247
end
5348

5449
bench_end_time = Time.now.to_f
55-
# Get keys from all rows in case a benchmark failed for only some executables.
56-
bench_names = sort_benchmarks(bench_data.map { |k, v| v.keys }.flatten.uniq)
57-
5850
bench_total_time = (bench_end_time - bench_start_time).to_i
5951
puts("Total time spent benchmarking: #{bench_total_time}s")
6052

@@ -70,7 +62,6 @@ def sort_benchmarks(bench_names)
7062
builder = ResultsTableBuilder.new(
7163
executable_names: all_names,
7264
bench_data: bench_data,
73-
bench_names: bench_names,
7465
include_rss: args.rss
7566
)
7667
table, format = builder.build

test/benchmark_runner_test.rb

Lines changed: 0 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -49,57 +49,6 @@
4949
end
5050
end
5151

52-
describe '.sort_benchmarks' do
53-
before do
54-
@metadata = {
55-
'fib' => { 'category' => 'micro' },
56-
'railsbench' => { 'category' => 'headline' },
57-
'optcarrot' => { 'category' => 'headline' },
58-
'some_bench' => { 'category' => 'other' },
59-
'another_bench' => { 'category' => 'other' },
60-
'zebra' => { 'category' => 'other' }
61-
}
62-
end
63-
64-
it 'sorts benchmarks with headlines first, then others, then micro' do
65-
bench_names = ['fib', 'some_bench', 'railsbench', 'another_bench', 'optcarrot']
66-
result = BenchmarkRunner.sort_benchmarks(bench_names, @metadata)
67-
68-
# Headlines should be first
69-
headline_indices = [result.index('railsbench'), result.index('optcarrot')]
70-
assert_equal true, headline_indices.all? { |i| i < 2 }
71-
72-
# Micro should be last
73-
assert_equal 'fib', result.last
74-
75-
# Others in the middle
76-
other_indices = [result.index('some_bench'), result.index('another_bench')]
77-
assert_equal true, other_indices.all? { |i| i >= 2 && i < result.length - 1 }
78-
end
79-
80-
it 'sorts alphabetically within categories' do
81-
bench_names = ['zebra', 'another_bench', 'some_bench']
82-
result = BenchmarkRunner.sort_benchmarks(bench_names, @metadata)
83-
assert_equal ['another_bench', 'some_bench', 'zebra'], result
84-
end
85-
86-
it 'handles empty list' do
87-
result = BenchmarkRunner.sort_benchmarks([], @metadata)
88-
assert_equal [], result
89-
end
90-
91-
it 'handles single benchmark' do
92-
result = BenchmarkRunner.sort_benchmarks(['fib'], @metadata)
93-
assert_equal ['fib'], result
94-
end
95-
96-
it 'handles only headline benchmarks' do
97-
bench_names = ['railsbench', 'optcarrot']
98-
result = BenchmarkRunner.sort_benchmarks(bench_names, @metadata)
99-
assert_equal ['optcarrot', 'railsbench'], result
100-
end
101-
end
102-
10352
describe '.check_call' do
10453
it 'runs a successful command and returns success status' do
10554
result = nil

0 commit comments

Comments
 (0)