Skip to content

Commit

Permalink
Merge pull request #580 from eregon/bench
Browse files Browse the repository at this point in the history
Add a simple JSON.dump and JSON.load benchmark
  • Loading branch information
hsbt authored Jun 3, 2024
2 parents 308b3d6 + 457a00e commit 80b5865
Show file tree
Hide file tree
Showing 3 changed files with 1,258 additions and 0 deletions.
1 change: 1 addition & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,4 @@ gem "rake"
gem "test-unit"
gem "test-unit-ruby-core"
gem "all_images", "~> 0" unless RUBY_PLATFORM =~ /java/
gem "benchmark-ips"
41 changes: 41 additions & 0 deletions benchmarks/bench.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
require 'benchmark/ips'

$:.unshift File.expand_path('../ext', __dir__)
$:.unshift File.expand_path('../lib', __dir__)

bench, mode = ARGV

if mode == 'pure'
require 'json/pure'
else
require 'json/ext'
end

bench_dump = bench == 'dump'
if bench_dump
p JSON.generator
else
p JSON.parser
end

str = File.read("#{__dir__}/ohai.json")
obj = JSON.load(str)

Benchmark.ips do |x|
unless RUBY_ENGINE == 'ruby'
x.warmup = 5
x.iterations = 5
end

if bench_dump
x.report('JSON.dump(obj)') do # max_nesting: false, allow_nan: true
JSON.dump(obj)
end
else
x.report('JSON.load(str)') do # max_nesting: false, allow_nan: true, allow_blank: true, create_additions: true
JSON.load(str)
end
end

x.compare!
end
Loading

0 comments on commit 80b5865

Please sign in to comment.