scout 5.1.2 → 5.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. data/CHANGELOG +5 -0
  2. data/lib/scout.rb +1 -1
  3. data/lib/scout/server.rb +4 -1
  4. data/vendor/json_pure/CHANGES +43 -0
  5. data/vendor/json_pure/{RUBY → COPYING} +1 -1
  6. data/vendor/json_pure/GPL +7 -7
  7. data/vendor/json_pure/README +319 -39
  8. data/vendor/json_pure/Rakefile +69 -47
  9. data/vendor/json_pure/VERSION +1 -1
  10. data/vendor/json_pure/benchmarks/generator2_benchmark.rb +222 -0
  11. data/vendor/json_pure/benchmarks/generator_benchmark.rb +64 -5
  12. data/vendor/json_pure/benchmarks/ohai.json +1216 -0
  13. data/vendor/json_pure/benchmarks/ohai.ruby +1 -0
  14. data/vendor/json_pure/benchmarks/parser2_benchmark.rb +251 -0
  15. data/vendor/json_pure/benchmarks/parser_benchmark.rb +67 -5
  16. data/vendor/json_pure/ext/json/ext/generator/extconf.rb +9 -4
  17. data/vendor/json_pure/ext/json/ext/generator/generator.c +831 -409
  18. data/vendor/json_pure/ext/json/ext/generator/generator.h +170 -0
  19. data/vendor/json_pure/ext/json/ext/parser/extconf.rb +8 -4
  20. data/vendor/json_pure/ext/json/ext/parser/parser.c +292 -186
  21. data/vendor/json_pure/ext/json/ext/parser/parser.h +71 -0
  22. data/vendor/json_pure/ext/json/ext/parser/parser.rl +218 -112
  23. data/vendor/json_pure/lib/json/add/core.rb +20 -7
  24. data/vendor/json_pure/lib/json/add/rails.rb +2 -2
  25. data/vendor/json_pure/lib/json/common.rb +85 -42
  26. data/vendor/json_pure/lib/json/pure.rb +3 -3
  27. data/vendor/json_pure/lib/json/pure/generator.rb +112 -90
  28. data/vendor/json_pure/lib/json/pure/parser.rb +42 -4
  29. data/vendor/json_pure/lib/json/version.rb +1 -1
  30. data/vendor/json_pure/tests/test_json.rb +46 -18
  31. data/vendor/json_pure/tests/test_json_addition.rb +4 -6
  32. data/vendor/json_pure/tests/test_json_encoding.rb +68 -0
  33. data/vendor/json_pure/tests/test_json_generate.rb +30 -14
  34. data/vendor/json_pure/tests/test_json_rails.rb +5 -7
  35. data/vendor/json_pure/tests/test_json_unicode.rb +20 -6
  36. metadata +26 -15
  37. data/vendor/json_pure/doc-templates/main.txt +0 -283
  38. data/vendor/json_pure/ext/json/ext/generator/unicode.c +0 -182
  39. data/vendor/json_pure/ext/json/ext/generator/unicode.h +0 -53
  40. data/vendor/json_pure/ext/json/ext/parser/unicode.c +0 -154
  41. data/vendor/json_pure/ext/json/ext/parser/unicode.h +0 -58
data/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ == 5.1.3
2
+
3
+ * Added debug output when contact with server cannot be established
4
+ * Updated to json_pure 1.4.2
5
+
1
6
  == 5.1.2
2
7
 
3
8
  * Added backtrace to Plugin code compile errors
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby -wKU
2
2
 
3
3
  module Scout
4
- VERSION = "5.1.2".freeze
4
+ VERSION = "5.1.3".freeze
5
5
  end
6
6
 
7
7
  require "scout/command"
@@ -394,6 +394,9 @@ module Scout
394
394
  "CONTENT_ENCODING" => "gzip" )
395
395
  rescue Exception
396
396
  error "Unable to check in with the server."
397
+ debug $!.class.to_s
398
+ debug $!.message
399
+ debug $!.backtrace
397
400
  end
398
401
 
399
402
 
@@ -414,4 +417,4 @@ module Scout
414
417
  end
415
418
  end
416
419
  end
