Permalink
Browse files

Made benchmarks submodule so it's easier to keep in sync

  • Loading branch information...
1 parent ccd1c5e commit 27e880729eeb058583b79ccf84a7577c434addfd @wycats wycats committed Aug 11, 2009
View
3 .gitmodules
@@ -0,0 +1,3 @@
+[submodule "actionpack/examples"]
+ path = actionpack/examples
+ url = git://github.com/wycats/rails-simple-benches.git
1 actionpack/examples
@@ -0,0 +1 @@
+Subproject commit 4e1327f06da6df1a1981d69c04e8d6463b38a4c1
View
132 actionpack/examples/minimal.rb
@@ -1,132 +0,0 @@
-# Pass NEW=1 to run with the new Base
-ENV['RAILS_ENV'] ||= 'production'
-ENV['NO_RELOAD'] ||= '1'
-
-$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../lib"
-$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../../activesupport/lib"
-require 'action_controller'
-require 'action_controller/new_base' if ENV['NEW']
-require 'action_view'
-require 'benchmark'
-
-class Runner
- def initialize(app, output)
- @app, @output = app, output
- end
-
- def puts(*)
- super if @output
- end
-
- def call(env)
- env['n'].to_i.times { @app.call(env) }
- @app.call(env).tap { |response| report(env, response) }
- end
-
- def report(env, response)
- return unless ENV["DEBUG"]
- out = env['rack.errors']
- out.puts response[0], response[1].to_yaml, '---'
- response[2].each { |part| out.puts part }
- out.puts '---'
- end
-
- def self.puts(*)
- super if @output
- end
-
- def self.run(app, n, label, output = true)
- @output = output
- puts label, '=' * label.size if label
- env = Rack::MockRequest.env_for("/").merge('n' => n, 'rack.input' => StringIO.new(''), 'rack.errors' => $stdout)
- t = Benchmark.realtime { new(app, output).call(env) }
- puts "%d ms / %d req = %.1f usec/req" % [10**3 * t, n, 10**6 * t / n]
- puts
- end
-end
-
-
-N = (ENV['N'] || 1000).to_i
-
-module ActionController::Rails2Compatibility
- instance_methods.each do |name|
- remove_method name
- end
-end
-
-class BasePostController < ActionController::Base
- append_view_path "#{File.dirname(__FILE__)}/views"
-
- def overhead
- self.response_body = ''
- end
-
- def index
- render :text => ''
- end
-
- def partial
- render :partial => "/partial"
- end
-
- def many_partials
- render :partial => "/many_partials"
- end
-
- def hundred_partials
- render :partial => "/hundred_partials"
- end
-
- def partial_collection
- render :partial => "/collection", :collection => [1,2,3,4,5,6,7,8,9,10]
- end
-
- def large_collection
- render :partial => "/collection", :collection => (1...1000).to_a
- end
-
- def show_template
- render :template => "template"
- end
-end
-
-OK = [200, {}, []]
-MetalPostController = lambda { OK }
-
-class HttpPostController < ActionController::Metal
- def index
- self.response_body = ''
- end
-end
-
-ActionController::Base.use_accept_header = false
-
-unless ENV["PROFILE"]
- Runner.run(BasePostController.action(:overhead), 1, 'overhead', false)
- Runner.run(BasePostController.action(:index), 1, 'index', false)
- Runner.run(BasePostController.action(:show_template), 1, 'template', false)
- Runner.run(BasePostController.action(:partial), 1, 'partial', false)
- Runner.run(BasePostController.action(:many_partials), 1, 'many_partials', false)
- Runner.run(BasePostController.action(:partial_collection), 1, 'collection', false)
- Runner.run(BasePostController.action(:hundred_partials), 1, 'hundred_partials', false)
- Runner.run(BasePostController.action(:large_collection), 1, 'large_collection', false)
-
- (ENV["M"] || 1).to_i.times do
- Runner.run(BasePostController.action(:overhead), N, 'overhead')
- Runner.run(BasePostController.action(:index), N, 'index')
- Runner.run(BasePostController.action(:show_template), N, 'template')
- Runner.run(BasePostController.action(:partial), N, 'partial')
- Runner.run(BasePostController.action(:many_partials), N, 'many_partials')
- Runner.run(BasePostController.action(:partial_collection), N, 'collection')
- Runner.run(BasePostController.action(:hundred_partials), N, 'hundred_partials')
- Runner.run(BasePostController.action(:large_collection), N, 'large_collection')
- end
-else
- Runner.run(BasePostController.action(ENV["PROFILE"].to_sym), 1, ENV["PROFILE"])
- require "ruby-prof"
- RubyProf.start
- Runner.run(BasePostController.action(ENV["PROFILE"].to_sym), N, ENV["PROFILE"])
- result = RubyProf.stop
- printer = RubyProf::CallStackPrinter.new(result)
- printer.print(File.open("output.html", "w"))
-end
View
50 actionpack/examples/very_simple.rb
@@ -1,50 +0,0 @@
-$:.push "rails/activesupport/lib"
-$:.push "rails/actionpack/lib"
-
-require "action_controller"
-
-class Kaigi < ActionController::Metal
- include AbstractController::Callbacks
- include ActionController::RackConvenience
- include ActionController::RenderingController
- include ActionController::Layouts
- include ActionView::Context
-
- before_filter :set_name
- append_view_path "views"
-
- def view_context
- self
- end
-
- def controller
- self
- end
-
- DEFAULT_LAYOUT = Object.new.tap {|l| def l.render(*) yield end }
-
- def render_template(template, layout = DEFAULT_LAYOUT, options = {}, partial = false)
- ret = template.render(self, {})
- layout.render(self, {}) { ret }
- end
-
- def index
- render :template => "template"
- end
-
- def alt
- render :template => "template", :layout => "alt"
- end
-
- private
- def set_name
- @name = params[:name]
- end
-end
-
-app = Rack::Builder.new do
- map("/kaigi") { run Kaigi.action(:index) }
- map("/kaigi/alt") { run Kaigi.action(:alt) }
-end.to_app
-
-Rack::Handler::Mongrel.run app, :Port => 3000
View
1 actionpack/examples/views/_collection.erb
@@ -1 +0,0 @@
-<%= collection %>
View
1 actionpack/examples/views/_hello.erb
@@ -1 +0,0 @@
-Hello
View
12 actionpack/examples/views/_hundred_partials.erb
@@ -1,12 +0,0 @@
-<% 10.times do %>
- <%= render :partial => '/hello' %>
- <%= render :partial => '/hello' %>
- <%= render :partial => '/hello' %>
- <%= render :partial => '/hello' %>
- <%= render :partial => '/hello' %>
- <%= render :partial => '/hello' %>
- <%= render :partial => '/hello' %>
- <%= render :partial => '/hello' %>
- <%= render :partial => '/hello' %>
- <%= render :partial => '/hello' %>
-<% end %>
View
10 actionpack/examples/views/_many_partials.erb
@@ -1,10 +0,0 @@
-<%= render :partial => '/hello' %>
-<%= render :partial => '/hello' %>
-<%= render :partial => '/hello' %>
-<%= render :partial => '/hello' %>
-<%= render :partial => '/hello' %>
-<%= render :partial => '/hello' %>
-<%= render :partial => '/hello' %>
-<%= render :partial => '/hello' %>
-<%= render :partial => '/hello' %>
-<%= render :partial => '/hello' %>
View
10 actionpack/examples/views/_partial.erb
@@ -1,10 +0,0 @@
-<%= "Hello" %>
-<%= "Hello" %>
-<%= "Hello" %>
-<%= "Hello" %>
-<%= "Hello" %>
-<%= "Hello" %>
-<%= "Hello" %>
-<%= "Hello" %>
-<%= "Hello" %>
-<%= "Hello" %>
View
1 actionpack/examples/views/layouts/alt.html.erb
@@ -1 +0,0 @@
-+ <%= yield %> +
View
1 actionpack/examples/views/layouts/kaigi.html.erb
@@ -1 +0,0 @@
-Hello <%= yield %> Goodbye
View
1 actionpack/examples/views/template.html.erb
@@ -1 +0,0 @@
-Hello

0 comments on commit 27e8807

Please sign in to comment.