diff options
Diffstat (limited to 'tools/profile')
-rwxr-xr-x | tools/profile | 74 |
1 files changed, 37 insertions, 37 deletions
diff --git a/tools/profile b/tools/profile index 191e73b3dd..124ed0f4be 100755 --- a/tools/profile +++ b/tools/profile @@ -4,8 +4,8 @@ # # Example: # tools/profile activesupport/lib/active_support.rb [ruby-prof mode] [ruby-prof printer] -ENV['NO_RELOAD'] ||= '1' -ENV['RAILS_ENV'] ||= 'development' +ENV["NO_RELOAD"] ||= "1" +ENV["RAILS_ENV"] ||= "development" module CodeTools class Profiler @@ -15,7 +15,7 @@ module CodeTools def initialize(path, mode=nil) assert_ruby_file_exists(path) @path, @mode = path, mode - require 'benchmark' + require "benchmark" end def profile_requires @@ -23,7 +23,7 @@ module CodeTools before_rss = `ps -o rss= -p #{Process.pid}`.to_i if mode - require 'ruby-prof' + require "ruby-prof" RubyProf.measure_mode = RubyProf.const_get(mode.upcase) RubyProf.start else @@ -43,13 +43,13 @@ module CodeTools elsif RubyProf.const_defined?(:CallStackPrinter) filename = "#{File.basename(path, '.rb')}.#{mode}.html" puts "RubyProf outputting to #{filename}" - File.open(filename, 'w') do |out| + File.open(filename, "w") do |out| RubyProf::CallStackPrinter.new(results).print(out) end else filename = "#{File.basename(path, '.rb')}.#{mode}.callgrind" puts "RubyProf outputting to #{filename}" - File.open(filename, 'w') do |out| + File.open(filename, "w") do |out| RubyProf::CallTreePrinter.new(results).print(out) end end @@ -57,7 +57,7 @@ module CodeTools RequireProfiler.stats.each do |file, depth, sec| if sec - puts "%8.1f ms %s%s" % [sec * 1000, ' ' * depth, file] + puts "%8.1f ms %s%s" % [sec * 1000, " " * depth, file] else puts "#{' ' * (13 + depth)}#{file}" end @@ -67,51 +67,51 @@ module CodeTools private - def assert_ruby_file_exists(path) - fail Error.new("No such file") unless File.exist?(path) - fail Error.new("#{path} is a directory") if File.directory?(path) - ruby_extension = File.extname(path) == '.rb' - ruby_executable = File.open(path, 'rb') {|f| f.readline } =~ [/\A#!.*ruby/] - fail Error.new("Not a ruby file") unless ruby_extension or ruby_executable - end + def assert_ruby_file_exists(path) + fail Error.new("No such file") unless File.exist?(path) + fail Error.new("#{path} is a directory") if File.directory?(path) + ruby_extension = File.extname(path) == ".rb" + ruby_executable = File.open(path, "rb") { |f| f.readline } =~ [/\A#!.*ruby/] + fail Error.new("Not a ruby file") unless ruby_extension or ruby_executable + end - module RequireProfiler - private - def require(file, *args) RequireProfiler.profile(file) { super } end - def load(file, *args) RequireProfiler.profile(file) { super } end + module RequireProfiler + private + def require(file, *args) RequireProfiler.profile(file) { super } end + def load(file, *args) RequireProfiler.profile(file) { super } end - @depth, @stats = 0, [] - class << self - attr_accessor :depth - attr_accessor :stats + @depth, @stats = 0, [] + class << self + attr_accessor :depth + attr_accessor :stats - def profile(file) - stats << [file, depth] - self.depth += 1 - result = nil - elapsed = Benchmark.realtime { result = yield } - self.depth -= 1 - stats.pop if stats.last.first == file - stats << [file, depth, elapsed] if result - result - end + def profile(file) + stats << [file, depth] + self.depth += 1 + result = nil + elapsed = Benchmark.realtime { result = yield } + self.depth -= 1 + stats.pop if stats.last.first == file + stats << [file, depth, elapsed] if result + result + end + end end - end end end # ruby-prof printer name causes the third arg to be sent :classify # which is probably overkill if you already know the name of the ruby-prof # printer you want to use, e.g. Graph begin - require 'active_support/inflector' - require 'active_support/core_ext/string/inflections' + require "active_support/inflector" + require "active_support/core_ext/string/inflections" rescue LoadError STDERR.puts $!.message class String # File activesupport/lib/active_support/inflector/methods.rb, line 150 def classify # strip out any leading schema name - camelize(self.sub(/.*\./, '')) + camelize(sub(/.*\./, "")) end # File activesupport/lib/active_support/inflector/methods.rb, line 68 def camelize(uppercase_first_letter = true) @@ -121,7 +121,7 @@ rescue LoadError else string = string.sub(/^(?:(?=\b|[A-Z_])|\w)/) { |match| match.downcase } end - string.gsub(/(?:_|(\/))([a-z\d]*)/) { "#{$1}#{$2.capitalize}" }.gsub('/', '::') + string.gsub(/(?:_|(\/))([a-z\d]*)/) { "#{$1}#{$2.capitalize}" }.gsub("/", "::") end end end |