417
- end
420
+ end
@@ -1,3 +1,46 @@
1
+ 2010-04-26 (1.4.2)
2
+ * Applied patch from naruse Yui NARUSE <naruse@airemix.com> to make building with
3
+ Microsoft Visual C possible again.
4
+ * Applied patch from devrandom <c1.github@niftybox.net> in order to allow building of
5
+ json_pure if extensiontask is not present.
6
+ * Thanks to Dustin Schneider <dustin@stocktwits.com>, who reported a memory
7
+ leak, which is fixed in this release.
8
+ * Applied 993f261ccb8f911d2ae57e9db48ec7acd0187283 patch from josh@github.
9
+ 2010-04-25 (1.4.1)
10
+ * Fix for a bug reported by Dan DeLeo <dan@kallistec.com>, caused by T_FIXNUM
11
+ being different on 32bit/64bit architectures.
12
+ 2010-04-23 (1.4.0)
13
+ * Major speed improvements and building with simplified
14
+ directory/file-structure.
15
+ * Extension should at least be comapatible with MRI, YARV and Rubinius.
16
+ 2010-04-07 (1.2.4)
17
+ * Triger const_missing callback to make Rails' dynamic class loading work.
18
+ 2010-03-11 (1.2.3)
19
+ * Added a State#[] method which returns an attribute's value in order to
20
+ increase duck type compatibility to Hash.
21
+ 2010-02-27 (1.2.2)
22
+ * Made some changes to make the building of the parser/generator compatible
23
+ to Rubinius.
24
+ 2009-11-25 (1.2.1)
25
+ * Added :symbolize_names option to Parser, which returns symbols instead of
26
+ strings in object names/keys.
27
+ 2009-10-01 (1.2.0)
28
+ * fast_generate now raises an exeception for nan and infinite floats.
29
+ * On Ruby 1.8 json supports parsing of UTF-8, UTF-16BE, UTF-16LE, UTF-32BE,
30
+ and UTF-32LE JSON documents now. Under Ruby 1.9 the M17n conversion
31
+ functions are used to convert from all supported encodings. ASCII-8BIT
32
+ encoded strings are handled like all strings under Ruby 1.8 were.
33
+ * Better documentation
34
+ 2009-08-23 (1.1.9)
35
+ * Added forgotten main doc file extra_rdoc_files.
36
+ 2009-08-23 (1.1.8)
37
+ * Applied a patch by OZAWA Sakuro <sakuro@2238club.org> to make json/pure
38
+ work in environments that don't provide iconv.
39
+ * Applied patch by okkez_ in order to fix Ruby Bug #1768:
40
+ http://redmine.ruby-lang.org/issues/show/1768.
41
+ * Finally got around to avoid the rather paranoid escaping of ?/ characters
42
+ in the generator's output. The parsers aren't affected by this change.
43
+ Thanks to Rich Apodaca <rapodaca@metamolecular.com> for the suggestion.
1
44
  2009-06-29 (1.1.7)
2
45
  * Security Fix for JSON::Pure::Parser. A specially designed string could
3
46
  cause catastrophic backtracking in one of the parser's regular expressions
@@ -1,6 +1,6 @@
1
1
  Ruby is copyrighted free software by Yukihiro Matsumoto <matz@netlab.co.jp>.
2
2
  You can redistribute it and/or modify it under either the terms of the GPL
3
- (see COPYING.txt file), or the conditions below:
3
+ (see GPL file), or the conditions below:
4
4
 
5
5
  1. You may make and give away verbatim copies of the source form of the
6
6
  software without restriction, provided that you duplicate all of the
@@ -1,12 +1,12 @@
1
- GNU GENERAL PUBLIC LICENSE
2
- Version 2, June 1991
1
+ GNU GENERAL PUBLIC LICENSE
2
+ Version 2, June 1991
3
3
 
4
4
  Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5
5
  59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
6
6
  Everyone is permitted to copy and distribute verbatim copies
7
7
  of this license document, but changing it is not allowed.
8
8
 
9
- Preamble
9
+ Preamble
10
10
 
11
11
  The licenses for most software are designed to take away your
12
12
  freedom to share and change it. By contrast, the GNU General Public
@@ -56,7 +56,7 @@ patent must be licensed for everyone's free use or not licensed at all.
56
56
  The precise terms and conditions for copying, distribution and
57
57
  modification follow.
58
58
 
59
- GNU GENERAL PUBLIC LICENSE
59
+ GNU GENERAL PUBLIC LICENSE
60
60
  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
61
61
 
62
62
  0. This License applies to any program or other work which contains
@@ -255,7 +255,7 @@ make exceptions for this. Our decision will be guided by the two goals
255
255
  of preserving the free status of all derivatives of our free software and
256
256
  of promoting the sharing and reuse of software generally.
257
257
 
