Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'rubygems'
- require 'benchmark'
- require 'md5'
- require 'json'
- require 'yajl'
- HASH = {:one => nil, :two => nil, :three => nil, :four => {:a => nil, :b => nil, :c =>nil},
- :five => {:d => nil, :e => nil},
- :six => {:f => nil, :g => nil, :h =>nil, :i => nil, :j => nil, :k => nil, :l => nil},
- :seven => nil, :eight => nil,
- :nine => {:m => {:A => nil, :B => nil}}}
- def random_string
- Digest::MD5.hexdigest "#{Time.now + rand(999)}"
- end
- def random_number
- rand 999_999_999
- end
- def random_float
- random_number + rand
- end
- def randomize_entries hsh
- hsh.each_pair do |key, value|
- case value
- when NilClass
- hsh[key] = send METHODS[rand(3)]
- # puts "key [#{key}] value [#{hsh[key]}]"
- when Hash
- # puts "randomize! key [#{key}] value [#{value.inspect}]"
- randomize_entries value
- end
- end
- end
- METHODS = [:random_string, :random_number, :random_float]
- org_array = []
- generated_array = []
- io_generated_array = []
- one = []
- 0.upto(100_000) do |i|
- hsh = HASH.dup
- randomize_entries hsh
- org_array << hsh
- end
- org_array.each { |hsh| generated_array << JSON.fast_generate(hsh) }
- generated_array.each { |string| io_generated_array << StringIO.new(string) }
- Benchmark.bmbm("parse :max_nesting => false, :allow_nan => true, :create_additions => false:".size) do |x|
- x.report("fast generate:") do
- org_array.each { |hsh| JSON.fast_generate(hsh) }
- end
- x.report("yajl generate:") do
- yajl = Yajl::Encoder.new
- org_array.each { |hsh| yajl.encode(hsh, StringIO.new) }
- end
- x.report("parse! :max_nesting => 4, :allow_nan => false, :create_additions => false:") do
- generated_array.each { |string| JSON.parse!(string, :max_nesting => 4, :allow_nan => false, :create_additions => false) }
- end
- x.report("yajl parse") do
- yajl = Yajl::Parser.new
- io_generated_array.each { |string| yajl.parse string }
- end
- end
Add Comment
Please, Sign In to add comment