mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Added script/benchmarker to easily benchmark one or more statement a number of times from within the environment. Added script/profiler to easily profile a single statement from within the environment
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1166 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
75b8ac80d9
commit
624d5bb176
6 changed files with 46 additions and 2 deletions
|
@ -1,5 +1,19 @@
|
|||
*SVN*
|
||||
|
||||
* Added script/benchmarker to easily benchmark one or more statement a number of times from within the environment. Examples:
|
||||
|
||||
# runs the one statement 10 times
|
||||
script/benchmarker 10 'Person.expensive_method(10)'
|
||||
|
||||
# pits the two statements against each other with 50 runs each
|
||||
script/benchmarker 50 'Person.expensive_method(10)' 'Person.cheap_method(10)'
|
||||
|
||||
|
||||
* Added script/profiler to easily profile a single statement from within the environment. Examples:
|
||||
|
||||
script/profiler 'Person.expensive_method(10)'
|
||||
script/profiler 'Person.expensive_method(10)' 10 # runs the statement 10 times
|
||||
|
||||
* Added Rake target clear_logs that'll truncate all the *.log files in log/ to zero #1079 [Lucas Carlson]
|
||||
|
||||
* Added lazy typing for generate, such that ./script/generate cn == ./script/generate controller and the likes #1051 [k@v2studio.com]
|
||||
|
|
|
@ -26,7 +26,7 @@ TEST_DIRS = %w( fixtures unit functional mocks mocks/development mocks/test )
|
|||
|
||||
LOG_FILES = %w( server.log development.log test.log production.log )
|
||||
HTML_FILES = %w( 404.html 500.html index.html favicon.ico javascripts/prototype.js )
|
||||
BIN_FILES = %w( generate destroy breakpointer console server update runner )
|
||||
BIN_FILES = %w( generate destroy breakpointer console console_sandbox server update runner profiler benchmarker )
|
||||
|
||||
VENDOR_LIBS = %w( actionpack activerecord actionmailer activesupport actionwebservice railties )
|
||||
|
||||
|
|
16
railties/bin/benchmarker
Normal file
16
railties/bin/benchmarker
Normal file
|
@ -0,0 +1,16 @@
|
|||
#!/usr/local/bin/ruby
|
||||
|
||||
if ARGV.empty?
|
||||
puts "Usage: benchmarker times 'Person.expensive_way' 'Person.another_expensive_way' ..."
|
||||
exit
|
||||
end
|
||||
|
||||
require File.dirname(__FILE__) + '/../config/environment'
|
||||
require 'benchmark'
|
||||
include Benchmark
|
||||
|
||||
bm(6) do |x|
|
||||
ARGV[1..-1].each_with_index do |expression, idx|
|
||||
x.report("##{idx + 1}") { ARGV[0].to_i.times { eval(expression) } }
|
||||
end
|
||||
end
|
14
railties/bin/profiler
Normal file
14
railties/bin/profiler
Normal file
|
@ -0,0 +1,14 @@
|
|||
#!/usr/local/bin/ruby
|
||||
|
||||
if ARGV.empty?
|
||||
puts "Usage: profiler 'Person.expensive_method(10)' [times]"
|
||||
exit
|
||||
end
|
||||
|
||||
require File.dirname(__FILE__) + '/../config/environment'
|
||||
require "profiler"
|
||||
|
||||
Profiler__::start_profile
|
||||
(ARGV[1] || 1).to_i.times { eval(ARGV.first) }
|
||||
Profiler__::stop_profile
|
||||
Profiler__::print_profile($stdout)
|
|
@ -43,7 +43,7 @@ class AppGenerator < Rails::Generator::Base
|
|||
m.file "environments/test.rb", "config/environments/test.rb"
|
||||
|
||||
# Scripts
|
||||
%w(console console_sandbox.rb destroy generate server runner).each do |file|
|
||||
%w(console console_sandbox destroy generate server runner benchmarker profiler).each do |file|
|
||||
m.file "bin/#{file}", "script/#{file}", script_options
|
||||
end
|
||||
if options[:gem]
|
||||
|
|
Loading…
Reference in a new issue