258
- NO WARRANTY
258
+ NO WARRANTY
259
259
 
260
260
  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261
261
  FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
@@ -277,9 +277,9 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277
277
  PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278
278
  POSSIBILITY OF SUCH DAMAGES.
279
279
 
280
- END OF TERMS AND CONDITIONS
280
+ END OF TERMS AND CONDITIONS
281
281
 
282
- How to Apply These Terms to Your New Programs
282
+ How to Apply These Terms to Your New Programs
283
283
 
284
284
  If you develop a new program, and you want it to be of the greatest
285
285
  possible use to the public, the best way to achieve this is to make it
@@ -1,78 +1,358 @@
1
- Dependencies for Building
2
- =========================
1
+ == Description
3
2
 
4
- - You need rake to build the extensions and install them.
3
+ This is a implementation of the JSON specification according to RFC 4627
4
+ http://www.ietf.org/rfc/rfc4627.txt . Starting from version 1.0.0 on there
5
+ will be two variants available:
5
6
 
6
- You can get it from rubyforge:
7
- http://rubyforge.org/projects/rake
8
-
9
- or just type
7
+ * A pure ruby variant, that relies on the iconv and the stringscan
8
+ extensions, which are both part of the ruby standard library.
9
+ * The quite a bit faster C extension variant, which is in parts implemented
10
+ in C and comes with its own unicode conversion functions and a parser
11
+ generated by the ragel state machine compiler
12
+ http://www.cs.queensu.ca/~thurston/ragel .
10
13
 
11
- # gem install rake
14
+ Both variants of the JSON generator escape all non-ASCII and control characters
15
+ with \uXXXX escape sequences, and support UTF-16 surrogate pairs in order to be
16
+ able to generate the whole range of unicode code points. This means that
17
+ generated JSON document is encoded as UTF-8 (because ASCII is a subset of
18
+ UTF-8) and at the same time avoids decoding problems for receiving endpoints,
19
+ that don't expect UTF-8 encoded texts. On the negative side this may lead to a
20
+ bit longer strings than necessarry.
12
21
 
13
- for the installation via rubygems.
22
+ All strings, that are to be encoded as JSON strings, should be UTF-8 byte
23
+ sequences on the Ruby side. To encode raw binary strings, that aren't UTF-8
24
+ encoded, please use the to_json_raw_object method of String (which produces
25
+ an object, that contains a byte array) and decode the result on the receiving
26
+ endpoint.
14
27
 
15
- - If you want to rebuild the parser.c file or draw nice graphviz images of the
16
- state machines, you need ragel from:
17
- http://www.cs.queensu.ca/~thurston/ragel
28
+ The JSON parsers can parse UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, and UTF-32LE
29
+ JSON documents under Ruby 1.8. Under Ruby 1.9 they take advantage of Ruby's
30
+ M17n features and can parse all documents which have the correct
31
+ String#encoding set. If a document string has ASCII-8BIT as an encoding the
32
+ parser attempts to figure out which of the UTF encodings from above it is and
33
+ trys to parse it.
18
34
 
19
- Installation
20
- ============
35
+ == Installation
21
36
 
22
- It's recommended to use the extension variant of JSON, because it's quite a bit
23
- faster than the pure ruby variant. If you cannot build it on your system, you
24
- can settle for the latter.
37
+ It's recommended to use the extension variant of JSON, because it's faster than
38
+ the pure ruby variant. If you cannot build it on your system, you can settle
39
+ for the latter.
25
40
 
26
41
  Just type into the command line as root:
27
42
 
28
- # rake install
43
+ # rake install
29
44
 
30
45
  The above command will build the extensions and install them on your system.
31
46
 
32
- # rake install_pure
47
+ # rake install_pure
33
48
 
34
49
  or
35
50
 
36
- # ruby install.rb
51
+ # ruby install.rb
37
52
 
38
53
  will just install the pure ruby implementation of JSON.
39
54
 
40
55
  If you use Rubygems you can type
41
56
 
42
- # gem install json
57
+ # gem install json
43
58
 
44
59
  instead, to install the newest JSON version.
45
60
 
46
61
  There is also a pure ruby json only variant of the gem, that can be installed
47
62
  with:
48
63
 
