serialbench 0.1.0 → 0.1.2

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.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/benchmark.yml +181 -30
  3. data/.github/workflows/ci.yml +3 -3
  4. data/.github/workflows/docker.yml +272 -0
  5. data/.github/workflows/rake.yml +15 -0
  6. data/.github/workflows/release.yml +25 -0
  7. data/Gemfile +6 -30
  8. data/README.adoc +381 -415
  9. data/Rakefile +0 -55
  10. data/config/benchmarks/full.yml +29 -0
  11. data/config/benchmarks/short.yml +26 -0
  12. data/config/environments/asdf-ruby-3.2.yml +8 -0
  13. data/config/environments/asdf-ruby-3.3.yml +8 -0
  14. data/config/environments/docker-ruby-3.0.yml +9 -0
  15. data/config/environments/docker-ruby-3.1.yml +9 -0
  16. data/config/environments/docker-ruby-3.2.yml +9 -0
  17. data/config/environments/docker-ruby-3.3.yml +9 -0
  18. data/config/environments/docker-ruby-3.4.yml +9 -0
  19. data/docker/Dockerfile.alpine +33 -0
  20. data/docker/Dockerfile.ubuntu +32 -0
  21. data/docker/README.md +214 -0
  22. data/exe/serialbench +1 -1
  23. data/lib/serialbench/benchmark_runner.rb +270 -350
  24. data/lib/serialbench/cli/base_cli.rb +51 -0
  25. data/lib/serialbench/cli/benchmark_cli.rb +380 -0
  26. data/lib/serialbench/cli/environment_cli.rb +181 -0
  27. data/lib/serialbench/cli/resultset_cli.rb +215 -0
  28. data/lib/serialbench/cli/ruby_build_cli.rb +238 -0
  29. data/lib/serialbench/cli.rb +59 -410
  30. data/lib/serialbench/config_manager.rb +140 -0
  31. data/lib/serialbench/models/benchmark_config.rb +63 -0
  32. data/lib/serialbench/models/benchmark_result.rb +45 -0
  33. data/lib/serialbench/models/environment_config.rb +71 -0
  34. data/lib/serialbench/models/platform.rb +59 -0
  35. data/lib/serialbench/models/result.rb +53 -0
  36. data/lib/serialbench/models/result_set.rb +71 -0
  37. data/lib/serialbench/models/result_store.rb +108 -0
  38. data/lib/serialbench/models.rb +54 -0
  39. data/lib/serialbench/ruby_build_manager.rb +153 -0
  40. data/lib/serialbench/runners/asdf_runner.rb +296 -0
  41. data/lib/serialbench/runners/base.rb +32 -0
  42. data/lib/serialbench/runners/docker_runner.rb +142 -0
  43. data/lib/serialbench/serializers/base_serializer.rb +8 -16
  44. data/lib/serialbench/serializers/json/base_json_serializer.rb +4 -4
  45. data/lib/serialbench/serializers/json/json_serializer.rb +0 -2
  46. data/lib/serialbench/serializers/json/oj_serializer.rb +0 -2
  47. data/lib/serialbench/serializers/json/rapidjson_serializer.rb +50 -0
  48. data/lib/serialbench/serializers/json/yajl_serializer.rb +6 -4
  49. data/lib/serialbench/serializers/toml/base_toml_serializer.rb +5 -3
  50. data/lib/serialbench/serializers/toml/toml_rb_serializer.rb +0 -2
  51. data/lib/serialbench/serializers/toml/tomlib_serializer.rb +0 -2
  52. data/lib/serialbench/serializers/toml/tomlrb_serializer.rb +56 -0
  53. data/lib/serialbench/serializers/xml/base_xml_serializer.rb +4 -9
  54. data/lib/serialbench/serializers/xml/libxml_serializer.rb +0 -2
  55. data/lib/serialbench/serializers/xml/nokogiri_serializer.rb +21 -5
  56. data/lib/serialbench/serializers/xml/oga_serializer.rb +0 -2
  57. data/lib/serialbench/serializers/xml/ox_serializer.rb +0 -2
  58. data/lib/serialbench/serializers/xml/rexml_serializer.rb +32 -4
  59. data/lib/serialbench/serializers/yaml/base_yaml_serializer.rb +59 -0
  60. data/lib/serialbench/serializers/yaml/psych_serializer.rb +54 -0
  61. data/lib/serialbench/serializers/yaml/syck_serializer.rb +102 -0
  62. data/lib/serialbench/serializers.rb +34 -6
  63. data/lib/serialbench/site_generator.rb +105 -0
  64. data/lib/serialbench/templates/assets/css/benchmark_report.css +535 -0
  65. data/lib/serialbench/templates/assets/css/format_based.css +526 -0
  66. data/lib/serialbench/templates/assets/css/themes.css +588 -0
  67. data/lib/serialbench/templates/assets/js/chart_helpers.js +381 -0
  68. data/lib/serialbench/templates/assets/js/dashboard.js +796 -0
  69. data/lib/serialbench/templates/assets/js/navigation.js +142 -0
  70. data/lib/serialbench/templates/base.liquid +49 -0
  71. data/lib/serialbench/templates/format_based.liquid +279 -0
  72. data/lib/serialbench/templates/partials/chart_section.liquid +4 -0
  73. data/lib/serialbench/version.rb +1 -1
  74. data/lib/serialbench.rb +2 -31
  75. data/serialbench.gemspec +28 -17
  76. metadata +192 -55
  77. data/lib/serialbench/chart_generator.rb +0 -821
  78. data/lib/serialbench/result_formatter.rb +0 -182
  79. data/lib/serialbench/result_merger.rb +0 -1201
  80. data/lib/serialbench/serializers/xml/base_parser.rb +0 -69
  81. data/lib/serialbench/serializers/xml/libxml_parser.rb +0 -98
  82. data/lib/serialbench/serializers/xml/nokogiri_parser.rb +0 -111
  83. data/lib/serialbench/serializers/xml/oga_parser.rb +0 -85
  84. data/lib/serialbench/serializers/xml/ox_parser.rb +0 -64
  85. data/lib/serialbench/serializers/xml/rexml_parser.rb +0 -129
