|  | require_relative "../../harness/loader"
 | 
  
    |  | 
 | 
  
    |  | use_ractor_gemfile("json_parse")
 | 
  
    |  | puts "JSON #{JSON::VERSION}"
 | 
  
    |  | 
 | 
  
    |  | ELEMENTS = 300_000
 | 
  
    |  | list = ELEMENTS.times.map do |i|
 | 
  
    |  |   {
 | 
  
    |  |     "string #{i}" => "value #{i}",
 | 
  
    |  |     "string #{i}" => "value #{i}",
 | 
  
    |  |     "string #{i}" => "value #{i}",
 | 
  
    |  |     "string #{i}" => "value #{i}",
 | 
  
    |  |     "string #{i}" => "value #{i}",
 | 
  
    |  |     "string #{i}" => "value #{i}",
 | 
  
    |  |     "string #{i}" => "value #{i}",
 | 
  
    |  |     "string #{i}" => "value #{i}",
 | 
  
    |  |     "string #{i}" => "value #{i}",
 | 
  
    |  |     "string #{i}" => "value #{i}",
 | 
  
    |  |     "string #{i}" => "value #{i}",
 | 
  
    |  |     "string #{i}" => "value #{i}",
 | 
  
    |  |     "string #{i}" => "value #{i}",
 | 
  
    |  |     "string #{i}" => "value #{i}",
 | 
  
    |  |     "string #{i}" => "value #{i}",
 | 
  
    |  |     "string #{i}" => "value #{i}",
 | 
  
    |  |     "string #{i}" => "value #{i}",
 | 
  
    |  |     "string #{i}" => "value #{i}",
 | 
  
    |  |     "string #{i}" => "value #{i}",
 | 
  
    |  |     "string #{i}" => "value #{i}",
 | 
  
    |  |   }.to_json
 | 
  
    |  | end
 | 
  
    |  | Ractor.make_shareable(list)
 | 
  
    |  | 
 | 
  
    |  | # Work is divided between ractors
 | 
  
    |  | run_benchmark(5, ractor_args: [list]) do |num_rs, list|
 | 
  
    |  |   # num_rs: 1,list: 100_000
 | 
  
    |  |   # num_rs: 2 list: 50_000
 | 
  
    |  |   # num_rs: 4 list: 25_000
 | 
  
    |  |   if num_rs.zero?
 | 
  
    |  |     num = list.size
 | 
  
    |  |   else
 | 
  
    |  |     num = list.size / num_rs
 | 
  
    |  |   end
 | 
  
    |  |   list.each_with_index do |json, idx|
 | 
  
    |  |     break if idx >= num
 | 
  
    |  |     JSON.parse(json)
 | 
  
    |  |   end
 | 
  
    |  | end
 |