json_pure 1.1.3 → 1.1.4
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.
- 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)
|