script/performance/profiler compatibility with the new ruby-prof, including an option to choose the results printer. Closes #5679.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4673 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
8a88513a99
commit
21cf3c6596
@ -1,5 +1,7 @@
|
||||
*SVN*
|
||||
|
||||
* script/performance/profiler compatibility with the new ruby-prof, including an option to choose the results printer. #5679 [shugo@ruby-lang.org]
|
||||
|
||||
* Fixed the failsafe response so it uses either the current recognized controller or ApplicationController. [Rick Olson]
|
||||
|
||||
* Make sure script/reaper only reaps dispatcher pids by default, and not the spawner's pid. [Jamis Buck]
|
||||
|
@ -1,5 +1,5 @@
|
||||
if ARGV.empty?
|
||||
$stderr.puts "Usage: ./script/performance/profiler 'Person.expensive_method(10)' [times]"
|
||||
$stderr.puts "Usage: ./script/performance/profiler 'Person.expensive_method(10)' [times] [flat|graph|graph_html]"
|
||||
exit(1)
|
||||
end
|
||||
|
||||
@ -16,14 +16,30 @@
|
||||
|
||||
# Use the ruby-prof extension if available. Fall back to stdlib profiler.
|
||||
begin
|
||||
require 'prof'
|
||||
$stderr.puts 'Using the ruby-prof extension.'
|
||||
Prof.clock_mode = Prof::GETTIMEOFDAY
|
||||
Prof.start
|
||||
profile_me
|
||||
results = Prof.stop
|
||||
require 'rubyprof_ext'
|
||||
Prof.print_profile(results, $stderr)
|
||||
begin
|
||||
require "ruby-prof"
|
||||
$stderr.puts 'Using the ruby-prof extension.'
|
||||
RubyProf.clock_mode = RubyProf::WALL_TIME
|
||||
RubyProf.start
|
||||
profile_me
|
||||
results = RubyProf.stop
|
||||
if ARGV[2]
|
||||
printer_class = RubyProf.const_get((ARGV[2] + "_printer").classify)
|
||||
else
|
||||
printer_class = RubyProf::FlatPrinter
|
||||
end
|
||||
printer = printer_class.new(results)
|
||||
printer.print($stderr, 0)
|
||||
rescue LoadError
|
||||
require "prof"
|
||||
$stderr.puts 'Using the old ruby-prof extension.'
|
||||
Prof.clock_mode = Prof::GETTIMEOFDAY
|
||||
Prof.start
|
||||
profile_me
|
||||
results = Prof.stop
|
||||
require 'rubyprof_ext'
|
||||
Prof.print_profile(results, $stderr)
|
||||
end
|
||||
rescue LoadError
|
||||
require 'profiler'
|
||||
$stderr.puts 'Using the standard Ruby profiler.'
|
||||
|
Loading…
Reference in New Issue
Block a user