metadata CHANGED
@@ -1,169 +1,267 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: serialbench
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-06-06 00:00:00.000000000 Z
11
+ date: 2025-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: benchmark-ips
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '2.10'
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '2.10'
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: lutaml-model
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: memory_profiler
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - "~>"
45
+ - - ">="
32
46
  - !ruby/object:Gem::Version
33
- version: '1.0'
47
+ version: '0'
34
48
  type: :runtime
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
- - - "~>"
52
+ - - ">="
39
53
  - !ruby/object:Gem::Version
40
- version: '1.0'
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: thor
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - "~>"
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: csv
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: liquid
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
46
88
  - !ruby/object:Gem::Version
47
- version: '1.2'
89
+ version: '0'
48
90
  type: :runtime
49
91
  prerelease: false
50
92
  version_requirements: !ruby/object:Gem::Requirement
51
93
  requirements:
52
- - - "~>"
94
+ - - ">="
53
95
  - !ruby/object:Gem::Version
54
- version: '1.2'
96
+ version: '0'
55
97
  - !ruby/object:Gem::Dependency
56
98
  name: libxml-ruby
57
99
  requirement: !ruby/object:Gem::Requirement
58
100
  requirements:
59
- - - "~>"
101
+ - - ">="
60
102
  - !ruby/object:Gem::Version
61
- version: '4.0'
103
+ version: '0'
62
104
  type: :runtime
63
105
  prerelease: false
64
106
  version_requirements: !ruby/object:Gem::Requirement
65
107
  requirements:
66
- - - "~>"
108
+ - - ">="
67
109
  - !ruby/object:Gem::Version
68
- version: '4.0'
110
+ version: '0'
69
111
  - !ruby/object:Gem::Dependency
70
112
  name: nokogiri
71
113
  requirement: !ruby/object:Gem::Requirement
72
114
  requirements:
73
- - - "~>"
115
+ - - ">="
74
116
  - !ruby/object:Gem::Version
75
- version: '1.15'
117
+ version: '0'
76
118
  type: :runtime
77
119
  prerelease: false
78
120
  version_requirements: !ruby/object:Gem::Requirement
79
121
  requirements:
80
- - - "~>"
122
+ - - ">="
81
123
  - !ruby/object:Gem::Version
82
- version: '1.15'
124
+ version: '0'
83
125
  - !ruby/object:Gem::Dependency
84
126
  name: oga
85
127
  requirement: !ruby/object:Gem::Requirement
86
128
  requirements:
87
- - - "~>"
129
+ - - ">="
88
130
  - !ruby/object:Gem::Version
89
- version: '3.4'
131
+ version: '0'
90
132
  type: :runtime
91
133
  prerelease: false
92
134
  version_requirements: !ruby/object:Gem::Requirement
93
135
  requirements:
