Added script/benchmarker to easily benchmark one or more statement a number of...

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
上级 75b8ac80
*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 )
......
#!/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
\ No newline at end of file
#!/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)
\ No newline at end of file
......@@ -43,7 +43,7 @@ def manifest
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]
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册