module RubyProf::Profile::LegacyMethodElimination
Public Instance Methods
eliminate_methods!(matchers)
click to toggle source
eliminate some calls from the graph by merging the information into callers. matchers can be a list of strings or regular expressions or the name of a file containing regexps.
# File lib/ruby-prof/profile/legacy_method_elimination.rb, line 6 def eliminate_methods!(matchers) RubyProf.deprecation_warning( "Method 'eliminate_methods!' is dprecated", "Please call 'exclude_methods!' before starting the profile run instead." ) matchers = read_regexps_from_file(matchers) if matchers.is_a?(String) eliminated = [] threads.each do |thread| matchers.each{ |matcher| eliminated.concat(eliminate_methods(thread.methods, matcher)) } end eliminated end
Private Instance Methods
eliminate_methods(methods, matcher)
click to toggle source
eliminate methods matching matcher
# File lib/ruby-prof/profile/legacy_method_elimination.rb, line 31 def eliminate_methods(methods, matcher) eliminated = [] i = 0 while i < methods.size method_info = methods[i] method_name = method_info.full_name if matcher === method_name raise "can't eliminate root method" if method_info.root? eliminated << methods.delete_at(i) method_info.eliminate! else i += 1 end end eliminated end
read_regexps_from_file(file_name)
click to toggle source
read regexps from file
# File lib/ruby-prof/profile/legacy_method_elimination.rb, line 22 def read_regexps_from_file(file_name) matchers = [] File.open(file_name).each_line do |l| next if (l =~ /^(#.*|\s*)$/) # emtpy lines and lines starting with # matchers << Regexp.new(l.strip) end end