94
- - - "~>"
136
+ - - ">="
95
137
  - !ruby/object:Gem::Version
96
- version: '3.4'
138
+ version: '0'
97
139
  - !ruby/object:Gem::Dependency
98
140
  name: ox
99
141
  requirement: !ruby/object:Gem::Requirement
100
142
  requirements:
101
- - - "~>"
143
+ - - ">="
102
144
  - !ruby/object:Gem::Version
103
- version: '2.14'
145
+ version: '0'
104
146
  type: :runtime
105
147
  prerelease: false
106
148
  version_requirements: !ruby/object:Gem::Requirement
107
149
  requirements:
108
- - - "~>"
150
+ - - ">="
109
151
  - !ruby/object:Gem::Version
110
- version: '2.14'
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rexml
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
111
167
  - !ruby/object:Gem::Dependency
112
168
  name: oj
113
169
  requirement: !ruby/object:Gem::Requirement
114
170
  requirements:
115
- - - "~>"
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: rapidjson
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
116
186
  - !ruby/object:Gem::Version
117
- version: '3.13'
187
+ version: '0'
118
188
  type: :runtime
119
189
  prerelease: false
120
190
  version_requirements: !ruby/object:Gem::Requirement
121
191
  requirements:
122
- - - "~>"
192
+ - - ">="
123
193
  - !ruby/object:Gem::Version
124
- version: '3.13'
194
+ version: '0'
125
195
  - !ruby/object:Gem::Dependency
126
196
  name: yajl-ruby
127
197
  requirement: !ruby/object:Gem::Requirement
128
198
  requirements:
129
- - - "~>"
199
+ - - ">="
130
200
  - !ruby/object:Gem::Version
131
- version: '1.4'
201
+ version: '0'
132
202
  type: :runtime
133
203
  prerelease: false
134
204
  version_requirements: !ruby/object:Gem::Requirement
135
205
  requirements:
136
- - - "~>"
206
+ - - ">="
137
207
  - !ruby/object:Gem::Version
138
- version: '1.4'
208
+ version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: syck
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :runtime
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
139
223
  - !ruby/object:Gem::Dependency
140
224
  name: tomlib
141
225
  requirement: !ruby/object:Gem::Requirement
142
226
  requirements:
143
- - - "~>"
227
+ - - ">="
144
228
  - !ruby/object:Gem::Version
145
- version: '0.6'
229
+ version: '0'
146
230
  type: :runtime
147
231
  prerelease: false
148
232
  version_requirements: !ruby/object:Gem::Requirement
149
233
  requirements:
150
- - - "~>"
234
+ - - ">="
151
235
  - !ruby/object:Gem::Version
152
- version: '0.6'
236
+ version: '0'
153
237
  - !ruby/object:Gem::Dependency
154
238
  name: toml-rb
155
239
  requirement: !ruby/object:Gem::Requirement
156
240
  requirements:
157
- - - "~>"
241
+ - - ">="
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ type: :runtime
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
251
+ - !ruby/object:Gem::Dependency
252
+ name: tomlrb
253
+ requirement: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - ">="
158
256
  - !ruby/object:Gem::Version
159
- version: '2.2'
257
+ version: '0'
160
258
  type: :runtime
161
259
  prerelease: false
162
260
  version_requirements: !ruby/object:Gem::Requirement
163
261
  requirements:
164
- - - "~>"
262
+ - - ">="
165
263
  - !ruby/object:Gem::Version
166
- version: '2.2'
264
+ version: '0'
167
265
  description: A benchmarking suite for comparing performance of various serialization
168
266
  libraries in Ruby, including XML, JSON, and TOML parsers/generators.
169
267
  email:
@@ -175,39 +273,78 @@ extra_rdoc_files: []
175
273
  files:
176
274
  - ".github/workflows/benchmark.yml"
177
275
  - ".github/workflows/ci.yml"
276
+ - ".github/workflows/docker.yml"
277
+ - ".github/workflows/rake.yml"
278
+ - ".github/workflows/release.yml"
178
279
  - ".rspec"
179
280
  - Gemfile
180
281
  - README.adoc
181
282
  - Rakefile
283
+ - config/benchmarks/full.yml
284
+ - config/benchmarks/short.yml
285
+ - config/environments/asdf-ruby-3.2.yml
286
+ - config/environments/asdf-ruby-3.3.yml
287
+ - config/environments/docker-ruby-3.0.yml
288
+ - config/environments/docker-ruby-3.1.yml
289
+ - config/environments/docker-ruby-3.2.yml
290
+ - config/environments/docker-ruby-3.3.yml
291
+ - config/environments/docker-ruby-3.4.yml
292
+ - docker/Dockerfile.alpine
293
+ - docker/Dockerfile.ubuntu
294
+ - docker/README.md
182
295
  - exe/serialbench
