json_pure 1.1.3 → 1.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +9 -0
- data/Rakefile +47 -53
- data/VERSION +1 -1
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log +52 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat +1000 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat +1001 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat +900 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat +901 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat +1000 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat +1001 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log +261 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat +1000 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat +1001 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat +1000 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat +1001 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat +1000 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat +1001 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log +262 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat +1000 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat +1001 -0
- data/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log +82 -0
- data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log +34 -0
- data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat +900 -0
- data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat +901 -0
- data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log +81 -0
- data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat +1000 -0
- data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat +1001 -0
- data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log +82 -0
- data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat +1000 -0
- data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat +1001 -0
- data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log +82 -0
- data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat +1000 -0
- data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat +1001 -0
- data/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log +82 -0
- data/benchmarks/generator_benchmark.rb +162 -0
- data/benchmarks/parser_benchmark.rb +193 -0
- data/bin/edit_json.rb +0 -1
- data/bin/prettify_json.rb +0 -1
- data/doc-templates/main.txt +284 -0
- data/ext/json/ext/generator/extconf.rb +2 -0
- data/ext/json/ext/generator/generator.c +62 -18
- data/ext/json/ext/parser/extconf.rb +2 -0
- data/ext/json/ext/parser/parser.c +128 -81
- data/ext/json/ext/parser/parser.rl +31 -7
- data/ext/json/ext/parser/unicode.c +4 -4
- data/lib/json/add/core.rb +1 -1
- data/lib/json/editor.rb +11 -2
- data/lib/json/ext.rb +2 -0
- data/lib/json/pure/generator.rb +77 -41
- data/lib/json/pure/parser.rb +6 -2
- data/lib/json/pure.rb +2 -0
- data/lib/json/version.rb +1 -1
- data/lib/json.rb +0 -221
- data/tests/test_json.rb +7 -4
- data/tests/test_json_addition.rb +8 -5
- data/tests/test_json_fixtures.rb +6 -2
- data/tests/test_json_generate.rb +8 -2
- data/tests/test_json_rails.rb +30 -2
- data/tests/test_json_unicode.rb +8 -7
- data/tools/fuzz.rb +0 -1
- data/tools/server.rb +0 -1
- metadata +46 -9
- data/benchmarks/benchmark.txt +0 -133
- data/benchmarks/benchmark_generator.rb +0 -48
- data/benchmarks/benchmark_parser.rb +0 -26
- data/benchmarks/benchmark_rails.rb +0 -26
- data/tests/runner.rb +0 -25
data/tests/test_json_generate.rb
CHANGED
@@ -1,11 +1,17 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
|
1
4
|
require 'test/unit'
|
2
|
-
|
5
|
+
case ENV['JSON']
|
6
|
+
when 'pure' then require 'json/pure'
|
7
|
+
when 'ext' then require 'json/ext'
|
8
|
+
else require 'json'
|
9
|
+
end
|
3
10
|
|
4
11
|
class TC_JSONGenerate < Test::Unit::TestCase
|
5
12
|
include JSON
|
6
13
|
|
7
14
|
def setup
|
8
|
-
$KCODE = 'UTF8'
|
9
15
|
@hash = {
|
10
16
|
'a' => 2,
|
11
17
|
'b' => 3.141,
|
data/tests/test_json_rails.rb
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# -*- coding: utf-8 -*-
|
2
3
|
|
3
4
|
require 'test/unit'
|
5
|
+
case ENV['JSON']
|
6
|
+
when 'pure' then require 'json/pure'
|
7
|
+
when 'ext' then require 'json/ext'
|
8
|
+
else require 'json'
|
9
|
+
end
|
4
10
|
require 'json/add/rails'
|
5
11
|
require 'date'
|
6
12
|
|
@@ -50,17 +56,38 @@ class TC_JSONRails < Test::Unit::TestCase
|
|
50
56
|
end
|
51
57
|
end
|
52
58
|
|
53
|
-
|
54
|
-
|
59
|
+
class D
|
60
|
+
def initialize
|
61
|
+
@foo = 666
|
62
|
+
end
|
63
|
+
|
64
|
+
attr_reader :foo
|
65
|
+
|
66
|
+
def ==(other)
|
67
|
+
foo == other.foo
|
68
|
+
end
|
55
69
|
end
|
56
70
|
|
57
71
|
def test_extended_json
|
58
72
|
a = A.new(666)
|
59
73
|
assert A.json_creatable?
|
74
|
+
assert_equal 666, a.a
|
60
75
|
json = generate(a)
|
61
76
|
a_again = JSON.parse(json)
|
62
77
|
assert_kind_of a.class, a_again
|
63
78
|
assert_equal a, a_again
|
79
|
+
assert_equal 666, a_again.a
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_extended_json_generic_object
|
83
|
+
d = D.new
|
84
|
+
assert D.json_creatable?
|
85
|
+
assert_equal 666, d.foo
|
86
|
+
json = generate(d)
|
87
|
+
d_again = JSON.parse(json)
|
88
|
+
assert_kind_of d.class, d_again
|
89
|
+
assert_equal d, d_again
|
90
|
+
assert_equal 666, d_again.foo
|
64
91
|
end
|
65
92
|
|
66
93
|
def test_extended_json_disabled
|
@@ -94,6 +121,7 @@ class TC_JSONRails < Test::Unit::TestCase
|
|
94
121
|
|
95
122
|
def test_raw_strings
|
96
123
|
raw = ''
|
124
|
+
raw.respond_to?(:encode!) and raw.encode!(Encoding::ASCII_8BIT)
|
97
125
|
raw_array = []
|
98
126
|
for i in 0..255
|
99
127
|
raw << i
|
data/tests/test_json_unicode.rb
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# -*- coding: utf-8 -*-
|
2
3
|
|
3
4
|
require 'test/unit'
|
4
|
-
|
5
|
+
case ENV['JSON']
|
6
|
+
when 'pure' then require 'json/pure'
|
7
|
+
when 'ext' then require 'json/ext'
|
8
|
+
else require 'json'
|
9
|
+
end
|
5
10
|
|
6
11
|
class TC_JSONUnicode < Test::Unit::TestCase
|
7
12
|
include JSON
|
8
13
|
|
9
|
-
def setup
|
10
|
-
$KCODE = 'UTF8'
|
11
|
-
end
|
12
|
-
|
13
14
|
def test_unicode
|
14
15
|
assert_equal '""', ''.to_json
|
15
16
|
assert_equal '"\\b"', "\b".to_json
|
@@ -53,8 +54,8 @@ class TC_JSONUnicode < Test::Unit::TestCase
|
|
53
54
|
assert_equal json, JSON.generate(["" << i])
|
54
55
|
end
|
55
56
|
end
|
56
|
-
|
57
|
-
JSON.generate([""
|
57
|
+
assert_raise(JSON::GeneratorError) do
|
58
|
+
JSON.generate(["\x80"])
|
58
59
|
end
|
59
60
|
assert_equal "\302\200", JSON.parse('["\u0080"]').first
|
60
61
|
end
|
data/tools/fuzz.rb
CHANGED
data/tools/server.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json_pure
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Frank
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2009-04-02 00:00:00 +02:00
|
13
13
|
default_executable: edit_json.rb
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -101,17 +101,49 @@ files:
|
|
101
101
|
- tests/fixtures/fail23.json
|
102
102
|
- tests/fixtures/fail14.json
|
103
103
|
- tests/fixtures/fail8.json
|
104
|
-
- tests/runner.rb
|
105
104
|
- tests/test_json_generate.rb
|
106
105
|
- tests/test_json_rails.rb
|
107
106
|
- tests/test_json_unicode.rb
|
108
107
|
- tests/test_json_fixtures.rb
|
109
108
|
- benchmarks
|
110
|
-
- benchmarks/
|
111
|
-
- benchmarks/
|
112
|
-
- benchmarks/
|
113
|
-
- benchmarks/
|
109
|
+
- benchmarks/generator_benchmark.rb
|
110
|
+
- benchmarks/data-p4-3GHz-ruby18
|
111
|
+
- benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat
|
112
|
+
- benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat
|
113
|
+
- benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat
|
114
|
+
- benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat
|
115
|
+
- benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat
|
116
|
+
- benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat
|
117
|
+
- benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log
|
118
|
+
- benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat
|
119
|
+
- benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat
|
120
|
+
- benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat
|
121
|
+
- benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat
|
122
|
+
- benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log
|
123
|
+
- benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log
|
124
|
+
- benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log
|
125
|
+
- benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat
|
126
|
+
- benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log
|
127
|
+
- benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat
|
128
|
+
- benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat
|
129
|
+
- benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat
|
130
|
+
- benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat
|
131
|
+
- benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat
|
132
|
+
- benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat
|
133
|
+
- benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log
|
134
|
+
- benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log
|
135
|
+
- benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log
|
136
|
+
- benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat
|
137
|
+
- benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat
|
138
|
+
- benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log
|
139
|
+
- benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat
|
140
|
+
- benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat
|
141
|
+
- benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat
|
142
|
+
- benchmarks/data
|
143
|
+
- benchmarks/parser_benchmark.rb
|
114
144
|
- Rakefile
|
145
|
+
- doc-templates
|
146
|
+
- doc-templates/main.txt
|
115
147
|
- GPL
|
116
148
|
- data
|
117
149
|
- data/example.json
|
@@ -149,9 +181,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
149
181
|
requirements: []
|
150
182
|
|
151
183
|
rubyforge_project: json
|
152
|
-
rubygems_version: 1.
|
184
|
+
rubygems_version: 1.3.1
|
153
185
|
signing_key:
|
154
186
|
specification_version: 2
|
155
187
|
summary: A JSON implementation in Ruby
|
156
188
|
test_files:
|
157
|
-
- tests/
|
189
|
+
- tests/test_json.rb
|
190
|
+
- tests/test_json_addition.rb
|
191
|
+
- tests/test_json_generate.rb
|
192
|
+
- tests/test_json_rails.rb
|
193
|
+
- tests/test_json_unicode.rb
|
194
|
+
- tests/test_json_fixtures.rb
|
data/benchmarks/benchmark.txt
DELETED
@@ -1,133 +0,0 @@
|
|
1
|
-
(in /home/flori/json)
|
2
|
-
Ragel Code Generator version 5.17 January 2007
|
3
|
-
Copyright (c) 2001-2006 by Adrian Thurston
|
4
|
-
Benchmarking extension variant
|
5
|
-
First run for warmup.
|
6
|
-
Running 'BC_Parser' for a duration of 10 secs per method:
|
7
|
-
real total utime stime cutime cstime
|
8
|
-
parser: 10.005944 10.010000 9.970000 0.040000 0.000000 0.000000
|
9
|
-
5091 508.591409 0.001966
|
10
|
-
calls calls/sec secs/call
|
11
|
-
--------------------------------------------------------------------------------
|
12
|
-
Running 'BC_Parser' for a duration of 10 secs per method:
|
13
|
-
real total utime stime cutime cstime
|
14
|
-
parser: 10.006881 10.000000 9.950000 0.050000 0.000000 0.000000
|
15
|
-
5055 505.500000 0.001978
|
16
|
-
calls calls/sec secs/call
|
17
|
-
--------------------------------------------------------------------------------
|
18
|
-
================================================================================
|
19
|
-
|
20
|
-
|
21
|
-
[null,false,true,"f\u00d6\u00df\u00c4r",["n\u20acst\u20acd",true],{"quux":true,"foo\u00df":"b\u00e4r"}]
|
22
|
-
First run for warmup.
|
23
|
-
Running 'BC_Generator' for a duration of 10 secs per method:
|
24
|
-
real total utime stime cutime cstime
|
25
|
-
generator_pretty: 10.001066 10.010000 9.990000 0.020000 0.000000 0.000000
|
26
|
-
3492 348.851149 0.002867
|
27
|
-
generator_fast : 10.002910 10.000000 9.980000 0.020000 0.000000 0.000000
|
28
|
-
5416 541.600000 0.001846
|
29
|
-
generator_safe : 10.003107 10.010000 10.000000 0.010000 0.000000 0.000000
|
30
|
-
4926 492.107892 0.002032
|
31
|
-
calls calls/sec secs/call
|
32
|
-
--------------------------------------------------------------------------------
|
33
|
-
Running 'BC_Generator' for a duration of 10 secs per method:
|
34
|
-
real total utime stime cutime cstime
|
35
|
-
generator_pretty: 10.009150 10.010000 10.010000 0.000000 0.000000 0.000000
|
36
|
-
3511 350.749251 0.002851
|
37
|
-
generator_fast : 10.014407 10.020000 10.020000 0.000000 0.000000 0.000000
|
38
|
-
5411 540.019960 0.001852
|
39
|
-
generator_safe : 10.010055 10.000000 10.000000 0.000000 0.000000 0.000000
|
40
|
-
4933 493.300000 0.002027
|
41
|
-
calls calls/sec secs/call
|
42
|
-
--------------------------------------------------------------------------------
|
43
|
-
================================================================================
|
44
|
-
|
45
|
-
Comparison in BC_Generator:
|
46
|
-
secs/call speed
|
47
|
-
generator_fast : 0.002 -> 1.540x
|
48
|
-
generator_safe : 0.002 -> 1.406x
|
49
|
-
generator_pretty: 0.003 -> 1.000x
|
50
|
-
--------------------------------------------------------------------------------
|
51
|
-
|
52
|
-
[null, false, true, "f\u00d6\u00df\u00c4r", ["n\u20acst\u20acd", true], {quux: true, "foo\u00df": "b\u00e4r"}]
|
53
|
-
First run for warmup.
|
54
|
-
Running 'BC_Rails' for a duration of 10 secs per method:
|
55
|
-
real total utime stime cutime cstime
|
56
|
-
generator: 10.026043 10.020000 10.020000 0.000000 0.000000 0.000000
|
57
|
-
239 23.852295 0.041925
|
58
|
-
calls calls/sec secs/call
|
59
|
-
--------------------------------------------------------------------------------
|
60
|
-
Running 'BC_Rails' for a duration of 10 secs per method:
|
61
|
-
real total utime stime cutime cstime
|
62
|
-
generator: 10.010931 10.020000 10.010000 0.010000 0.000000 0.000000
|
63
|
-
238 23.752495 0.042101
|
64
|
-
calls calls/sec secs/call
|
65
|
-
--------------------------------------------------------------------------------
|
66
|
-
================================================================================
|
67
|
-
|
68
|
-
|
69
|
-
Benchmarking pure variant
|
70
|
-
First run for warmup.
|
71
|
-
Running 'BC_Parser' for a duration of 10 secs per method:
|
72
|
-
real total utime stime cutime cstime
|
73
|
-
parser: 10.022352 10.030000 10.020000 0.010000 0.000000 0.000000
|
74
|
-
288 28.713858 0.034826
|
75
|
-
calls calls/sec secs/call
|
76
|
-
--------------------------------------------------------------------------------
|
77
|
-
Running 'BC_Parser' for a duration of 10 secs per method:
|
78
|
-
real total utime stime cutime cstime
|
79
|
-
parser: 10.006552 10.000000 10.000000 0.000000 0.000000 0.000000
|
80
|
-
289 28.900000 0.034602
|
81
|
-
calls calls/sec secs/call
|
82
|
-
--------------------------------------------------------------------------------
|
83
|
-
================================================================================
|
84
|
-
|
85
|
-
|
86
|
-
[null,false,true,"f\u00d6\u00df\u00c4r",["n\u20acst\u20acd",true],{"quux":true,"foo\u00df":"b\u00e4r"}]
|
87
|
-
First run for warmup.
|
88
|
-
Running 'BC_Generator' for a duration of 10 secs per method:
|
89
|
-
real total utime stime cutime cstime
|
90
|
-
generator_fast : 10.011644 10.010000 10.010000 0.000000 0.000000 0.000000
|
91
|
-
411 41.058941 0.024355
|
92
|
-
generator_safe : 10.007100 10.010000 10.010000 0.000000 0.000000 0.000000
|
93
|
-
352 35.164835 0.028438
|
94
|
-
generator_pretty: 10.008156 10.010000 10.010000 0.000000 0.000000 0.000000
|
95
|
-
341 34.065934 0.029355
|
96
|
-
calls calls/sec secs/call
|
97
|
-
--------------------------------------------------------------------------------
|
98
|
-
Running 'BC_Generator' for a duration of 10 secs per method:
|
99
|
-
real total utime stime cutime cstime
|
100
|
-
generator_fast : 10.005185 10.010000 10.010000 0.000000 0.000000 0.000000
|
101
|
-
411 41.058941 0.024355
|
102
|
-
generator_safe : 10.006932 10.010000 10.010000 0.000000 0.000000 0.000000
|
103
|
-
351 35.064935 0.028519
|
104
|
-
generator_pretty: 10.007414 10.000000 10.000000 0.000000 0.000000 0.000000
|
105
|
-
340 34.000000 0.029412
|
106
|
-
calls calls/sec secs/call
|
107
|
-
--------------------------------------------------------------------------------
|
108
|
-
================================================================================
|
109
|
-
|
110
|
-
Comparison in BC_Generator:
|
111
|
-
secs/call speed
|
112
|
-
generator_fast : 0.024 -> 1.208x
|
113
|
-
generator_safe : 0.029 -> 1.031x
|
114
|
-
generator_pretty: 0.029 -> 1.000x
|
115
|
-
--------------------------------------------------------------------------------
|
116
|
-
|
117
|
-
[null, false, true, "f\u00d6\u00df\u00c4r", ["n\u20acst\u20acd", true], {quux: true, "foo\u00df": "b\u00e4r"}]
|
118
|
-
First run for warmup.
|
119
|
-
Running 'BC_Rails' for a duration of 10 secs per method:
|
120
|
-
real total utime stime cutime cstime
|
121
|
-
generator: 10.005748 10.000000 10.000000 0.000000 0.000000 0.000000
|
122
|
-
240 24.000000 0.041667
|
123
|
-
calls calls/sec secs/call
|
124
|
-
--------------------------------------------------------------------------------
|
125
|
-
Running 'BC_Rails' for a duration of 10 secs per method:
|
126
|
-
real total utime stime cutime cstime
|
127
|
-
generator: 10.006764 10.010000 10.010000 0.000000 0.000000 0.000000
|
128
|
-
239 23.876124 0.041883
|
129
|
-
calls calls/sec secs/call
|
130
|
-
--------------------------------------------------------------------------------
|
131
|
-
================================================================================
|
132
|
-
|
133
|
-
|
@@ -1,48 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'bullshit'
|
4
|
-
$KCODE='utf8'
|
5
|
-
if ARGV.shift == 'pure'
|
6
|
-
require 'json/pure'
|
7
|
-
else
|
8
|
-
require 'json/ext'
|
9
|
-
end
|
10
|
-
|
11
|
-
class BC_Generator < Bullshit::TimeCase
|
12
|
-
include JSON
|
13
|
-
|
14
|
-
warmup true
|
15
|
-
duration 10
|
16
|
-
|
17
|
-
def setup
|
18
|
-
a = [ nil, false, true, "fÖßÄr", [ "n€st€d", true ], { "fooß" => "bär", "quux" => true } ]
|
19
|
-
puts JSON[a]
|
20
|
-
@big = a * 100
|
21
|
-
end
|
22
|
-
|
23
|
-
def benchmark_generator_fast
|
24
|
-
@result = JSON.fast_generate(@big)
|
25
|
-
end
|
26
|
-
|
27
|
-
def reset_benchmark_generator_fast
|
28
|
-
@result and @result.size > 2 + 6 * @big.size or raise @result.to_s
|
29
|
-
end
|
30
|
-
|
31
|
-
def benchmark_generator_safe
|
32
|
-
@result = JSON.generate(@big)
|
33
|
-
end
|
34
|
-
|
35
|
-
def reset_benchmark_generator_safe
|
36
|
-
@result and @result.size > 2 + 6 * @big.size or raise @result.to_s
|
37
|
-
end
|
38
|
-
|
39
|
-
def benchmark_generator_pretty
|
40
|
-
@result = JSON.pretty_generate(@big)
|
41
|
-
end
|
42
|
-
|
43
|
-
def reset_benchmark_generator_pretty
|
44
|
-
@result and @result.size > 2 + 6 * @big.size or raise @result.to_s
|
45
|
-
end
|
46
|
-
|
47
|
-
compare :generator_fast, :generator_safe, :generator_pretty
|
48
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'bullshit'
|
4
|
-
if ARGV.shift == 'pure'
|
5
|
-
require 'json/pure'
|
6
|
-
else
|
7
|
-
require 'json/ext'
|
8
|
-
end
|
9
|
-
|
10
|
-
class BC_Parser < Bullshit::TimeCase
|
11
|
-
include JSON
|
12
|
-
|
13
|
-
warmup true
|
14
|
-
duration 10
|
15
|
-
|
16
|
-
def setup
|
17
|
-
a = [ nil, false, true, "fÖß\nÄr", [ "n€st€d", true ], { "fooß" => "bär", "qu\r\nux" => true } ]
|
18
|
-
@big = a * 100
|
19
|
-
@json = JSON.generate(@big)
|
20
|
-
end
|
21
|
-
|
22
|
-
def benchmark_parser
|
23
|
-
a = JSON.parse(@json)
|
24
|
-
a == @big or raise "not equal"
|
25
|
-
end
|
26
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'bullshit'
|
4
|
-
require 'active_support'
|
5
|
-
|
6
|
-
class BC_Rails < Bullshit::TimeCase
|
7
|
-
warmup true
|
8
|
-
duration 10
|
9
|
-
|
10
|
-
def setup
|
11
|
-
a = [ nil, false, true, "fÖßÄr", [ "n€st€d", true ], { "fooß" => "bär", "quux" => true } ]
|
12
|
-
puts a.to_json
|
13
|
-
@big = a * 100
|
14
|
-
end
|
15
|
-
|
16
|
-
def benchmark_generator
|
17
|
-
@result = @big.to_json
|
18
|
-
end
|
19
|
-
|
20
|
-
def reset_benchmark_generator
|
21
|
-
@result and @result.size > 2 + 6 * @big.size or raise @result.to_s
|
22
|
-
if stack = Thread.current[:json_reference_stack]
|
23
|
-
stack.clear
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
data/tests/runner.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'test/unit/ui/console/testrunner'
|
4
|
-
require 'test/unit/testsuite'
|
5
|
-
$:.unshift File.expand_path(File.dirname($0))
|
6
|
-
$:.unshift 'tests'
|
7
|
-
require 'test_json'
|
8
|
-
require 'test_json_generate'
|
9
|
-
require 'test_json_unicode'
|
10
|
-
require 'test_json_addition'
|
11
|
-
require 'test_json_rails'
|
12
|
-
require 'test_json_fixtures'
|
13
|
-
|
14
|
-
class TS_AllTests
|
15
|
-
def self.suite
|
16
|
-
suite = Test::Unit::TestSuite.new name
|
17
|
-
suite << TC_JSONGenerate.suite
|
18
|
-
suite << TC_JSON.suite
|
19
|
-
suite << TC_JSONUnicode.suite
|
20
|
-
suite << TC_JSONAddition.suite
|
21
|
-
suite << TC_JSONRails.suite
|
22
|
-
suite << TC_JSONFixtures.suite
|
23
|
-
end
|
24
|
-
end
|
25
|
-
Test::Unit::UI::Console::TestRunner.run(TS_AllTests)
|