benchmark.rb in nyny-2.2.1 vs benchmark.rb in nyny-3.0.0

- old
+ new

@@ -1,125 +1,125 @@ -#!ruby -I ./lib -I lib -require 'nyny' -require 'ruby-prof' -require 'benchmark' -require 'sinatra' -include Benchmark - -set :run, false #do not run sinatra's builtin web server - -def build_apps &block - sinatra = Class.new(Sinatra::Base, &block).new - nyny = Class.new(NYNY::App, &block).new - return [nyny, sinatra].map {|app| Rack::MockRequest.new(app) } -end - -def run_test name, apps, &block - nyny, sinatra = apps - prc = Proc.new(&block) - - puts "\nTest: #{name}" - Benchmark.benchmark(CAPTION, 7, FORMAT, "> NYNY/Sinatra:") do |x| - nyny_time = x.report("nyny: ") { 1000.times { prc.call(nyny) } } - sinatra_time = x.report("sinatra:") { 1000.times { prc.call(sinatra) } } - puts "NYNY is #{"%.2f" % [sinatra_time.real/nyny_time.real]}x faster than Sinatra in this test" - end -end - -puts "Comparing NYNY #{NYNY::VERSION} with Sinatra #{Sinatra::VERSION}" - -# -# Empty app -apps = build_apps do - #empty app -end -run_test 'empty', apps do |app| - app.get '/' -end - -# -# Hello World -apps = build_apps do - get '/' do - 'Hello World' - end -end -run_test 'hello world', apps do |app| - app.get '/' -end - -# -# Filters -apps = build_apps do - before do - request - end - - after do - response - end - - get '/' do - 'Hello World!' - end -end -run_test 'filters', apps do |app| - app.get '/' -end - -# -# Helpers -apps = build_apps do - helpers do - def da_request - request - end - end - - get '/' do - da_request - end -end -run_test 'helpers', apps do |app| - app.get '/' -end - -# -# Url patterns -apps = build_apps do - get '/:name' do - params[:name] - end -end -run_test 'Url patterns', apps do |app| - app.get '/foo' -end - -# Plain routes -apps = build_apps do - [:get, :post, :put].each do |method| - 10.times do |i| - send(method, "/foo/#{i}") do - i - end - end - end -end -run_test 'A lot o Plain routes', apps do |app| - app.get '/foo/5' -end - -# -# Pattern routes -apps = build_apps do - [:get, :post, :put].each do |method| - 10.times do |i| - send(method, "/foo/#{i}/:action") do - params[:action] - end - end - end -end -run_test 'A lot of Pattern routes', apps do |app| - app.get '/foo/5/edit' -end - +#!ruby -I ./lib -I lib +require 'nyny' +require 'ruby-prof' +require 'benchmark' +require 'sinatra' +include Benchmark + +set :run, false #do not run sinatra's builtin web server + +def build_apps &block + sinatra = Class.new(Sinatra::Base, &block).new + nyny = Class.new(NYNY::App, &block).new + return [nyny, sinatra].map {|app| Rack::MockRequest.new(app) } +end + +def run_test name, apps, &block + nyny, sinatra = apps + prc = Proc.new(&block) + + puts "\nTest: #{name}" + Benchmark.benchmark(CAPTION, 7, FORMAT, "> NYNY/Sinatra:") do |x| + nyny_time = x.report("nyny: ") { 1000.times { prc.call(nyny) } } + sinatra_time = x.report("sinatra:") { 1000.times { prc.call(sinatra) } } + puts "NYNY is #{"%.2f" % [sinatra_time.real/nyny_time.real]}x faster than Sinatra in this test" + end +end + +puts "Comparing NYNY #{NYNY::VERSION} with Sinatra #{Sinatra::VERSION}" + +# +# Empty app +apps = build_apps do + #empty app +end +run_test 'empty', apps do |app| + app.get '/' +end + +# +# Hello World +apps = build_apps do + get '/' do + 'Hello World' + end +end +run_test 'hello world', apps do |app| + app.get '/' +end + +# +# Filters +apps = build_apps do + before do + request + end + + after do + response + end + + get '/' do + 'Hello World!' + end +end +run_test 'filters', apps do |app| + app.get '/' +end + +# +# Helpers +apps = build_apps do + helpers do + def da_request + request + end + end + + get '/' do + da_request + end +end +run_test 'helpers', apps do |app| + app.get '/' +end + +# +# Url patterns +apps = build_apps do + get '/:name' do + params[:name] + end +end +run_test 'Url patterns', apps do |app| + app.get '/foo' +end + +# Plain routes +apps = build_apps do + [:get, :post, :put].each do |method| + 10.times do |i| + send(method, "/foo/#{i}") do + i + end + end + end +end +run_test 'A lot o Plain routes', apps do |app| + app.get '/foo/5' +end + +# +# Pattern routes +apps = build_apps do + [:get, :post, :put].each do |method| + 10.times do |i| + send(method, "/foo/#{i}/:action") do + params[:action] + end + end + end +end +run_test 'A lot of Pattern routes', apps do |app| + app.get '/foo/5/edit' +end +