Guest User

Untitled

a guest
Jun 19th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. require 'rubygems'
  2. require 'benchmark'
  3. require 'md5'
  4. require 'json'
  5. require 'yajl'
  6.  
  7. HASH = {:one => nil, :two => nil, :three => nil, :four => {:a => nil, :b => nil, :c =>nil},
  8. :five => {:d => nil, :e => nil},
  9. :six => {:f => nil, :g => nil, :h =>nil, :i => nil, :j => nil, :k => nil, :l => nil},
  10. :seven => nil, :eight => nil,
  11. :nine => {:m => {:A => nil, :B => nil}}}
  12.  
  13. def random_string
  14. Digest::MD5.hexdigest "#{Time.now + rand(999)}"
  15. end
  16.  
  17. def random_number
  18. rand 999_999_999
  19. end
  20.  
  21. def random_float
  22. random_number + rand
  23. end
  24.  
  25. def randomize_entries hsh
  26. hsh.each_pair do |key, value|
  27. case value
  28. when NilClass
  29. hsh[key] = send METHODS[rand(3)]
  30. # puts "key [#{key}] value [#{hsh[key]}]"
  31. when Hash
  32. # puts "randomize! key [#{key}] value [#{value.inspect}]"
  33. randomize_entries value
  34. end
  35. end
  36. end
  37.  
  38. METHODS = [:random_string, :random_number, :random_float]
  39.  
  40. org_array = []
  41. generated_array = []
  42. io_generated_array = []
  43. one = []
  44.  
  45. 0.upto(100_000) do |i|
  46. hsh = HASH.dup
  47. randomize_entries hsh
  48. org_array << hsh
  49. end
  50.  
  51. org_array.each { |hsh| generated_array << JSON.fast_generate(hsh) }
  52. generated_array.each { |string| io_generated_array << StringIO.new(string) }
  53.  
  54. Benchmark.bmbm("parse :max_nesting => false, :allow_nan => true, :create_additions => false:".size) do |x|
  55. x.report("fast generate:") do
  56. org_array.each { |hsh| JSON.fast_generate(hsh) }
  57. end
  58.  
  59.  
  60. x.report("yajl generate:") do
  61. yajl = Yajl::Encoder.new
  62. org_array.each { |hsh| yajl.encode(hsh, StringIO.new) }
  63.  
  64. end
  65.  
  66.  
  67. x.report("parse! :max_nesting => 4, :allow_nan => false, :create_additions => false:") do
  68. generated_array.each { |string| JSON.parse!(string, :max_nesting => 4, :allow_nan => false, :create_additions => false) }
  69. end
  70.  
  71.  
  72. x.report("yajl parse") do
  73. yajl = Yajl::Parser.new
  74. io_generated_array.each { |string| yajl.parse string }
  75. end
  76. end
Add Comment
Please, Sign In to add comment