183
296
  - lib/serialbench.rb
184
297
  - lib/serialbench/benchmark_runner.rb
185
- - lib/serialbench/chart_generator.rb
186
298
  - lib/serialbench/cli.rb
299
+ - lib/serialbench/cli/base_cli.rb
300
+ - lib/serialbench/cli/benchmark_cli.rb
301
+ - lib/serialbench/cli/environment_cli.rb
302
+ - lib/serialbench/cli/resultset_cli.rb
303
+ - lib/serialbench/cli/ruby_build_cli.rb
304
+ - lib/serialbench/config_manager.rb
187
305
  - lib/serialbench/memory_profiler.rb
188
- - lib/serialbench/result_formatter.rb
189
- - lib/serialbench/result_merger.rb
306
+ - lib/serialbench/models.rb
307
+ - lib/serialbench/models/benchmark_config.rb
308
+ - lib/serialbench/models/benchmark_result.rb
309
+ - lib/serialbench/models/environment_config.rb
310
+ - lib/serialbench/models/platform.rb
311
+ - lib/serialbench/models/result.rb
312
+ - lib/serialbench/models/result_set.rb
313
+ - lib/serialbench/models/result_store.rb
314
+ - lib/serialbench/ruby_build_manager.rb
315
+ - lib/serialbench/runners/asdf_runner.rb
316
+ - lib/serialbench/runners/base.rb
317
+ - lib/serialbench/runners/docker_runner.rb
190
318
  - lib/serialbench/serializers.rb
191
319
  - lib/serialbench/serializers/base_serializer.rb
192
320
  - lib/serialbench/serializers/json/base_json_serializer.rb
193
321
  - lib/serialbench/serializers/json/json_serializer.rb
194
322
  - lib/serialbench/serializers/json/oj_serializer.rb
323
+ - lib/serialbench/serializers/json/rapidjson_serializer.rb
195
324
  - lib/serialbench/serializers/json/yajl_serializer.rb
196
325
  - lib/serialbench/serializers/toml/base_toml_serializer.rb
197
326
  - lib/serialbench/serializers/toml/toml_rb_serializer.rb
198
327
  - lib/serialbench/serializers/toml/tomlib_serializer.rb
199
- - lib/serialbench/serializers/xml/base_parser.rb
328
+ - lib/serialbench/serializers/toml/tomlrb_serializer.rb
200
329
  - lib/serialbench/serializers/xml/base_xml_serializer.rb
201
- - lib/serialbench/serializers/xml/libxml_parser.rb
202
330
  - lib/serialbench/serializers/xml/libxml_serializer.rb
203
- - lib/serialbench/serializers/xml/nokogiri_parser.rb
204
331
  - lib/serialbench/serializers/xml/nokogiri_serializer.rb
205
- - lib/serialbench/serializers/xml/oga_parser.rb
206
332
  - lib/serialbench/serializers/xml/oga_serializer.rb
207
- - lib/serialbench/serializers/xml/ox_parser.rb
208
333
  - lib/serialbench/serializers/xml/ox_serializer.rb
209
- - lib/serialbench/serializers/xml/rexml_parser.rb
210
334
  - lib/serialbench/serializers/xml/rexml_serializer.rb
335
+ - lib/serialbench/serializers/yaml/base_yaml_serializer.rb
336
+ - lib/serialbench/serializers/yaml/psych_serializer.rb
337
+ - lib/serialbench/serializers/yaml/syck_serializer.rb
338
+ - lib/serialbench/site_generator.rb
339
+ - lib/serialbench/templates/assets/css/benchmark_report.css
340
+ - lib/serialbench/templates/assets/css/format_based.css
341
+ - lib/serialbench/templates/assets/css/themes.css
342
+ - lib/serialbench/templates/assets/js/chart_helpers.js
343
+ - lib/serialbench/templates/assets/js/dashboard.js
344
+ - lib/serialbench/templates/assets/js/navigation.js
345
+ - lib/serialbench/templates/base.liquid
346
+ - lib/serialbench/templates/format_based.liquid
347
+ - lib/serialbench/templates/partials/chart_section.liquid
211
348
  - lib/serialbench/version.rb
212
349
  - serialbench.gemspec
213
350
  homepage: https://github.com/metanorma/serialbench