Permalink
Browse files

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
  • Loading branch information...
dhh committed Apr 14, 2005
1 parent 75b8ac8 commit 624d5bb176de5212bea43a1c57a95f48676c6e9f
View
@@ -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]
View
@@ -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 )
View
@@ -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
File renamed without changes.
View
@@ -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 @@ 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]

0 comments on commit 624d5bb

Please sign in to comment.