Sha256: 9410ee502e90bc1fa77583f9328b17e04f3b03fa777b0f0aa40e867db2b92a52

Contents?: true

Size: 1.59 KB

Versions: 35

Compression:

Stored size: 1.59 KB

Contents

#!/usr/bin/env ruby
# encoding: UTF-8

$: << File.join(File.dirname(__FILE__), "../lib")
$: << File.join(File.dirname(__FILE__), "../ext")
# $: << File.join(File.dirname(__FILE__), "../../multi_json/lib")

require 'multi_json'
require 'benchmark'
require 'yajl'
require 'json'
require 'oj'

iter = 1_000_000
iter = 100_000

json = %({"k1":"val1","k2":"val2","k3":"val3"})
obj = { k1: "val1", k2: "val2", k3: "val3" }

puts "Benchmarks for different JSON handlers with MultiJson."
puts "  Ruby #{RUBY_VERSION}"
puts "  #{iter} iterations"

MultiJson.engine = :oj
dt = Benchmark.realtime { iter.times { MultiJson.decode(json) }}
et = Benchmark.realtime { iter.times { MultiJson.encode(obj) }}
puts "    Oj decode: #{dt}  encode: #{et}"

MultiJson.engine = :yajl
dt = Benchmark.realtime { iter.times { MultiJson.decode(json) }}
et = Benchmark.realtime { iter.times { MultiJson.encode(obj) }}
puts "  Yajl decode: #{dt}  encode: #{et}"

MultiJson.engine = :json_gem
dt = Benchmark.realtime { iter.times { MultiJson.decode(json) }}
et = Benchmark.realtime { iter.times { MultiJson.encode(obj) }}
puts "  Json decode: #{dt}  encode: #{et}"

Oj.default_options = { :mode => :compat, :time_format => :ruby }
dt = Benchmark.realtime { iter.times { Oj.load(json) }}
et = Benchmark.realtime { iter.times { Oj.dump(obj) }}
puts "Raw Oj decode: #{dt}  encode: #{et}"

ye = Yajl::Encoder.new
dt = Benchmark.realtime { iter.times { Yajl::Parser.parse(json) }}
et = Benchmark.realtime { iter.times { Yajl::Encoder.encode(obj) }}
e2 = Benchmark.realtime { iter.times { ye.encode(obj) }}
puts "Raw Yajl decode: #{dt} encode: #{et}, encoder: #{e2}"

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
oj-2.9.4 test/mj.rb
oj-2.9.3 test/mj.rb
oj-2.9.2 test/mj.rb
oj-2.9.1 test/mj.rb
oj-2.8.0 test/mj.rb
oj-2.7.2 test/mj.rb
oj-2.7.1 test/mj.rb
oj-2.7.0 test/mj.rb
oj-2.6.1 test/mj.rb
oj-2.6.0 test/mj.rb
oj-2.5.5 test/mj.rb
oj-2.5.4 test/mj.rb
oj-2.5.3 test/mj.rb
oj-2.5.2 test/mj.rb
oj-2.5.1 test/mj.rb
oj-2.4.3 test/mj.rb
oj-2.4.2 test/mj.rb
oj-2.4.1 test/mj.rb
oj-2.4.0 test/mj.rb
oj-2.3.0 test/mj.rb