aboutsummaryrefslogtreecommitdiffstats
path: root/tools/profile
diff options
context:
space:
mode:
authorXavier Noria <fxn@hashref.com>2010-06-28 00:12:15 +0200
committerXavier Noria <fxn@hashref.com>2010-06-28 00:12:15 +0200
commit4329f8133fee8e4f3e558787f67de59f0c4a4dd1 (patch)
tree346ef7340d8348e50d119ca749a16c1654c20a08 /tools/profile
parentc37f7d66e49ffe5ac2115cc30e5529fd1c2924a8 (diff)
parentebee77a28a7267d5f23a28ba23c1eb88a2d7d527 (diff)
downloadrails-4329f8133fee8e4f3e558787f67de59f0c4a4dd1.tar.gz
rails-4329f8133fee8e4f3e558787f67de59f0c4a4dd1.tar.bz2
rails-4329f8133fee8e4f3e558787f67de59f0c4a4dd1.zip
Merge remote branch 'rails/master'
Diffstat (limited to 'tools/profile')
-rwxr-xr-xtools/profile8
1 files changed, 6 insertions, 2 deletions
diff --git a/tools/profile b/tools/profile
index f02f1b5057..a6e3b41900 100755
--- a/tools/profile
+++ b/tools/profile
@@ -39,6 +39,7 @@ end
GC.start
before = GC.allocated_size
+before_gctime, before_gcruns = GC.time, GC.collections
before_rss = `ps -o rss= -p #{Process.pid}`.to_i
before_live_objects = ObjectSpace.live_objects
@@ -54,6 +55,7 @@ end
elapsed = Benchmark.realtime { require path }
results = RubyProf.stop if mode
+after_gctime, after_gcruns = GC.time, GC.collections
GC.start
after_live_objects = ObjectSpace.live_objects
after_rss = `ps -o rss= -p #{Process.pid}`.to_i
@@ -61,7 +63,9 @@ after = GC.allocated_size
usage = (after - before) / 1024.0
if mode
- if RubyProf.const_defined?(:CallStackPrinter)
+ if printer = ARGV.shift
+ RubyProf.const_get("#{printer.to_s.classify}Printer").new(results).print($stdout)
+ elsif RubyProf.const_defined?(:CallStackPrinter)
File.open("#{File.basename(path, '.rb')}.#{mode}.html", 'w') do |out|
RubyProf::CallStackPrinter.new(results).print(out)
end
@@ -79,4 +83,4 @@ RequireProfiler.stats.each do |file, depth, sec, bytes, objects|
puts "#{' ' * (42 + depth)}#{file}"
end
end
-puts "%10.2f KB %10d obj %8.1f ms %d KB RSS" % [usage, after_live_objects - before_live_objects, elapsed * 1000, after_rss - before_rss]
+puts "%10.2f KB %10d obj %8.1f ms %d KB RSS %8.1f ms GC time %d GC runs" % [usage, after_live_objects - before_live_objects, elapsed * 1000, after_rss - before_rss, (after_gctime - before_gctime) / 1000.0, after_gcruns - before_gcruns]