1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
#!/usr/bin/env ruby -wW1
# encoding: UTF-8
$: << File.join(File.dirname(__FILE__), "../lib")
$: << File.join(File.dirname(__FILE__), "../ext")
#require 'test/unit'
require 'optparse'
require 'yajl'
require 'oj'
$indent = 2
opts = OptionParser.new
opts.on("-h", "--help", "Show this display") { puts opts; Process.exit!(0) }
files = opts.parse(ARGV)
class Foo
def initialize()
@x = true
@y = 58
end
def to_json()
%{{"x":#{@x},"y":#{@y}}}
end
def to_hash()
{ 'x' => @x, 'y' => @y }
end
end
iter = 100000
s = %{
{ "class": "Foo::Bar",
"attr1": [ true, [false, [12345, null], 3.967, ["something", false], null]],
"attr2": { "one": 1 }
}
}
obj = Oj.load(s)
obj["foo"] = Foo.new()
Oj.default_options = { :indent => 0, :effort => :internal }
puts
start = Time.now
iter.times do
Oj.load(s)
end
dt = Time.now - start
puts "%d Oj.load()s in %0.3f seconds or %0.1f loads/msec" % [iter, dt, iter/dt/1000.0]
start = Time.now
iter.times do
Yajl::Parser.parse(s)
end
dt = Time.now - start
puts "%d Yajl::Parser.parse()s in %0.3f seconds or %0.1f parses/msec" % [iter, dt, iter/dt/1000.0]
puts
start = Time.now
iter.times do
Oj.dump(obj)
end
dt = Time.now - start
puts "%d Oj.dump()s in %0.3f seconds or %0.1f dumps/msec" % [iter, dt, iter/dt/1000.0]
start = Time.now
iter.times do
Yajl::Encoder.encode(obj)
end
dt = Time.now - start
puts "%d Yajl::Encoder.encode()s in %0.3f seconds or %0.1f encodes/msec" % [iter, dt, iter/dt/1000.0]
puts
|