aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/gems/json-1.5.1/benchmarks/parser2_benchmark.rb
diff options
context:
space:
mode:
authorSeb Bacon <seb@seb-virtual-machine.(none)>2011-03-25 12:37:59 +0000
committerSeb Bacon <seb@seb-virtual-machine.(none)>2011-03-25 12:37:59 +0000
commit22c25e42847d41924d43d31f3ef67be1ae4a155e (patch)
tree3534d4842184ab0a769f606b39ff0447c246de7e /vendor/gems/json-1.5.1/benchmarks/parser2_benchmark.rb
parent1380232e20da4c0b9ce72efb43c1f4d1978ab5d7 (diff)
include json gem (for tests to pass)
Diffstat (limited to 'vendor/gems/json-1.5.1/benchmarks/parser2_benchmark.rb')
-rwxr-xr-xvendor/gems/json-1.5.1/benchmarks/parser2_benchmark.rb251
1 files changed, 251 insertions, 0 deletions
diff --git a/vendor/gems/json-1.5.1/benchmarks/parser2_benchmark.rb b/vendor/gems/json-1.5.1/benchmarks/parser2_benchmark.rb
new file mode 100755
index 000000000..95a510de6
--- /dev/null
+++ b/vendor/gems/json-1.5.1/benchmarks/parser2_benchmark.rb
@@ -0,0 +1,251 @@
+#!/usr/bin/env ruby
+# CODING: UTF-8
+
+require 'rbconfig'
+RUBY_PATH=File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name'])
+RAKE_PATH=File.join(Config::CONFIG['bindir'], 'rake')
+require 'bullshit'
+case ARGV.first
+when 'ext'
+ require 'json/ext'
+when 'pure'
+ require 'json/pure'
+when 'yaml'
+ require 'yaml'
+ require 'json/pure'
+when 'rails'
+ require 'active_support'
+ require 'json/pure'
+when 'yajl'
+ require 'yajl'
+ require 'json/pure'
+else
+ require 'json/pure'
+end
+
+module Parser2BenchmarkCommon
+ include JSON
+
+ def setup
+ @big = @json = File.read(File.join(File.dirname(__FILE__), 'ohai.json'))
+ end
+
+ def generic_reset_method
+ @result == @big or raise "not equal"
+ end
+end
+
+class Parser2BenchmarkExt < Bullshit::RepeatCase
+ include Parser2BenchmarkCommon
+
+ warmup yes
+ iterations 2000
+
+ truncate_data do
+ enabled false
+ alpha_level 0.05
+ window_size 50
+ slope_angle 0.1
+ end
+
+ autocorrelation do
+ alpha_level 0.05
+ max_lags 50
+ file yes
+ end
+
+ output_dir File.join(File.dirname(__FILE__), 'data')
+ output_filename benchmark_name + '.log'
+ data_file yes
+ histogram yes
+
+ def benchmark_parser
+ @result = JSON.parse(@json)
+ end
+
+ alias reset_parser generic_reset_method
+
+ def benchmark_parser_symbolic
+ @result = JSON.parse(@json, :symbolize_names => true)
+ end
+
+ alias reset_parser_symbolc generic_reset_method
+end
+
+class Parser2BenchmarkPure < Bullshit::RepeatCase
+ include Parser2BenchmarkCommon
+
+ warmup yes
+ iterations 400
+
+ truncate_data do
+ enabled false
+ alpha_level 0.05
+ window_size 50
+ slope_angle 0.1
+ end
+
+ autocorrelation do
+ alpha_level 0.05
+ max_lags 50
+ file yes
+ end
+
+ output_dir File.join(File.dirname(__FILE__), 'data')
+ output_filename benchmark_name + '.log'
+ data_file yes
+ histogram yes
+
+ def benchmark_parser
+ @result = JSON.parse(@json)
+ end
+
+ alias reset_parser generic_reset_method
+
+ def benchmark_parser_symbolic
+ @result = JSON.parse(@json, :symbolize_names => true)
+ end
+
+ alias reset_parser_symbolc generic_reset_method
+end
+
+class Parser2BenchmarkYAML < Bullshit::RepeatCase
+ warmup yes
+ iterations 400
+
+ truncate_data do
+ enabled false
+ alpha_level 0.05
+ window_size 50
+ slope_angle 0.1
+ end
+
+ autocorrelation do
+ alpha_level 0.05
+ max_lags 50
+ file yes
+ end
+
+ output_dir File.join(File.dirname(__FILE__), 'data')
+ output_filename benchmark_name + '.log'
+ data_file yes
+ histogram yes
+
+ def setup
+ @big = @json = File.read(File.join(File.dirname(__FILE__), 'ohai.json'))
+ end
+
+ def benchmark_parser
+ @result = YAML.load(@json)
+ end
+
+ def generic_reset_method
+ @result == @big or raise "not equal"
+ end
+end
+
+class Parser2BenchmarkRails < Bullshit::RepeatCase
+ warmup yes
+ iterations 400
+
+ truncate_data do
+ alpha_level 0.05
+ window_size 50
+ slope_angle 0.1
+ end
+
+ autocorrelation do
+ alpha_level 0.05
+ max_lags 50
+ file yes
+ end
+
+ output_dir File.join(File.dirname(__FILE__), 'data')
+ output_filename benchmark_name + '.log'
+ data_file yes
+ histogram yes
+
+ def setup
+ a = [ nil, false, true, "fÖß\nÄr", [ "n€st€d", true ], { "fooß" => "bär", "qu\r\nux" => true } ]
+ @big = a * 100
+ @json = JSON.generate(@big)
+ end
+
+ def benchmark_parser
+ @result = ActiveSupport::JSON.decode(@json)
+ end
+
+ def generic_reset_method
+ @result == @big or raise "not equal"
+ end
+end
+
+class Parser2BenchmarkYajl < Bullshit::RepeatCase
+ warmup yes
+ iterations 2000
+
+ truncate_data do
+ alpha_level 0.05
+ window_size 50
+ slope_angle 0.1
+ end
+
+ autocorrelation do
+ alpha_level 0.05
+ max_lags 50
+ file yes
+ end
+
+ output_dir File.join(File.dirname(__FILE__), 'data')
+ output_filename benchmark_name + '.log'
+ data_file yes
+ histogram yes
+
+ def setup
+ @big = @json = File.read(File.join(File.dirname(__FILE__), 'ohai.json'))
+ end
+
+ def benchmark_parser
+ @result = Yajl::Parser.new.parse(@json)
+ end
+
+ def generic_reset_method
+ @result == @big or raise "not equal"
+ end
+end
+
+if $0 == __FILE__
+ Bullshit::Case.autorun false
+
+ case ARGV.first
+ when 'ext'
+ Parser2BenchmarkExt.run
+ when 'pure'
+ Parser2BenchmarkPure.run
+ when 'yaml'
+ Parser2BenchmarkYAML.run
+ when 'rails'
+ Parser2BenchmarkRails.run
+ when 'yajl'
+ Parser2BenchmarkYajl.run
+ else
+ system "#{RAKE_PATH} clean"
+ system "#{RUBY_PATH} #$0 yaml"
+ system "#{RUBY_PATH} #$0 rails"
+ system "#{RUBY_PATH} #$0 pure"
+ system "#{RAKE_PATH} compile_ext"
+ system "#{RUBY_PATH} #$0 ext"
+ system "#{RUBY_PATH} #$0 yajl"
+ Bullshit.compare do
+ output_filename File.join(File.dirname(__FILE__), 'data', 'Parser2BenchmarkComparison.log')
+
+ benchmark Parser2BenchmarkExt, :parser, :load => yes
+ benchmark Parser2BenchmarkExt, :parser_symbolic, :load => yes
+ benchmark Parser2BenchmarkPure, :parser, :load => yes
+ benchmark Parser2BenchmarkPure, :parser_symbolic, :load => yes
+ benchmark Parser2BenchmarkYAML, :parser, :load => yes
+ benchmark Parser2BenchmarkRails, :parser, :load => yes
+ benchmark Parser2BenchmarkYajl, :parser, :load => yes
+ end
+ end
+end