serialbench 0.3.1 → 0.4.0
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/.github/workflows/benchmark.yml +0 -20
- data/Gemfile +1 -1
- data/lib/serialbench/benchmark_runner.rb +12 -297
- data/lib/serialbench/cli.rb +0 -5
- data/lib/serialbench/models/result_store.rb +0 -38
- data/lib/serialbench/models.rb +0 -5
- data/lib/serialbench/serializers/base_serializer.rb +0 -4
- data/lib/serialbench/serializers/json/base_json_serializer.rb +8 -20
- data/lib/serialbench/serializers/json/json_serializer.rb +0 -16
- data/lib/serialbench/serializers/json/oj_serializer.rb +2 -17
- data/lib/serialbench/serializers/json/yajl_serializer.rb +2 -2
- data/lib/serialbench/serializers/toml/base_toml_serializer.rb +8 -29
- data/lib/serialbench/serializers/toml/toml_rb_serializer.rb +0 -16
- data/lib/serialbench/serializers/toml/tomlib_serializer.rb +0 -4
- data/lib/serialbench/serializers/toml/tomlrb_serializer.rb +2 -18
- data/lib/serialbench/serializers/xml/base_xml_serializer.rb +4 -16
- data/lib/serialbench/serializers/xml/leptris_serializer.rb +1 -5
- data/lib/serialbench/serializers/xml/libxml_serializer.rb +4 -9
- data/lib/serialbench/serializers/xml/nokogiri_serializer.rb +3 -3
- data/lib/serialbench/serializers/xml/oga_serializer.rb +3 -5
- data/lib/serialbench/serializers/xml/ox_serializer.rb +2 -2
- data/lib/serialbench/serializers/xml/rexml_serializer.rb +5 -12
- data/lib/serialbench/serializers/yaml/base_yaml_serializer.rb +1 -9
- data/lib/serialbench/serializers/yaml/syck_serializer.rb +0 -8
- data/lib/serialbench/test_data.rb +315 -0
- data/lib/serialbench/version.rb +1 -1
- data/lib/serialbench.rb +2 -1
- data/serialbench.gemspec +1 -2
- metadata +6 -22
- data/lib/serialbench/cli/resultset_cli.rb +0 -301
- data/lib/serialbench/models/result_set.rb +0 -79
- data/lib/serialbench/site_generator.rb +0 -337
|
@@ -31,24 +31,8 @@ module Serialbench
|
|
|
31
31
|
raise NotImplementedError, 'tomlrb gem does not support TOML generation/dumping'
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
-
def
|
|
35
|
-
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def supports_comments?
|
|
39
|
-
false
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def supports_arrays_of_tables?
|
|
43
|
-
true
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def supports_inline_tables?
|
|
47
|
-
true
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def supports_multiline_strings?
|
|
51
|
-
true
|
|
34
|
+
def capabilities
|
|
35
|
+
Set.new(%i[dom parse arrays_of_tables inline_tables multiline_strings])
|
|
52
36
|
end
|
|
53
37
|
end
|
|
54
38
|
end
|
|
@@ -23,6 +23,10 @@ module Serialbench
|
|
|
23
23
|
generate(document, options)
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
+
def capabilities
|
|
27
|
+
super | Set.new(%i[namespaces])
|
|
28
|
+
end
|
|
29
|
+
|
|
26
30
|
# XML-specific features derive from the capability set
|
|
27
31
|
def features
|
|
28
32
|
{
|
|
@@ -34,22 +38,6 @@ module Serialbench
|
|
|
34
38
|
}
|
|
35
39
|
end
|
|
36
40
|
|
|
37
|
-
def supports_generation?
|
|
38
|
-
true
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def supports_xpath?
|
|
42
|
-
false
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def supports_namespaces?
|
|
46
|
-
true
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def supports_validation?
|
|
50
|
-
false
|
|
51
|
-
end
|
|
52
|
-
|
|
53
41
|
# Check if the XML library is available
|
|
54
42
|
def available?
|
|
55
43
|
return @available if defined?(@available)
|
|
@@ -36,12 +36,8 @@ module Serialbench
|
|
|
36
36
|
handler.elements_processed
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
-
def supports_streaming?
|
|
40
|
-
true
|
|
41
|
-
end
|
|
42
|
-
|
|
43
39
|
def capabilities
|
|
44
|
-
super | Set.new(%i[xpath
|
|
40
|
+
super | Set.new(%i[xpath sax stax])
|
|
45
41
|
end
|
|
46
42
|
|
|
47
43
|
def xpath_query(document, expression)
|
|
@@ -38,17 +38,12 @@ module Serialbench
|
|
|
38
38
|
handler.elements_processed
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
-
def
|
|
42
|
-
|
|
41
|
+
def capabilities
|
|
42
|
+
super | Set.new(%i[xpath stax sax])
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
true
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def supports_streaming?
|
|
51
|
-
true
|
|
45
|
+
def xpath_query(document, expression)
|
|
46
|
+
document.find(expression).size
|
|
52
47
|
end
|
|
53
48
|
|
|
54
49
|
def version
|
|
@@ -39,11 +39,11 @@ module Serialbench
|
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
def capabilities
|
|
42
|
-
super | Set.new(%i[xpath
|
|
42
|
+
super | Set.new(%i[xpath sax stax])
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
-
def
|
|
46
|
-
|
|
45
|
+
def xpath_query(document, expression)
|
|
46
|
+
document.xpath(expression).size
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
def version
|
|
@@ -38,17 +38,15 @@ module Serialbench
|
|
|
38
38
|
handler.elements_processed
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
-
def
|
|
42
|
-
|
|
41
|
+
def capabilities
|
|
42
|
+
super | Set.new(%i[xpath sax])
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
def xpath_query(document, expression)
|
|
46
46
|
document.xpath(expression).size
|
|
47
47
|
end
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
true
|
|
51
|
-
end
|
|
49
|
+
|
|
52
50
|
|
|
53
51
|
def version
|
|
54
52
|
return 'unknown' unless available?
|
|
@@ -73,20 +73,13 @@ module Serialbench
|
|
|
73
73
|
handler.result
|
|
74
74
|
end
|
|
75
75
|
|
|
76
|
-
def
|
|
77
|
-
|
|
76
|
+
def capabilities
|
|
77
|
+
super | Set.new(%i[xpath])
|
|
78
78
|
end
|
|
79
79
|
|
|
80
|
-
def
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
def supports_namespaces?
|
|
85
|
-
true
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
def supports_validation?
|
|
89
|
-
false
|
|
80
|
+
def xpath_query(document, expression)
|
|
81
|
+
require 'rexml/xpath'
|
|
82
|
+
REXML::XPath.match(document, expression).size
|
|
90
83
|
end
|
|
91
84
|
|
|
92
85
|
private
|
|
@@ -11,12 +11,8 @@ module Serialbench
|
|
|
11
11
|
:yaml
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
def supports_streaming?
|
|
15
|
-
false # Most YAML parsers don't support streaming
|
|
16
|
-
end
|
|
17
|
-
|
|
18
14
|
def features
|
|
19
|
-
{ streaming:
|
|
15
|
+
{ streaming: supports?(:sax) || supports?(:streaming) }
|
|
20
16
|
end
|
|
21
17
|
|
|
22
18
|
# Default YAML generation options
|
|
@@ -39,10 +35,6 @@ module Serialbench
|
|
|
39
35
|
raise NotImplementedError, 'Streaming not supported by this YAML serializer'
|
|
40
36
|
end
|
|
41
37
|
|
|
42
|
-
def supports_generation?
|
|
43
|
-
true
|
|
44
|
-
end
|
|
45
|
-
|
|
46
38
|
private
|
|
47
39
|
|
|
48
40
|
def require_library(library_name)
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Serialbench
|
|
4
|
+
# Fixture documents for every format x size the benchmark engine measures.
|
|
5
|
+
class TestData
|
|
6
|
+
def self.load(config)
|
|
7
|
+
new(config).load
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def initialize(config)
|
|
11
|
+
@config = config
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def load
|
|
15
|
+
@config.data_sizes.each_with_object({}) do |size, data|
|
|
16
|
+
data[size] = @config.formats.each_with_object({}) do |format, formats|
|
|
17
|
+
formats[format] = fixture_file(size, format) || generate("#{size}.#{format}")
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
def fixture_file(size, format)
|
|
25
|
+
path = "test_data/#{size}.#{format}"
|
|
26
|
+
File.read(path) if File.exist?(path)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def generate(key)
|
|
30
|
+
case key
|
|
31
|
+
when 'small.xml' then generate_small_xml
|
|
32
|
+
when 'medium.xml' then generate_medium_xml
|
|
33
|
+
when 'large.xml' then generate_large_xml
|
|
34
|
+
when 'small.json' then generate_small_json
|
|
35
|
+
when 'medium.json' then generate_medium_json
|
|
36
|
+
when 'large.json' then generate_large_json
|
|
37
|
+
when 'small.yaml' then generate_small_yaml
|
|
38
|
+
when 'medium.yaml' then generate_medium_yaml
|
|
39
|
+
when 'large.yaml' then generate_large_yaml
|
|
40
|
+
when 'small.toml' then generate_small_toml
|
|
41
|
+
when 'medium.toml' then generate_medium_toml
|
|
42
|
+
when 'large.toml' then generate_large_toml
|
|
43
|
+
else raise ArgumentError, "no test data generator for #{key}"
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Shared data structure generators
|
|
48
|
+
def small_test_data_structure
|
|
49
|
+
{
|
|
50
|
+
config: {
|
|
51
|
+
database: {
|
|
52
|
+
host: 'localhost',
|
|
53
|
+
port: 5432,
|
|
54
|
+
name: 'myapp',
|
|
55
|
+
user: 'admin',
|
|
56
|
+
password: 'secret'
|
|
57
|
+
},
|
|
58
|
+
cache: {
|
|
59
|
+
enabled: true,
|
|
60
|
+
ttl: 3600
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def medium_test_data_structure
|
|
67
|
+
{
|
|
68
|
+
users: (1..1000).map do |i|
|
|
69
|
+
{
|
|
70
|
+
id: i,
|
|
71
|
+
name: "User #{i}",
|
|
72
|
+
email: "user#{i}@example.com",
|
|
73
|
+
created_at: "2023-01-#{(i % 28) + 1}T10:00:00Z",
|
|
74
|
+
profile: {
|
|
75
|
+
age: 20 + (i % 50),
|
|
76
|
+
city: "City #{i % 100}",
|
|
77
|
+
preferences: {
|
|
78
|
+
theme: i.even? ? 'dark' : 'light',
|
|
79
|
+
notifications: (i % 3).zero?
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
end
|
|
84
|
+
}
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def large_test_data_structure
|
|
88
|
+
{
|
|
89
|
+
dataset: {
|
|
90
|
+
header: {
|
|
91
|
+
created: '2023-01-01T00:00:00Z',
|
|
92
|
+
count: 10_000,
|
|
93
|
+
format: 'data'
|
|
94
|
+
},
|
|
95
|
+
records: (1..10_000).map do |i|
|
|
96
|
+
{
|
|
97
|
+
id: i,
|
|
98
|
+
timestamp: "2023-01-01T#{format('%02d', i % 24)}:#{format('%02d', i % 60)}:#{format('%02d', i % 60)}Z",
|
|
99
|
+
data: {
|
|
100
|
+
field1: "Value #{i}",
|
|
101
|
+
field2: i * 2,
|
|
102
|
+
field3: (i % 100).zero? ? 'special' : 'normal',
|
|
103
|
+
nested: [
|
|
104
|
+
"Item #{i}-1",
|
|
105
|
+
"Item #{i}-2",
|
|
106
|
+
"Item #{i}-3"
|
|
107
|
+
]
|
|
108
|
+
},
|
|
109
|
+
metadata: {
|
|
110
|
+
source: 'generator',
|
|
111
|
+
version: '1.0',
|
|
112
|
+
checksum: i.to_s(16)
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
end
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
# XML test data generators
|
|
121
|
+
def generate_small_xml
|
|
122
|
+
data = small_test_data_structure
|
|
123
|
+
<<~XML
|
|
124
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
125
|
+
<config>
|
|
126
|
+
<database>
|
|
127
|
+
<host>#{data[:config][:database][:host]}</host>
|
|
128
|
+
<port>#{data[:config][:database][:port]}</port>
|
|
129
|
+
<name>#{data[:config][:database][:name]}</name>
|
|
130
|
+
<user>#{data[:config][:database][:user]}</user>
|
|
131
|
+
<password>#{data[:config][:database][:password]}</password>
|
|
132
|
+
</database>
|
|
133
|
+
<cache>
|
|
134
|
+
<enabled>#{data[:config][:cache][:enabled]}</enabled>
|
|
135
|
+
<ttl>#{data[:config][:cache][:ttl]}</ttl>
|
|
136
|
+
</cache>
|
|
137
|
+
</config>
|
|
138
|
+
XML
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def generate_medium_xml
|
|
142
|
+
data = medium_test_data_structure
|
|
143
|
+
users = data[:users].map do |user|
|
|
144
|
+
<<~USER
|
|
145
|
+
<user id="#{user[:id]}">
|
|
146
|
+
<name>#{user[:name]}</name>
|
|
147
|
+
<email>#{user[:email]}</email>
|
|
148
|
+
<created_at>#{user[:created_at]}</created_at>
|
|
149
|
+
<profile>
|
|
150
|
+
<age>#{user[:profile][:age]}</age>
|
|
151
|
+
<city>#{user[:profile][:city]}</city>
|
|
152
|
+
<preferences>
|
|
153
|
+
<theme>#{user[:profile][:preferences][:theme]}</theme>
|
|
154
|
+
<notifications>#{user[:profile][:preferences][:notifications]}</notifications>
|
|
155
|
+
</preferences>
|
|
156
|
+
</profile>
|
|
157
|
+
</user>
|
|
158
|
+
USER
|
|
159
|
+
end.join
|
|
160
|
+
|
|
161
|
+
<<~XML
|
|
162
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
163
|
+
<users>
|
|
164
|
+
#{users}
|
|
165
|
+
</users>
|
|
166
|
+
XML
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
def generate_large_xml
|
|
170
|
+
data = large_test_data_structure
|
|
171
|
+
records = data[:dataset][:records].map do |record|
|
|
172
|
+
nested_items = record[:data][:nested].map { |item| " <item>#{item}</item>" }.join("\n")
|
|
173
|
+
<<~RECORD
|
|
174
|
+
<record id="#{record[:id]}">
|
|
175
|
+
<timestamp>#{record[:timestamp]}</timestamp>
|
|
176
|
+
<data>
|
|
177
|
+
<field1>#{record[:data][:field1]}</field1>
|
|
178
|
+
<field2>#{record[:data][:field2]}</field2>
|
|
179
|
+
<field3>#{record[:data][:field3]}</field3>
|
|
180
|
+
<nested>
|
|
181
|
+
#{nested_items}
|
|
182
|
+
</nested>
|
|
183
|
+
</data>
|
|
184
|
+
<metadata>
|
|
185
|
+
<source>#{record[:metadata][:source]}</source>
|
|
186
|
+
<version>#{record[:metadata][:version]}</version>
|
|
187
|
+
<checksum>#{record[:metadata][:checksum]}</checksum>
|
|
188
|
+
</metadata>
|
|
189
|
+
</record>
|
|
190
|
+
RECORD
|
|
191
|
+
end.join
|
|
192
|
+
|
|
193
|
+
<<~XML
|
|
194
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
195
|
+
<dataset>
|
|
196
|
+
<header>
|
|
197
|
+
<created>#{data[:dataset][:header][:created]}</created>
|
|
198
|
+
<count>#{data[:dataset][:header][:count]}</count>
|
|
199
|
+
<format>xml</format>
|
|
200
|
+
</header>
|
|
201
|
+
<records>
|
|
202
|
+
#{records}
|
|
203
|
+
</records>
|
|
204
|
+
</dataset>
|
|
205
|
+
XML
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
# JSON test data generators
|
|
209
|
+
def generate_small_json
|
|
210
|
+
JSON.generate(small_test_data_structure)
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
def generate_medium_json
|
|
214
|
+
JSON.generate(medium_test_data_structure)
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
def generate_large_json
|
|
218
|
+
data = large_test_data_structure
|
|
219
|
+
data[:dataset][:header][:format] = 'json'
|
|
220
|
+
JSON.generate(data)
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
# YAML test data generators
|
|
224
|
+
def generate_small_yaml
|
|
225
|
+
small_test_data_structure.to_yaml
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
def generate_medium_yaml
|
|
229
|
+
medium_test_data_structure.to_yaml
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
def generate_large_yaml
|
|
233
|
+
data = large_test_data_structure
|
|
234
|
+
data[:dataset][:header][:format] = 'yaml'
|
|
235
|
+
data.to_yaml
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
# TOML test data generators
|
|
239
|
+
def generate_small_toml
|
|
240
|
+
data = small_test_data_structure
|
|
241
|
+
<<~TOML
|
|
242
|
+
[config]
|
|
243
|
+
|
|
244
|
+
[config.database]
|
|
245
|
+
host = "#{data[:config][:database][:host]}"
|
|
246
|
+
port = #{data[:config][:database][:port]}
|
|
247
|
+
name = "#{data[:config][:database][:name]}"
|
|
248
|
+
user = "#{data[:config][:database][:user]}"
|
|
249
|
+
password = "#{data[:config][:database][:password]}"
|
|
250
|
+
|
|
251
|
+
[config.cache]
|
|
252
|
+
enabled = #{data[:config][:cache][:enabled]}
|
|
253
|
+
ttl = #{data[:config][:cache][:ttl]}
|
|
254
|
+
TOML
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
def generate_medium_toml
|
|
258
|
+
data = medium_test_data_structure
|
|
259
|
+
# Use smaller dataset for TOML due to verbosity
|
|
260
|
+
users = data[:users].first(100)
|
|
261
|
+
users.map do |user|
|
|
262
|
+
<<~USER
|
|
263
|
+
[[users]]
|
|
264
|
+
id = #{user[:id]}
|
|
265
|
+
name = "#{user[:name]}"
|
|
266
|
+
email = "#{user[:email]}"
|
|
267
|
+
created_at = "#{user[:created_at]}"
|
|
268
|
+
|
|
269
|
+
[users.profile]
|
|
270
|
+
age = #{user[:profile][:age]}
|
|
271
|
+
city = "#{user[:profile][:city]}"
|
|
272
|
+
|
|
273
|
+
[users.profile.preferences]
|
|
274
|
+
theme = "#{user[:profile][:preferences][:theme]}"
|
|
275
|
+
notifications = #{user[:profile][:preferences][:notifications]}
|
|
276
|
+
USER
|
|
277
|
+
end.join("\n")
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
def generate_large_toml
|
|
281
|
+
data = large_test_data_structure
|
|
282
|
+
# Use smaller dataset for TOML due to verbosity
|
|
283
|
+
records = data[:dataset][:records].first(1000)
|
|
284
|
+
records_toml = records.map do |record|
|
|
285
|
+
<<~RECORD
|
|
286
|
+
[[dataset.records]]
|
|
287
|
+
id = #{record[:id]}
|
|
288
|
+
timestamp = "#{record[:timestamp]}"
|
|
289
|
+
|
|
290
|
+
[dataset.records.data]
|
|
291
|
+
field1 = "#{record[:data][:field1]}"
|
|
292
|
+
field2 = #{record[:data][:field2]}
|
|
293
|
+
field3 = "#{record[:data][:field3]}"
|
|
294
|
+
nested = #{record[:data][:nested].inspect}
|
|
295
|
+
|
|
296
|
+
[dataset.records.metadata]
|
|
297
|
+
source = "#{record[:metadata][:source]}"
|
|
298
|
+
version = "#{record[:metadata][:version]}"
|
|
299
|
+
checksum = "#{record[:metadata][:checksum]}"
|
|
300
|
+
RECORD
|
|
301
|
+
end.join("\n")
|
|
302
|
+
|
|
303
|
+
<<~TOML
|
|
304
|
+
[dataset]
|
|
305
|
+
|
|
306
|
+
[dataset.header]
|
|
307
|
+
created = "#{data[:dataset][:header][:created]}"
|
|
308
|
+
count = #{records.length}
|
|
309
|
+
format = "toml"
|
|
310
|
+
|
|
311
|
+
#{records_toml}
|
|
312
|
+
TOML
|
|
313
|
+
end
|
|
314
|
+
end
|
|
315
|
+
end
|
data/lib/serialbench/version.rb
CHANGED
data/lib/serialbench.rb
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require_relative 'serialbench/version'
|
|
4
|
-
require_relative 'serialbench/site_generator'
|
|
5
4
|
require_relative 'serialbench/serializers'
|
|
6
5
|
require_relative 'serialbench/benchmark_runner'
|
|
7
6
|
require_relative 'serialbench/cli'
|
|
@@ -9,5 +8,7 @@ require_relative 'serialbench/memory_profiler'
|
|
|
9
8
|
require_relative 'serialbench/models'
|
|
10
9
|
|
|
11
10
|
module Serialbench
|
|
11
|
+
autoload :TestData, 'serialbench/test_data'
|
|
12
|
+
|
|
12
13
|
class Error < StandardError; end
|
|
13
14
|
end
|
data/serialbench.gemspec
CHANGED
|
@@ -14,7 +14,7 @@ Gem::Specification.new do |spec|
|
|
|
14
14
|
|
|
15
15
|
spec.summary = 'Comprehensive serialization benchmarking tool for Ruby'
|
|
16
16
|
spec.description = 'A benchmarking suite for comparing performance of various serialization libraries in Ruby, including XML, JSON, and TOML parsers/generators.'
|
|
17
|
-
spec.homepage = 'https://github.com/
|
|
17
|
+
spec.homepage = 'https://github.com/serialbench/serialbench'
|
|
18
18
|
spec.license = 'BSD-2-Clause'
|
|
19
19
|
spec.required_ruby_version = Gem::Requirement.new('>= 2.7.0')
|
|
20
20
|
|
|
@@ -42,7 +42,6 @@ Gem::Specification.new do |spec|
|
|
|
42
42
|
|
|
43
43
|
# Reporting dependencies
|
|
44
44
|
spec.add_dependency 'csv' # Required from Ruby 3.4+
|
|
45
|
-
spec.add_dependency 'liquid' # Template engine for HTML reports
|
|
46
45
|
|
|
47
46
|
# XML serializers
|
|
48
47
|
spec.add_dependency 'oga'
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: serialbench
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose
|
|
@@ -93,20 +93,6 @@ dependencies:
|
|
|
93
93
|
- - ">="
|
|
94
94
|
- !ruby/object:Gem::Version
|
|
95
95
|
version: '0'
|
|
96
|
-
- !ruby/object:Gem::Dependency
|
|
97
|
-
name: liquid
|
|
98
|
-
requirement: !ruby/object:Gem::Requirement
|
|
99
|
-
requirements:
|
|
100
|
-
- - ">="
|
|
101
|
-
- !ruby/object:Gem::Version
|
|
102
|
-
version: '0'
|
|
103
|
-
type: :runtime
|
|
104
|
-
prerelease: false
|
|
105
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
106
|
-
requirements:
|
|
107
|
-
- - ">="
|
|
108
|
-
- !ruby/object:Gem::Version
|
|
109
|
-
version: '0'
|
|
110
96
|
- !ruby/object:Gem::Dependency
|
|
111
97
|
name: oga
|
|
112
98
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -311,7 +297,6 @@ files:
|
|
|
311
297
|
- lib/serialbench/cli/base_cli.rb
|
|
312
298
|
- lib/serialbench/cli/benchmark_cli.rb
|
|
313
299
|
- lib/serialbench/cli/environment_cli.rb
|
|
314
|
-
- lib/serialbench/cli/resultset_cli.rb
|
|
315
300
|
- lib/serialbench/cli/ruby_build_cli.rb
|
|
316
301
|
- lib/serialbench/cli/validate_cli.rb
|
|
317
302
|
- lib/serialbench/config_manager.rb
|
|
@@ -322,7 +307,6 @@ files:
|
|
|
322
307
|
- lib/serialbench/models/environment_config.rb
|
|
323
308
|
- lib/serialbench/models/platform.rb
|
|
324
309
|
- lib/serialbench/models/result.rb
|
|
325
|
-
- lib/serialbench/models/result_set.rb
|
|
326
310
|
- lib/serialbench/models/result_store.rb
|
|
327
311
|
- lib/serialbench/ruby_build_manager.rb
|
|
328
312
|
- lib/serialbench/runners/asdf_runner.rb
|
|
@@ -350,17 +334,17 @@ files:
|
|
|
350
334
|
- lib/serialbench/serializers/yaml/base_yaml_serializer.rb
|
|
351
335
|
- lib/serialbench/serializers/yaml/psych_serializer.rb
|
|
352
336
|
- lib/serialbench/serializers/yaml/syck_serializer.rb
|
|
353
|
-
- lib/serialbench/
|
|
337
|
+
- lib/serialbench/test_data.rb
|
|
354
338
|
- lib/serialbench/version.rb
|
|
355
339
|
- lib/serialbench/yaml_validator.rb
|
|
356
340
|
- serialbench.gemspec
|
|
357
|
-
homepage: https://github.com/
|
|
341
|
+
homepage: https://github.com/serialbench/serialbench
|
|
358
342
|
licenses:
|
|
359
343
|
- BSD-2-Clause
|
|
360
344
|
metadata:
|
|
361
|
-
homepage_uri: https://github.com/
|
|
362
|
-
source_code_uri: https://github.com/
|
|
363
|
-
bug_tracker_uri: https://github.com/
|
|
345
|
+
homepage_uri: https://github.com/serialbench/serialbench
|
|
346
|
+
source_code_uri: https://github.com/serialbench/serialbench
|
|
347
|
+
bug_tracker_uri: https://github.com/serialbench/serialbench/issues
|
|
364
348
|
rdoc_options: []
|
|
365
349
|
require_paths:
|
|
366
350
|
- lib
|