diff options
author | Seb Bacon <seb@seb-virtual-machine.(none)> | 2011-03-25 12:37:59 +0000 |
---|---|---|
committer | Seb Bacon <seb@seb-virtual-machine.(none)> | 2011-03-25 12:37:59 +0000 |
commit | 22c25e42847d41924d43d31f3ef67be1ae4a155e (patch) | |
tree | 3534d4842184ab0a769f606b39ff0447c246de7e /vendor/gems/json-1.5.1/benchmarks/parser_benchmark.rb | |
parent | 1380232e20da4c0b9ce72efb43c1f4d1978ab5d7 (diff) |
include json gem (for tests to pass)
Diffstat (limited to 'vendor/gems/json-1.5.1/benchmarks/parser_benchmark.rb')
-rwxr-xr-x | vendor/gems/json-1.5.1/benchmarks/parser_benchmark.rb | 259 |
1 files changed, 259 insertions, 0 deletions
diff --git a/vendor/gems/json-1.5.1/benchmarks/parser_benchmark.rb b/vendor/gems/json-1.5.1/benchmarks/parser_benchmark.rb new file mode 100755 index 000000000..9ce7e257d --- /dev/null +++ b/vendor/gems/json-1.5.1/benchmarks/parser_benchmark.rb @@ -0,0 +1,259 @@ +#!/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 ParserBenchmarkCommon + include JSON + + 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 generic_reset_method + @result == @big or raise "not equal" + end +end + +class ParserBenchmarkExt < Bullshit::RepeatCase + include ParserBenchmarkCommon + + 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 ParserBenchmarkPure < Bullshit::RepeatCase + include ParserBenchmarkCommon + + 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 ParserBenchmarkYAML < 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 + a = [ nil, false, true, "fÖß\nÄr", [ "n€st€d", true ], { "fooß" => "bär", "qu\r\nux" => true } ] + @big = a * 100 + @json = JSON.pretty_generate(@big) + end + + def benchmark_parser + @result = YAML.load(@json) + end + + def generic_reset_method + @result == @big or raise "not equal" + end +end + +class ParserBenchmarkRails < 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 + 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 ParserBenchmarkYajl < Bullshit::RepeatCase + 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 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 = 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' + ParserBenchmarkExt.run + when 'pure' + ParserBenchmarkPure.run + when 'yaml' + ParserBenchmarkYAML.run + when 'rails' + ParserBenchmarkRails.run + when 'yajl' + ParserBenchmarkYajl.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', 'ParserBenchmarkComparison.log') + + benchmark ParserBenchmarkExt, :parser, :load => yes + benchmark ParserBenchmarkExt, :parser_symbolic, :load => yes + benchmark ParserBenchmarkPure, :parser, :load => yes + benchmark ParserBenchmarkPure, :parser_symbolic, :load => yes + benchmark ParserBenchmarkYAML, :parser, :load => yes + benchmark ParserBenchmarkRails, :parser, :load => yes + benchmark ParserBenchmarkYajl, :parser, :load => yes + end + end +end |