49
- # gem install json_pure
64
+ # gem install json_pure
65
+
66
+ == Compiling the extensions yourself
67
+
68
+ If you want to build the extensions yourself you need rake:
69
+
70
+ You can get it from rubyforge:
71
+ http://rubyforge.org/projects/rake
72
+
73
+ or just type
74
+
75
+ # gem install rake
76
+
77
+ for the installation via rubygems.
78
+
79
+ If you want to create the parser.c file from its parser.rl file or draw nice
80
+ graphviz images of the state machines, you need ragel from: http://www.cs.queensu.ca/~thurston/ragel
81
+
82
+
83
+ == Usage
84
+
85
+ To use JSON you can
86
+ require 'json'
87
+ to load the installed variant (either the extension 'json' or the pure
88
+ variant 'json_pure'). If you have installed the extension variant, you can
89
+ pick either the extension variant or the pure variant by typing
90
+ require 'json/ext'
91
+ or
92
+ require 'json/pure'
93
+
94
+ Now you can parse a JSON document into a ruby data structure by calling
95
+
96
+ JSON.parse(document)
97
+
98
+ If you want to generate a JSON document from a ruby data structure call
99
+ JSON.generate(data)
100
+
101
+ You can also use the pretty_generate method (which formats the output more
102
+ verbosely and nicely) or fast_generate (which doesn't do any of the security
103
+ checks generate performs, e. g. nesting deepness checks).
104
+
105
+ To create a valid JSON document you have to make sure, that the output is
106
+ embedded in either a JSON array [] or a JSON object {}. The easiest way to do
107
+ this, is by putting your values in a Ruby Array or Hash instance.
108
+
109
+ There are also the JSON and JSON[] methods which use parse on a String or
110
+ generate a JSON document from an array or hash:
111
+
112
+ document = JSON 'test' => 23 # => "{\"test\":23}"
113
+ document = JSON['test'] => 23 # => "{\"test\":23}"
114
+
115
+ and
116
+
117
+ data = JSON '{"test":23}' # => {"test"=>23}
118
+ data = JSON['{"test":23}'] # => {"test"=>23}
119
+
120
+ You can choose to load a set of common additions to ruby core's objects if
121
+ you
122
+ require 'json/add/core'
50
123
 
51
- Testing and Examples
52
- ====================
124
+ After requiring this you can, e. g., serialise/deserialise Ruby ranges:
53
125
 
54
- To run the tests type:
126
+ JSON JSON(1..10) # => 1..10
55
127
 
56
- $ rake test_ext
128
+ To find out how to add JSON support to other or your own classes, read the
129
+ section "More Examples" below.
57
130
 
58
- This will build the extensions first and then test them.
131
+ To get the best compatibility to rails' JSON implementation, you can
132
+ require 'json/add/rails'
59
133
 
60
- $ rake test_pure
134
+ Both of the additions attempt to require 'json' (like above) first, if it has
135
+ not been required yet.
61
136
 
62
- This will test the pure ruby extensions.
137
+ == More Examples
63
138
 
