aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails/rubyprof_ext.rb
diff options
context:
space:
mode:
authorEmilio Tagua <miloops@gmail.com>2009-10-02 10:52:55 -0300
committerEmilio Tagua <miloops@gmail.com>2009-10-02 10:52:55 -0300
commit29457a21c0d4451f5dbc66f72b8256baa02a55bd (patch)
tree50aebb7b31b990b805871e816b852151df2833a1 /railties/lib/rails/rubyprof_ext.rb
parent5f9540e4830ace3459b4018006573bad7fb30b53 (diff)
parent420004e030e96f2ace6e27fd622c90ee9e986677 (diff)
downloadrails-29457a21c0d4451f5dbc66f72b8256baa02a55bd.tar.gz
rails-29457a21c0d4451f5dbc66f72b8256baa02a55bd.tar.bz2
rails-29457a21c0d4451f5dbc66f72b8256baa02a55bd.zip
Merge commit 'rails/master'
Diffstat (limited to 'railties/lib/rails/rubyprof_ext.rb')
-rw-r--r--railties/lib/rails/rubyprof_ext.rb35
1 files changed, 35 insertions, 0 deletions
diff --git a/railties/lib/rails/rubyprof_ext.rb b/railties/lib/rails/rubyprof_ext.rb
new file mode 100644
index 0000000000..f6e90357ce
--- /dev/null
+++ b/railties/lib/rails/rubyprof_ext.rb
@@ -0,0 +1,35 @@
+require 'prof'
+
+module Prof #:nodoc:
+ # Adapted from Shugo Maeda's unprof.rb
+ def self.print_profile(results, io = $stderr)
+ total = results.detect { |i|
+ i.method_class.nil? && i.method_id == :"#toplevel"
+ }.total_time
+ total = 0.001 if total < 0.001
+
+ io.puts " %% cumulative self self total"
+ io.puts " time seconds seconds calls ms/call ms/call name"
+
+ sum = 0.0
+ for r in results
+ sum += r.self_time
+
+ name = if r.method_class.nil?
+ r.method_id.to_s
+ elsif r.method_class.is_a?(Class)
+ "#{r.method_class}##{r.method_id}"
+ else
+ "#{r.method_class}.#{r.method_id}"
+ end
+ io.printf "%6.2f %8.3f %8.3f %8d %8.2f %8.2f %s\n",
+ r.self_time / total * 100,
+ sum,
+ r.self_time,
+ r.count,
+ r.self_time * 1000 / r.count,
+ r.total_time * 1000 / r.count,
+ name
+ end
+ end
+end