json_pure 1.2.4 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README +9 -11
- data/Rakefile +27 -26
- data/VERSION +1 -1
- data/benchmarks/generator2_benchmark.rb +222 -0
- data/benchmarks/generator_benchmark.rb +63 -4
- data/benchmarks/ohai.json +1216 -0
- data/benchmarks/ohai.ruby +1 -0
- data/benchmarks/parser2_benchmark.rb +251 -0
- data/benchmarks/parser_benchmark.rb +52 -4
- data/ext/json/ext/extconf_generator.rb +16 -0
- data/ext/json/ext/extconf_parser.rb +15 -0
- data/ext/json/ext/generator.c +1334 -0
- data/ext/json/ext/generator.h +170 -0
- data/ext/json/ext/{parser/parser.c → parser.c} +223 -182
- data/ext/json/ext/parser.h +71 -0
- data/ext/json/ext/{parser/parser.rl → parser.rl} +149 -108
- data/lib/json/common.rb +53 -36
- data/lib/json/pure/generator.rb +85 -81
- data/lib/json/version.rb +1 -1
- data/tests/test_json_encoding.rb +4 -3
- data/tests/test_json_generate.rb +7 -7
- data/tests/test_json_unicode.rb +20 -6
- metadata +15 -13
- data/ext/json/ext/generator/extconf.rb +0 -11
- data/ext/json/ext/generator/generator.c +0 -953
- data/ext/json/ext/generator/unicode.c +0 -180
- data/ext/json/ext/generator/unicode.h +0 -53
- data/ext/json/ext/parser/extconf.rb +0 -11
- data/ext/json/ext/parser/unicode.c +0 -154
- data/ext/json/ext/parser/unicode.h +0 -58
data/README
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
==
|
2
|
-
|
3
|
-
=== Description
|
1
|
+
== Description
|
4
2
|
|
5
3
|
This is a implementation of the JSON specification according to RFC 4627
|
6
4
|
http://www.ietf.org/rfc/rfc4627.txt . Starting from version 1.0.0 on there
|
@@ -34,7 +32,7 @@ String#encoding set. If a document string has ASCII-8BIT as an encoding the
|
|
34
32
|
parser attempts to figure out which of the UTF encodings from above it is and
|
35
33
|
trys to parse it.
|
36
34
|
|
37
|
-
|
35
|
+
== Installation
|
38
36
|
|
39
37
|
It's recommended to use the extension variant of JSON, because it's faster than
|
40
38
|
the pure ruby variant. If you cannot build it on your system, you can settle
|
@@ -65,7 +63,7 @@ with:
|
|
65
63
|
|
66
64
|
# gem install json_pure
|
67
65
|
|
68
|
-
|
66
|
+
== Compiling the extensions yourself
|
69
67
|
|
70
68
|
If you want to build the extensions yourself you need rake:
|
71
69
|
|
@@ -82,7 +80,7 @@ If you want to create the parser.c file from its parser.rl file or draw nice
|
|
82
80
|
graphviz images of the state machines, you need ragel from: http://www.cs.queensu.ca/~thurston/ragel
|
83
81
|
|
84
82
|
|
85
|
-
|
83
|
+
== Usage
|
86
84
|
|
87
85
|
To use JSON you can
|
88
86
|
require 'json'
|
@@ -136,7 +134,7 @@ To get the best compatibility to rails' JSON implementation, you can
|
|
136
134
|
Both of the additions attempt to require 'json' (like above) first, if it has
|
137
135
|
not been required yet.
|
138
136
|
|
139
|
-
|
137
|
+
== More Examples
|
140
138
|
|
141
139
|
To create a JSON document from a ruby data structure, you can call
|
142
140
|
JSON.generate like that:
|
@@ -226,7 +224,7 @@ The script tools/server.rb contains a small example if you want to test, how
|
|
226
224
|
receiving a JSON object from a webrick server in your browser with the
|
227
225
|
javasript prototype library http://www.prototypejs.org works.
|
228
226
|
|
229
|
-
|
227
|
+
== Speed Comparisons
|
230
228
|
|
231
229
|
I have created some benchmark results (see the benchmarks/data-p4-3Ghz
|
232
230
|
subdir of the package) for the JSON-parser to estimate the speed up in the C
|
@@ -339,17 +337,17 @@ Here are the median comparisons for completeness' sake:
|
|
339
337
|
calls/sec ( time) -> speed covers
|
340
338
|
secs/call
|
341
339
|
|
342
|
-
|
340
|
+
== Author
|
343
341
|
|
344
342
|
Florian Frank <mailto:flori@ping.de>
|
345
343
|
|
346
|
-
|
344
|
+
== License
|
347
345
|
|
348
346
|
Ruby License, see the COPYING file included in the source distribution. The
|
349
347
|
Ruby License includes the GNU General Public License (GPL), Version 2, so see
|
350
348
|
the file GPL as well.
|
351
349
|
|
352
|
-
|
350
|
+
== Download
|
353
351
|
|
354
352
|
The latest version of this library can be downloaded at
|
355
353
|
|
data/Rakefile
CHANGED
@@ -9,30 +9,29 @@ rescue LoadError
|
|
9
9
|
puts "WARNING: rake-compiler is not installed. You will not be able to build the json gem until you install it."
|
10
10
|
end
|
11
11
|
|
12
|
-
require 'rake/clean'
|
13
|
-
CLOBBER.include Dir['benchmarks/data/*.{dat,log}']
|
14
|
-
|
15
12
|
require 'rbconfig'
|
16
13
|
include Config
|
17
14
|
|
15
|
+
require 'rake/clean'
|
16
|
+
CLOBBER.include Dir['benchmarks/data/*.{dat,log}'], FileList['**/*.rbc']
|
17
|
+
CLEAN.include FileList['diagrams/*.*'], 'doc', 'coverage', 'tmp',
|
18
|
+
FileList["ext/**/{Makefile,mkmf.log}"],
|
19
|
+
FileList["{ext,lib}/**/*.{so,bundle,#{CONFIG['DLEXT']},o,obj,pdb,lib,manifest,exp,def}"]
|
20
|
+
|
18
21
|
MAKE = ENV['MAKE'] || %w[gmake make].find { |c| system(c, '-v') }
|
19
22
|
PKG_NAME = 'json'
|
23
|
+
PKG_TITLE = 'JSON Implementation for Ruby'
|
20
24
|
PKG_VERSION = File.read('VERSION').chomp
|
21
25
|
PKG_FILES = FileList["**/*"].exclude(/CVS|pkg|tmp|coverage|Makefile|\.nfs\./).exclude(/\.(so|bundle|o|#{CONFIG['DLEXT']})$/)
|
22
26
|
EXT_ROOT_DIR = 'ext/json/ext'
|
23
|
-
EXT_PARSER_DIR = "#{EXT_ROOT_DIR}/parser"
|
24
27
|
EXT_PARSER_DL = "#{EXT_ROOT_DIR}/parser.#{CONFIG['DLEXT']}"
|
25
|
-
EXT_PARSER_SRC = "#{
|
28
|
+
EXT_PARSER_SRC = "#{EXT_ROOT_DIR}/parser.c"
|
26
29
|
PKG_FILES << EXT_PARSER_SRC
|
27
|
-
EXT_GENERATOR_DIR = "#{EXT_ROOT_DIR}/generator"
|
28
30
|
EXT_GENERATOR_DL = "#{EXT_ROOT_DIR}/generator.#{CONFIG['DLEXT']}"
|
29
|
-
EXT_GENERATOR_SRC = "#{
|
31
|
+
EXT_GENERATOR_SRC = "#{EXT_ROOT_DIR}/generator.c"
|
30
32
|
RAGEL_CODEGEN = %w[rlcodegen rlgen-cd ragel].find { |c| system(c, '-v') }
|
31
33
|
RAGEL_DOTGEN = %w[rlgen-dot rlgen-cd ragel].find { |c| system(c, '-v') }
|
32
|
-
RAGEL_PATH = "#{
|
33
|
-
CLEAN.include FileList['diagrams/*.*'], 'doc', 'coverage', 'tmp',
|
34
|
-
FileList["ext/**/{Makefile,mkmf.log}"],
|
35
|
-
FileList["{ext,lib}/**/*.{so,bundle,#{CONFIG['DLEXT']},o,obj,pdb,lib,manifest,exp,def}"]
|
34
|
+
RAGEL_PATH = "#{EXT_ROOT_DIR}/parser.rl"
|
36
35
|
|
37
36
|
def myruby(*args, &block)
|
38
37
|
@myruby ||= File.join(CONFIG['bindir'], CONFIG['ruby_install_name'])
|
@@ -74,19 +73,17 @@ desc "Compiling extension"
|
|
74
73
|
task :compile_ext => [ EXT_PARSER_DL, EXT_GENERATOR_DL ]
|
75
74
|
|
76
75
|
file EXT_PARSER_DL => EXT_PARSER_SRC do
|
77
|
-
cd
|
78
|
-
myruby '
|
76
|
+
cd EXT_ROOT_DIR do
|
77
|
+
myruby 'extconf_parser.rb'
|
79
78
|
sh MAKE
|
80
79
|
end
|
81
|
-
cp "#{EXT_PARSER_DIR}/parser.#{CONFIG['DLEXT']}", EXT_ROOT_DIR
|
82
80
|
end
|
83
81
|
|
84
82
|
file EXT_GENERATOR_DL => EXT_GENERATOR_SRC do
|
85
|
-
cd
|
86
|
-
myruby '
|
83
|
+
cd EXT_ROOT_DIR do
|
84
|
+
myruby 'extconf_generator.rb'
|
87
85
|
sh MAKE
|
88
86
|
end
|
89
|
-
cp "#{EXT_GENERATOR_DIR}/generator.#{CONFIG['DLEXT']}", EXT_ROOT_DIR
|
90
87
|
end
|
91
88
|
|
92
89
|
desc "Generate parser with ragel"
|
@@ -97,7 +94,7 @@ task :ragel_clean do
|
|
97
94
|
end
|
98
95
|
|
99
96
|
file EXT_PARSER_SRC => RAGEL_PATH do
|
100
|
-
cd
|
97
|
+
cd EXT_ROOT_DIR do
|
101
98
|
if RAGEL_CODEGEN == 'ragel'
|
102
99
|
sh "ragel parser.rl -G2 -o parser.c"
|
103
100
|
else
|
@@ -158,12 +155,14 @@ desc "Benchmarking parser"
|
|
158
155
|
task :benchmark_parser do
|
159
156
|
ENV['RUBYOPT'] = "-Ilib:ext #{ENV['RUBYOPT']}"
|
160
157
|
myruby 'benchmarks/parser_benchmark.rb'
|
158
|
+
myruby 'benchmarks/parser2_benchmark.rb'
|
161
159
|
end
|
162
160
|
|
163
161
|
desc "Benchmarking generator"
|
164
162
|
task :benchmark_generator do
|
165
163
|
ENV['RUBYOPT'] = "-Ilib:ext #{ENV['RUBYOPT']}"
|
166
164
|
myruby 'benchmarks/generator_benchmark.rb'
|
165
|
+
myruby 'benchmarks/generator2_benchmark.rb'
|
167
166
|
end
|
168
167
|
|
169
168
|
desc "Benchmarking library"
|
@@ -171,14 +170,14 @@ task :benchmark => [ :benchmark_parser, :benchmark_generator ]
|
|
171
170
|
|
172
171
|
desc "Create RDOC documentation"
|
173
172
|
task :doc => [ :version, EXT_PARSER_SRC ] do
|
174
|
-
sh "rdoc -o doc -m README README lib/json.rb #{FileList['lib/json/**/*.rb']} #{EXT_PARSER_SRC} #{EXT_GENERATOR_SRC}"
|
173
|
+
sh "rdoc -o doc -t '#{PKG_TITLE}' -m README README lib/json.rb #{FileList['lib/json/**/*.rb']} #{EXT_PARSER_SRC} #{EXT_GENERATOR_SRC}"
|
175
174
|
end
|
176
175
|
|
177
176
|
if defined?(Gem) and defined?(Rake::GemPackageTask) and defined?(Rake::ExtensionTask)
|
178
177
|
spec_pure = Gem::Specification.new do |s|
|
179
178
|
s.name = 'json_pure'
|
180
179
|
s.version = PKG_VERSION
|
181
|
-
s.summary =
|
180
|
+
s.summary = PKG_TITLE
|
182
181
|
s.description = "This is a JSON implementation in pure Ruby."
|
183
182
|
|
184
183
|
s.files = PKG_FILES
|
@@ -192,7 +191,7 @@ if defined?(Gem) and defined?(Rake::GemPackageTask) and defined?(Rake::Extension
|
|
192
191
|
s.has_rdoc = true
|
193
192
|
s.extra_rdoc_files << 'README'
|
194
193
|
s.rdoc_options <<
|
195
|
-
'--title' << 'JSON
|
194
|
+
'--title' << 'JSON implemention for ruby' << '--main' << 'README'
|
196
195
|
s.test_files.concat Dir['tests/*.rb']
|
197
196
|
|
198
197
|
s.author = "Florian Frank"
|
@@ -209,12 +208,12 @@ if defined?(Gem) and defined?(Rake::GemPackageTask) and defined?(Rake::Extension
|
|
209
208
|
spec_ext = Gem::Specification.new do |s|
|
210
209
|
s.name = 'json'
|
211
210
|
s.version = PKG_VERSION
|
212
|
-
s.summary =
|
211
|
+
s.summary = PKG_TITLE
|
213
212
|
s.description = "This is a JSON implementation as a Ruby extension in C."
|
214
213
|
|
215
214
|
s.files = PKG_FILES
|
216
215
|
|
217
|
-
s.extensions = FileList['ext/**/
|
216
|
+
s.extensions = FileList['ext/**/extconf_*.rb']
|
218
217
|
|
219
218
|
s.require_path = EXT_ROOT_DIR
|
220
219
|
s.require_paths << 'ext'
|
@@ -227,7 +226,7 @@ if defined?(Gem) and defined?(Rake::GemPackageTask) and defined?(Rake::Extension
|
|
227
226
|
s.has_rdoc = true
|
228
227
|
s.extra_rdoc_files << 'README'
|
229
228
|
s.rdoc_options <<
|
230
|
-
'--title' << 'JSON
|
229
|
+
'--title' << 'JSON implemention for Ruby' << '--main' << 'README'
|
231
230
|
s.test_files.concat Dir['tests/*.rb']
|
232
231
|
|
233
232
|
s.author = "Florian Frank"
|
@@ -243,19 +242,21 @@ if defined?(Gem) and defined?(Rake::GemPackageTask) and defined?(Rake::Extension
|
|
243
242
|
|
244
243
|
Rake::ExtensionTask.new do |ext|
|
245
244
|
ext.name = 'parser'
|
245
|
+
ext.config_script = 'extconf_parser.rb'
|
246
246
|
ext.gem_spec = spec_ext
|
247
247
|
ext.cross_compile = true
|
248
248
|
ext.cross_platform = %w[i386-mswin32 i386-mingw32]
|
249
|
-
ext.ext_dir = 'ext/json/ext
|
249
|
+
ext.ext_dir = 'ext/json/ext'
|
250
250
|
ext.lib_dir = 'lib/json/ext'
|
251
251
|
end
|
252
252
|
|
253
253
|
Rake::ExtensionTask.new do |ext|
|
254
254
|
ext.name = 'generator'
|
255
|
+
ext.config_script = 'extconf_generator.rb'
|
255
256
|
ext.gem_spec = spec_ext
|
256
257
|
ext.cross_compile = true
|
257
258
|
ext.cross_platform = %w[i386-mswin32 i386-mingw32]
|
258
|
-
ext.ext_dir = 'ext/json/ext
|
259
|
+
ext.ext_dir = 'ext/json/ext'
|
259
260
|
ext.lib_dir = 'lib/json/ext'
|
260
261
|
end
|
261
262
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.4.0
|
@@ -0,0 +1,222 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# CODING: UTF-8
|
3
|
+
|
4
|
+
require 'rbconfig'
|
5
|
+
RUBY_PATH=File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name'])
|
6
|
+
RAKE_PATH=File.join(Config::CONFIG['bindir'], 'rake')
|
7
|
+
require 'bullshit'
|
8
|
+
case ARGV.first
|
9
|
+
when 'ext'
|
10
|
+
require 'json/ext'
|
11
|
+
when 'pure'
|
12
|
+
require 'json/pure'
|
13
|
+
when 'rails'
|
14
|
+
require 'active_support'
|
15
|
+
when 'yajl'
|
16
|
+
require 'yajl'
|
17
|
+
require 'yajl/json_gem'
|
18
|
+
require 'stringio'
|
19
|
+
end
|
20
|
+
|
21
|
+
module JSON
|
22
|
+
def self.[](*) end
|
23
|
+
end
|
24
|
+
|
25
|
+
module Generator2BenchmarkCommon
|
26
|
+
include JSON
|
27
|
+
|
28
|
+
def setup
|
29
|
+
@big = eval File.read(File.join(File.dirname(__FILE__), 'ohai.ruby'))
|
30
|
+
end
|
31
|
+
|
32
|
+
def generic_reset_method
|
33
|
+
@result and @result.size >= 16 or raise @result.to_s
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
module JSONGeneratorCommon
|
38
|
+
include Generator2BenchmarkCommon
|
39
|
+
|
40
|
+
def benchmark_generator_fast
|
41
|
+
@result = JSON.fast_generate(@big)
|
42
|
+
end
|
43
|
+
|
44
|
+
alias reset_benchmark_generator_fast generic_reset_method
|
45
|
+
|
46
|
+
def benchmark_generator_safe
|
47
|
+
@result = JSON.generate(@big)
|
48
|
+
end
|
49
|
+
|
50
|
+
alias reset_benchmark_generator_safe generic_reset_method
|
51
|
+
|
52
|
+
def benchmark_generator_pretty
|
53
|
+
@result = JSON.pretty_generate(@big)
|
54
|
+
end
|
55
|
+
|
56
|
+
alias reset_benchmark_generator_pretty generic_reset_method
|
57
|
+
|
58
|
+
def benchmark_generator_ascii
|
59
|
+
@result = JSON.generate(@big, :ascii_only => true)
|
60
|
+
end
|
61
|
+
|
62
|
+
alias reset_benchmark_generator_ascii generic_reset_method
|
63
|
+
end
|
64
|
+
|
65
|
+
class Generator2BenchmarkExt < Bullshit::RepeatCase
|
66
|
+
include JSONGeneratorCommon
|
67
|
+
|
68
|
+
warmup yes
|
69
|
+
iterations 2000
|
70
|
+
|
71
|
+
truncate_data do
|
72
|
+
enabled false
|
73
|
+
alpha_level 0.05
|
74
|
+
window_size 50
|
75
|
+
slope_angle 0.1
|
76
|
+
end
|
77
|
+
|
78
|
+
autocorrelation do
|
79
|
+
alpha_level 0.05
|
80
|
+
max_lags 50
|
81
|
+
file yes
|
82
|
+
end
|
83
|
+
|
84
|
+
|
85
|
+
output_dir File.join(File.dirname(__FILE__), 'data')
|
86
|
+
output_filename benchmark_name + '.log'
|
87
|
+
data_file yes
|
88
|
+
histogram yes
|
89
|
+
end
|
90
|
+
|
91
|
+
class Generator2BenchmarkPure < Bullshit::RepeatCase
|
92
|
+
include JSONGeneratorCommon
|
93
|
+
|
94
|
+
warmup yes
|
95
|
+
iterations 400
|
96
|
+
|
97
|
+
truncate_data do
|
98
|
+
enabled false
|
99
|
+
alpha_level 0.05
|
100
|
+
window_size 50
|
101
|
+
slope_angle 0.1
|
102
|
+
end
|
103
|
+
|
104
|
+
autocorrelation do
|
105
|
+
alpha_level 0.05
|
106
|
+
max_lags 50
|
107
|
+
file yes
|
108
|
+
end
|
109
|
+
|
110
|
+
output_dir File.join(File.dirname(__FILE__), 'data')
|
111
|
+
output_filename benchmark_name + '.log'
|
112
|
+
data_file yes
|
113
|
+
histogram yes
|
114
|
+
end
|
115
|
+
|
116
|
+
class Generator2BenchmarkRails < Bullshit::RepeatCase
|
117
|
+
include Generator2BenchmarkCommon
|
118
|
+
|
119
|
+
warmup yes
|
120
|
+
iterations 400
|
121
|
+
|
122
|
+
truncate_data do
|
123
|
+
enabled false
|
124
|
+
alpha_level 0.05
|
125
|
+
window_size 50
|
126
|
+
slope_angle 0.1
|
127
|
+
end
|
128
|
+
|
129
|
+
autocorrelation do
|
130
|
+
alpha_level 0.05
|
131
|
+
max_lags 50
|
132
|
+
file yes
|
133
|
+
end
|
134
|
+
|
135
|
+
output_dir File.join(File.dirname(__FILE__), 'data')
|
136
|
+
output_filename benchmark_name + '.log'
|
137
|
+
data_file yes
|
138
|
+
histogram yes
|
139
|
+
|
140
|
+
def benchmark_generator
|
141
|
+
@result = @big.to_json
|
142
|
+
end
|
143
|
+
|
144
|
+
alias reset_benchmark_generator generic_reset_method
|
145
|
+
end
|
146
|
+
|
147
|
+
class Generator2BenchmarkYajl < Bullshit::RepeatCase
|
148
|
+
include Generator2BenchmarkCommon
|
149
|
+
|
150
|
+
warmup yes
|
151
|
+
iterations 2000
|
152
|
+
|
153
|
+
truncate_data do
|
154
|
+
enabled false
|
155
|
+
alpha_level 0.05
|
156
|
+
window_size 50
|
157
|
+
slope_angle 0.1
|
158
|
+
end
|
159
|
+
|
160
|
+
autocorrelation do
|
161
|
+
alpha_level 0.05
|
162
|
+
max_lags 50
|
163
|
+
file yes
|
164
|
+
end
|
165
|
+
|
166
|
+
output_dir File.join(File.dirname(__FILE__), 'data')
|
167
|
+
output_filename benchmark_name + '.log'
|
168
|
+
data_file yes
|
169
|
+
histogram yes
|
170
|
+
|
171
|
+
def benchmark_generator
|
172
|
+
output = StringIO.new
|
173
|
+
Yajl::Encoder.new.encode(@big, output)
|
174
|
+
@result = output.string
|
175
|
+
end
|
176
|
+
|
177
|
+
def benchmark_generator_gem_api
|
178
|
+
@result = @big.to_json
|
179
|
+
end
|
180
|
+
|
181
|
+
def reset_benchmark_generator
|
182
|
+
generic_reset_method
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
if $0 == __FILE__
|
187
|
+
Bullshit::Case.autorun false
|
188
|
+
|
189
|
+
case ARGV.first
|
190
|
+
when 'ext'
|
191
|
+
Generator2BenchmarkExt.run
|
192
|
+
when 'pure'
|
193
|
+
Generator2BenchmarkPure.run
|
194
|
+
when 'rails'
|
195
|
+
Generator2BenchmarkRails.run
|
196
|
+
when 'yajl'
|
197
|
+
Generator2BenchmarkYajl.run
|
198
|
+
else
|
199
|
+
system "#{RAKE_PATH} clean"
|
200
|
+
system "#{RUBY_PATH} #$0 rails"
|
201
|
+
system "#{RUBY_PATH} #$0 pure"
|
202
|
+
system "#{RAKE_PATH} compile_ext"
|
203
|
+
system "#{RUBY_PATH} #$0 ext"
|
204
|
+
system "#{RUBY_PATH} #$0 yajl"
|
205
|
+
Bullshit.compare do
|
206
|
+
output_filename File.join(File.dirname(__FILE__), 'data', 'Generator2BenchmarkComparison.log')
|
207
|
+
|
208
|
+
benchmark Generator2BenchmarkExt, :generator_fast, :load => yes
|
209
|
+
benchmark Generator2BenchmarkExt, :generator_safe, :load => yes
|
210
|
+
benchmark Generator2BenchmarkExt, :generator_pretty, :load => yes
|
211
|
+
benchmark Generator2BenchmarkExt, :generator_ascii, :load => yes
|
212
|
+
benchmark Generator2BenchmarkPure, :generator_fast, :load => yes
|
213
|
+
benchmark Generator2BenchmarkPure, :generator_safe, :load => yes
|
214
|
+
benchmark Generator2BenchmarkPure, :generator_pretty, :load => yes
|
215
|
+
benchmark Generator2BenchmarkPure, :generator_ascii, :load => yes
|
216
|
+
benchmark Generator2BenchmarkRails, :generator, :load => yes
|
217
|
+
benchmark Generator2BenchmarkYajl, :generator, :load => yes
|
218
|
+
benchmark Generator2BenchmarkYajl, :generator_gem_api, :load => yes
|
219
|
+
end
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|