64
- There is also a small example in tools/server.rb if you want to see, how
139
+ To create a JSON document from a ruby data structure, you can call
140
+ JSON.generate like that:
141
+
142
+ json = JSON.generate [1, 2, {"a"=>3.141}, false, true, nil, 4..10]
143
+ # => "[1,2,{\"a\":3.141},false,true,null,\"4..10\"]"
144
+
145
+ To get back a ruby data structure from a JSON document, you have to call
146
+ JSON.parse on it:
147
+
148
+ JSON.parse json
149
+ # => [1, 2, {"a"=>3.141}, false, true, nil, "4..10"]
150
+
151
+ Note, that the range from the original data structure is a simple
152
+ string now. The reason for this is, that JSON doesn't support ranges
153
+ or arbitrary classes. In this case the json library falls back to call
154
+ Object#to_json, which is the same as #to_s.to_json.
155
+
156
+ It's possible to add JSON support serialization to arbitrary classes by
157
+ simply implementing a more specialized version of the #to_json method, that
158
+ should return a JSON object (a hash converted to JSON with #to_json) like
159
+ this (don't forget the *a for all the arguments):
160
+
161
+ class Range
162
+ def to_json(*a)
163
+ {
164
+ 'json_class' => self.class.name, # = 'Range'
165
+ 'data' => [ first, last, exclude_end? ]
166
+ }.to_json(*a)
167
+ end
168
+ end
169
+
170
+ The hash key 'json_class' is the class, that will be asked to deserialise the
171
+ JSON representation later. In this case it's 'Range', but any namespace of
172
+ the form 'A::B' or '::A::B' will do. All other keys are arbitrary and can be
173
+ used to store the necessary data to configure the object to be deserialised.
174
+
175
+ If a the key 'json_class' is found in a JSON object, the JSON parser checks
176
+ if the given class responds to the json_create class method. If so, it is
177
+ called with the JSON object converted to a Ruby hash. So a range can
178
+ be deserialised by implementing Range.json_create like this:
179
+
180
+ class Range
181
+ def self.json_create(o)
182
+ new(*o['data'])
183
+ end
184
+ end
185
+
186
+ Now it possible to serialise/deserialise ranges as well:
187
+
188
+ json = JSON.generate [1, 2, {"a"=>3.141}, false, true, nil, 4..10]
189
+ # => "[1,2,{\"a\":3.141},false,true,null,{\"json_class\":\"Range\",\"data\":[4,10,false]}]"
190
+ JSON.parse json
191
+ # => [1, 2, {"a"=>3.141}, false, true, nil, 4..10]
192
+
193
+ JSON.generate always creates the shortest possible string representation of a
194
+ ruby data structure in one line. This is good for data storage or network
195
+ protocols, but not so good for humans to read. Fortunately there's also
196
+ JSON.pretty_generate (or JSON.pretty_generate) that creates a more readable
197
+ output:
198
+
199
+ puts JSON.pretty_generate([1, 2, {"a"=>3.141}, false, true, nil, 4..10])
200
+ [
201
+ 1,
202
+ 2,
203
+ {
204
+ "a": 3.141
205
+ },
206
+ false,
207
+ true,
208
+ null,
209
+ {
210
+ "json_class": "Range",
211
+ "data": [
212
+ 4,
213
+ 10,
214
+ false
215
+ ]
216
+ }
217
+ ]
218
+
219
+ There are also the methods Kernel#j for generate, and Kernel#jj for
220
+ pretty_generate output to the console, that work analogous to Core Ruby's p and
221
+ the pp library's pp methods.
222
+
223
+ The script tools/server.rb contains a small example if you want to test, how
65
224
  receiving a JSON object from a webrick server in your browser with the
66
- javasript prototype library (http://www.prototypejs.org) works.
225
+ javasript prototype library http://www.prototypejs.org works.
226
+
227
+ == Speed Comparisons
228
+
229
+ I have created some benchmark results (see the benchmarks/data-p4-3Ghz
230
+ subdir of the package) for the JSON-parser to estimate the speed up in the C
231
+ extension:
232
+
233
+ Comparing times (call_time_mean):
234
+ 1 ParserBenchmarkExt#parser 900 repeats:
235
+ 553.922304770 ( real) -> 21.500x
236
+ 0.001805307
237
+ 2 ParserBenchmarkYAML#parser 1000 repeats:
238
+ 224.513358139 ( real) -> 8.714x
239
+ 0.004454078
240
+ 3 ParserBenchmarkPure#parser 1000 repeats:
241
+ 26.755020642 ( real) -> 1.038x
242
+ 0.037376163
243
+ 4 ParserBenchmarkRails#parser 1000 repeats:
244
+ 25.763381731 ( real) -> 1.000x
245
+ 0.038814780
246
+ calls/sec ( time) -> speed covers
247
+ secs/call
248
+
249
+ In the table above 1 is JSON::Ext::Parser, 2 is YAML.load with YAML
250
+ compatbile JSON document, 3 is is JSON::Pure::Parser, and 4 is
251
+ ActiveSupport::JSON.decode. The ActiveSupport JSON-decoder converts the
252
+ input first to YAML and then uses the YAML-parser, the conversion seems to
253
+ slow it down so much that it is only as fast as the JSON::Pure::Parser!
254
+
255
+ If you look at the benchmark data you can see that this is mostly caused by
256
+ the frequent high outliers - the median of the Rails-parser runs is still
257
+ overall smaller than the median of the JSON::Pure::Parser runs:
258
+
259
+ Comparing times (call_time_median):
260
+ 1 ParserBenchmarkExt#parser 900 repeats:
261
+ 800.592479481 ( real) -> 26.936x
262
+ 0.001249075
263
+ 2 ParserBenchmarkYAML#parser 1000 repeats:
264
+ 271.002390644 ( real) -> 9.118x
265
+ 0.003690004
266
+ 3 ParserBenchmarkRails#parser 1000 repeats:
267
+ 30.227910865 ( real) -> 1.017x
268
+ 0.033082008
269
+ 4 ParserBenchmarkPure#parser 1000 repeats:
270
+ 29.722384421 ( real) -> 1.000x
271
+ 0.033644676
272
+ calls/sec ( time) -> speed covers
273
+ secs/call
274
+
275
+ I have benchmarked the JSON-Generator as well. This generated a few more
276
+ values, because there are different modes that also influence the achieved
277
+ speed:
278
+
279
+ Comparing times (call_time_mean):
280
+ 1 GeneratorBenchmarkExt#generator_fast 1000 repeats:
281
+ 547.354332608 ( real) -> 15.090x
282
+ 0.001826970
283
+ 2 GeneratorBenchmarkExt#generator_safe 1000 repeats:
284
+ 443.968212317 ( real) -> 12.240x
285
+ 0.002252414
286
+ 3 GeneratorBenchmarkExt#generator_pretty 900 repeats:
287
+ 375.104545883 ( real) -> 10.341x
288
+ 0.002665923
289
+ 4 GeneratorBenchmarkPure#generator_fast 1000 repeats:
290
+ 49.978706968 ( real) -> 1.378x
291
+ 0.020008521
292
+ 5 GeneratorBenchmarkRails#generator 1000 repeats:
293
+ 38.531868759 ( real) -> 1.062x
294
+ 0.025952543
295
+ 6 GeneratorBenchmarkPure#generator_safe 1000 repeats:
296
+ 36.927649925 ( real) -> 1.018x 7 (>=3859)
297
+ 0.027079979
298
+ 7 GeneratorBenchmarkPure#generator_pretty 1000 repeats:
299
+ 36.272134441 ( real) -> 1.000x 6 (>=3859)
300
+ 0.027569373
301
+ calls/sec ( time) -> speed covers
302
+ secs/call
303
+
304
+ In the table above 1-3 are JSON::Ext::Generator methods. 4, 6, and 7 are
305
+ JSON::Pure::Generator methods and 5 is the Rails JSON generator. It is now a
306
+ bit faster than the generator_safe and generator_pretty methods of the pure
307
+ variant but slower than the others.
308
+
309
+ To achieve the fastest JSON document output, you can use the fast_generate
310
+ method. Beware, that this will disable the checking for circular Ruby data
311
+ structures, which may cause JSON to go into an infinite loop.
312
+
313
+ Here are the median comparisons for completeness' sake:
314
+
315
+ Comparing times (call_time_median):
316
+ 1 GeneratorBenchmarkExt#generator_fast 1000 repeats:
317
+ 708.258020939 ( real) -> 16.547x
318
+ 0.001411915
319
+ 2 GeneratorBenchmarkExt#generator_safe 1000 repeats:
320
+ 569.105020353 ( real) -> 13.296x
321
+ 0.001757145
322
+ 3 GeneratorBenchmarkExt#generator_pretty 900 repeats:
323
+ 482.825371244 ( real) -> 11.280x
324
+ 0.002071142
325
+ 4 GeneratorBenchmarkPure#generator_fast 1000 repeats:
326
+ 62.717626652 ( real) -> 1.465x
327
+ 0.015944481
328
+ 5 GeneratorBenchmarkRails#generator 1000 repeats:
329
+ 43.965681162 ( real) -> 1.027x
330
+ 0.022745013
331
+ 6 GeneratorBenchmarkPure#generator_safe 1000 repeats:
332
+ 43.929073409 ( real) -> 1.026x 7 (>=3859)
333
+ 0.022763968
334
+ 7 GeneratorBenchmarkPure#generator_pretty 1000 repeats:
335
+ 42.802514491 ( real) -> 1.000x 6 (>=3859)
336
+ 0.023363113
337
+ calls/sec ( time) -> speed covers
338
+ secs/call
339
+
340
+ == Author
341
+
342
+ Florian Frank <mailto:flori@ping.de>
343
+
344
+ == License
345
+
346
+ Ruby License, see the COPYING file included in the source distribution. The
347
+ Ruby License includes the GNU General Public License (GPL), Version 2, so see
348
+ the file GPL as well.
349
+
350
+ == Download
67
351
 
68
- Author
69
- ======
352
+ The latest version of this library can be downloaded at
70
353
 
71
- Florian Frank <flori@ping.de>
354
+ * http://rubyforge.org/frs?group_id=953
72
355
 
73
- License
74
- =======
356
+ Online Documentation should be located at
75
357
 
76
- Ruby License, see the RUBY file included in the source distribution. The Ruby
77
- License includes the GNU General Public License (GPL), Version 2, so see the
78
- file GPL as well.
358
+ * http://json.rubyforge.org