rails_benchmark_suite 0.2.9 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +3 -1
- data/CHANGELOG.md +65 -0
- data/Gemfile.lock +29 -1
- data/README.md +103 -10
- data/bin/rails_benchmark_suite +35 -12
- data/docs/images/report_v0_3_1.png +0 -0
- data/lib/dummy/app/models/benchmark_job.rb +7 -0
- data/lib/dummy/app/models/benchmark_post.rb +9 -0
- data/lib/dummy/app/models/benchmark_user.rb +9 -0
- data/lib/dummy/app/views/rails_benchmark_suite/heft_view.html.erb +11 -0
- data/lib/dummy/config/benchmark_database.yml +16 -0
- data/lib/rails_benchmark_suite/configuration.rb +22 -0
- data/lib/rails_benchmark_suite/database_manager.rb +56 -0
- data/lib/rails_benchmark_suite/db_setup.rb +3 -0
- data/lib/rails_benchmark_suite/models/user.rb +4 -3
- data/lib/rails_benchmark_suite/reporter.rb +215 -5
- data/lib/rails_benchmark_suite/reporters/html_reporter.rb +52 -0
- data/lib/rails_benchmark_suite/runner.rb +46 -191
- data/lib/rails_benchmark_suite/schema.rb +5 -5
- data/lib/rails_benchmark_suite/templates/report.html.erb +187 -0
- data/lib/rails_benchmark_suite/version.rb +1 -1
- data/lib/rails_benchmark_suite/workload_runner.rb +158 -0
- data/lib/rails_benchmark_suite/{suites/active_record_suite.rb → workloads/active_record_workload.rb} +7 -7
- data/lib/rails_benchmark_suite/{suites/cache_heft_suite.rb → workloads/cache_heft_workload.rb} +2 -2
- data/lib/rails_benchmark_suite/{suites/image_heft_suite.rb → workloads/image_heft_workload.rb} +3 -4
- data/lib/rails_benchmark_suite/{suites/job_heft_suite.rb → workloads/job_heft_workload.rb} +4 -4
- data/lib/rails_benchmark_suite/workloads/view_heft_workload.rb +36 -0
- data/lib/rails_benchmark_suite.rb +3 -22
- data/rails_benchmark_suite.gemspec +7 -2
- metadata +92 -10
- data/lib/rails_benchmark_suite/suites/view_heft_suite.rb +0 -44
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rails_benchmark_suite
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- RailsBenchmarkSuite Contributors
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date: 2026-01-
|
|
10
|
+
date: 2026-01-04 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: benchmark-ips
|
|
@@ -121,6 +121,62 @@ dependencies:
|
|
|
121
121
|
- - "~>"
|
|
122
122
|
- !ruby/object:Gem::Version
|
|
123
123
|
version: '1.0'
|
|
124
|
+
- !ruby/object:Gem::Dependency
|
|
125
|
+
name: tty-spinner
|
|
126
|
+
requirement: !ruby/object:Gem::Requirement
|
|
127
|
+
requirements:
|
|
128
|
+
- - "~>"
|
|
129
|
+
- !ruby/object:Gem::Version
|
|
130
|
+
version: '0.9'
|
|
131
|
+
type: :runtime
|
|
132
|
+
prerelease: false
|
|
133
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
134
|
+
requirements:
|
|
135
|
+
- - "~>"
|
|
136
|
+
- !ruby/object:Gem::Version
|
|
137
|
+
version: '0.9'
|
|
138
|
+
- !ruby/object:Gem::Dependency
|
|
139
|
+
name: tty-table
|
|
140
|
+
requirement: !ruby/object:Gem::Requirement
|
|
141
|
+
requirements:
|
|
142
|
+
- - "~>"
|
|
143
|
+
- !ruby/object:Gem::Version
|
|
144
|
+
version: '0.12'
|
|
145
|
+
type: :runtime
|
|
146
|
+
prerelease: false
|
|
147
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
148
|
+
requirements:
|
|
149
|
+
- - "~>"
|
|
150
|
+
- !ruby/object:Gem::Version
|
|
151
|
+
version: '0.12'
|
|
152
|
+
- !ruby/object:Gem::Dependency
|
|
153
|
+
name: tty-box
|
|
154
|
+
requirement: !ruby/object:Gem::Requirement
|
|
155
|
+
requirements:
|
|
156
|
+
- - "~>"
|
|
157
|
+
- !ruby/object:Gem::Version
|
|
158
|
+
version: '0.7'
|
|
159
|
+
type: :runtime
|
|
160
|
+
prerelease: false
|
|
161
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
162
|
+
requirements:
|
|
163
|
+
- - "~>"
|
|
164
|
+
- !ruby/object:Gem::Version
|
|
165
|
+
version: '0.7'
|
|
166
|
+
- !ruby/object:Gem::Dependency
|
|
167
|
+
name: pastel
|
|
168
|
+
requirement: !ruby/object:Gem::Requirement
|
|
169
|
+
requirements:
|
|
170
|
+
- - "~>"
|
|
171
|
+
- !ruby/object:Gem::Version
|
|
172
|
+
version: '0.8'
|
|
173
|
+
type: :runtime
|
|
174
|
+
prerelease: false
|
|
175
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
176
|
+
requirements:
|
|
177
|
+
- - "~>"
|
|
178
|
+
- !ruby/object:Gem::Version
|
|
179
|
+
version: '0.8'
|
|
124
180
|
- !ruby/object:Gem::Dependency
|
|
125
181
|
name: bundler
|
|
126
182
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -163,8 +219,23 @@ dependencies:
|
|
|
163
219
|
- - "~>"
|
|
164
220
|
- !ruby/object:Gem::Version
|
|
165
221
|
version: '5.0'
|
|
166
|
-
|
|
167
|
-
|
|
222
|
+
- !ruby/object:Gem::Dependency
|
|
223
|
+
name: ostruct
|
|
224
|
+
requirement: !ruby/object:Gem::Requirement
|
|
225
|
+
requirements:
|
|
226
|
+
- - "~>"
|
|
227
|
+
- !ruby/object:Gem::Version
|
|
228
|
+
version: '0.6'
|
|
229
|
+
type: :development
|
|
230
|
+
prerelease: false
|
|
231
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
232
|
+
requirements:
|
|
233
|
+
- - "~>"
|
|
234
|
+
- !ruby/object:Gem::Version
|
|
235
|
+
version: '0.6'
|
|
236
|
+
description: Measures the Rails Heft Index (RHI), a weighted performance score based
|
|
237
|
+
on realistic Rails 8+ workloads across Active Record, caching, views, jobs, and
|
|
238
|
+
image processing.
|
|
168
239
|
email:
|
|
169
240
|
- team@rails.org
|
|
170
241
|
executables:
|
|
@@ -181,20 +252,31 @@ files:
|
|
|
181
252
|
- README.md
|
|
182
253
|
- Rakefile
|
|
183
254
|
- bin/rails_benchmark_suite
|
|
255
|
+
- docs/images/report_v0_3_1.png
|
|
256
|
+
- lib/dummy/app/models/benchmark_job.rb
|
|
257
|
+
- lib/dummy/app/models/benchmark_post.rb
|
|
258
|
+
- lib/dummy/app/models/benchmark_user.rb
|
|
259
|
+
- lib/dummy/app/views/rails_benchmark_suite/heft_view.html.erb
|
|
260
|
+
- lib/dummy/config/benchmark_database.yml
|
|
184
261
|
- lib/rails_benchmark_suite.rb
|
|
262
|
+
- lib/rails_benchmark_suite/configuration.rb
|
|
263
|
+
- lib/rails_benchmark_suite/database_manager.rb
|
|
185
264
|
- lib/rails_benchmark_suite/db_setup.rb
|
|
186
265
|
- lib/rails_benchmark_suite/models/post.rb
|
|
187
266
|
- lib/rails_benchmark_suite/models/simulated_job.rb
|
|
188
267
|
- lib/rails_benchmark_suite/models/user.rb
|
|
189
268
|
- lib/rails_benchmark_suite/reporter.rb
|
|
269
|
+
- lib/rails_benchmark_suite/reporters/html_reporter.rb
|
|
190
270
|
- lib/rails_benchmark_suite/runner.rb
|
|
191
271
|
- lib/rails_benchmark_suite/schema.rb
|
|
192
|
-
- lib/rails_benchmark_suite/
|
|
193
|
-
- lib/rails_benchmark_suite/suites/cache_heft_suite.rb
|
|
194
|
-
- lib/rails_benchmark_suite/suites/image_heft_suite.rb
|
|
195
|
-
- lib/rails_benchmark_suite/suites/job_heft_suite.rb
|
|
196
|
-
- lib/rails_benchmark_suite/suites/view_heft_suite.rb
|
|
272
|
+
- lib/rails_benchmark_suite/templates/report.html.erb
|
|
197
273
|
- lib/rails_benchmark_suite/version.rb
|
|
274
|
+
- lib/rails_benchmark_suite/workload_runner.rb
|
|
275
|
+
- lib/rails_benchmark_suite/workloads/active_record_workload.rb
|
|
276
|
+
- lib/rails_benchmark_suite/workloads/cache_heft_workload.rb
|
|
277
|
+
- lib/rails_benchmark_suite/workloads/image_heft_workload.rb
|
|
278
|
+
- lib/rails_benchmark_suite/workloads/job_heft_workload.rb
|
|
279
|
+
- lib/rails_benchmark_suite/workloads/view_heft_workload.rb
|
|
198
280
|
- rails_benchmark_suite.gemspec
|
|
199
281
|
homepage: https://github.com/overnet/rails_benchmark_suite
|
|
200
282
|
licenses:
|
|
@@ -219,5 +301,5 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
219
301
|
requirements: []
|
|
220
302
|
rubygems_version: 3.6.2
|
|
221
303
|
specification_version: 4
|
|
222
|
-
summary: Rails-
|
|
304
|
+
summary: Rails Heft Index (RHI) - Hardware benchmarking using realistic workloads
|
|
223
305
|
test_files: []
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "action_view"
|
|
4
|
-
require "ostruct"
|
|
5
|
-
|
|
6
|
-
# Benchmark Suite
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
# Helper for the suite
|
|
10
|
-
module RailsBenchmarkSuiteNumberHelper
|
|
11
|
-
def self.number_with_delimiter(number)
|
|
12
|
-
number.to_s.gsub(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1,")
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
RailsBenchmarkSuite.register_suite("View Heft", weight: 0.2) do
|
|
17
|
-
# Setup context once
|
|
18
|
-
@view_renderer ||= begin
|
|
19
|
-
lookup_context = ActionView::LookupContext.new([File.expand_path(__dir__)])
|
|
20
|
-
ActionView::Base.with_empty_template_cache.new(lookup_context, {}, nil)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
# Workload: Render a complex ERB template
|
|
24
|
-
template = <<~ERB
|
|
25
|
-
<h1>Dashboard for <%= user.name %></h1>
|
|
26
|
-
<ul>
|
|
27
|
-
<% posts.each do |post| %>
|
|
28
|
-
<li>
|
|
29
|
-
<strong><%= post.title %></strong>
|
|
30
|
-
<p><%= post.body.truncate(50) %></p>
|
|
31
|
-
<small>Views: <%= RailsBenchmarkSuiteNumberHelper.number_with_delimiter(post.views) %></small>
|
|
32
|
-
</li>
|
|
33
|
-
<% end %>
|
|
34
|
-
</ul>
|
|
35
|
-
<footer>Generated at <%= Time.now.to_s %></footer>
|
|
36
|
-
ERB
|
|
37
|
-
|
|
38
|
-
# Dummy Objects
|
|
39
|
-
user = OpenStruct.new(name: "Speedy")
|
|
40
|
-
posts = 100.times.map { |i| OpenStruct.new(title: "Post #{i}", body: "Content " * 10, views: i * 1000) }
|
|
41
|
-
|
|
42
|
-
# Execution
|
|
43
|
-
@view_renderer.render(inline: template, locals: { user: user, posts: posts })
|
|
44
|
-
end
|