module RubyProf
The call info visitor class does a depth-first traversal across a list of method infos. At each call_info node, the visitor executes the block provided in the visit method. The block is passed two parameters, the event and the call_info instance. Event will be either :enter or :exit.
visitor = RubyProf::CallInfoVisitor.new(result.threads.first.top_call_infos) method_names = Array.new visitor.visit do |call_info, event| method_names << call_info.target.full_name if event == :enter end puts method_names
These methods are here for backwards compatability with previous RubyProf releases
Constants
- VERSION
Public Class Methods
Measurements
# File lib/ruby-prof/compatibility.rb, line 5 def self.cpu_frequency Measure::CpuTime.frequency end
Returns threads ruby-prof should exclude from profiling
# File lib/ruby-prof/compatibility.rb, line 87 def self.exclude_threads @exclude_threads ||= Array.new end
Specifies what threads ruby-prof should exclude from profiling
# File lib/ruby-prof/compatibility.rb, line 96 def self.exclude_threads=(value) @exclude_threads = value end
Checks if the user specified the clock mode via the RUBY_PROF_MEASURE_MODE environment variable
# File lib/ruby-prof.rb, line 35 def self.figure_measure_mode case ENV["RUBY_PROF_MEASURE_MODE"] when "wall", "wall_time" RubyProf.measure_mode = RubyProf::WALL_TIME when "cpu", "cpu_time" RubyProf.measure_mode = RubyProf::CPU_TIME when "allocations" RubyProf.measure_mode = RubyProf::ALLOCATIONS when "memory" RubyProf.measure_mode = RubyProf::MEMORY when "process", "process_time" RubyProf.measure_mode = RubyProf::PROCESS_TIME when "gc_time" RubyProf.measure_mode = RubyProf::GC_TIME when "gc_runs" RubyProf.measure_mode = RubyProf::GC_RUNS else # the default is defined in the measure_mode reader end end
# File lib/ruby-prof/compatibility.rb, line 9 def self.measure_allocations Measure::Allocations.measure end
# File lib/ruby-prof/compatibility.rb, line 13 def self.measure_cpu_time Measure::CpuTime.measure end
# File lib/ruby-prof/compatibility.rb, line 17 def self.measure_gc_runs Measure::GcRuns.measure end
# File lib/ruby-prof/compatibility.rb, line 21 def self.measure_gc_time Measure::GcTime.measure end
# File lib/ruby-prof/compatibility.rb, line 25 def self.measure_memory Measure::Memory.measure end
Returns what ruby-prof is measuring. Valid values include:
*RubyProf::WALL_TIME - Measure wall time using gettimeofday on Linx and GetLocalTime on Windows. This is default. *RubyProf::PROCESS_TIME - Measure process time. It is implemented using the clock functions in the C Runtime library. *RubyProf::CPU_TIME - Measure time using the CPU clock counter. This mode is only supported on Pentium or PowerPC platforms. *RubyProf::ALLOCATIONS - Measure object allocations. This requires a patched Ruby interpreter. *RubyProf::MEMORY - Measure memory size. This requires a patched Ruby interpreter. *RubyProf::GC_RUNS - Measure number of garbage collections. This requires a patched Ruby interpreter. *RubyProf::GC_TIME - Measure time spent doing garbage collection. This requires a patched Ruby interpreter.*/
# File lib/ruby-prof/compatibility.rb, line 50 def self.measure_mode @measure_mode ||= RubyProf::WALL_TIME end
Specifies what ruby-prof should measure. Valid values include:
*RubyProf::WALL_TIME - Measure wall time using gettimeofday on Linx and GetLocalTime on Windows. This is default. *RubyProf::PROCESS_TIME - Measure process time. It is implemented using the clock functions in the C Runtime library. *RubyProf::CPU_TIME - Measure time using the CPU clock counter. This mode is only supported on Pentium or PowerPC platforms. *RubyProf::ALLOCATIONS - Measure object allocations. This requires a patched Ruby interpreter. *RubyProf::MEMORY - Measure memory size. This requires a patched Ruby interpreter. *RubyProf::GC_RUNS - Measure number of garbage collections. This requires a patched Ruby interpreter. *RubyProf::GC_TIME - Measure time spent doing garbage collection. This requires a patched Ruby interpreter.*/
# File lib/ruby-prof/compatibility.rb, line 66 def self.measure_mode=(value) @measure_mode = value end
# File lib/ruby-prof/compatibility.rb, line 70 def self.measure_mode_string case measure_mode when WALL_TIME then "wall_time" when CPU_TIME then "cpu_time" when PROCESS_TIME then "process_time_time" when ALLOCATIONS then "allocations" when MEMORY then "memory" when GC_TIME then "gc_time" when GC_RUNS then "gc_runs" end end
# File lib/ruby-prof/compatibility.rb, line 29 def self.measure_process_time Measure::ProcessTime.measure end
# File lib/ruby-prof/compatibility.rb, line 33 def self.measure_wall_time Measure::WallTime.measure end
# File lib/ruby-prof/compatibility.rb, line 113 def self.pause ensure_running! disable_gc_stats_if_needed @profile.pause end
Profile a block
# File lib/ruby-prof/compatibility.rb, line 142 def self.profile(options = {}, &block) ensure_not_running! gc_stat_was_enabled = enable_gc_stats_if_needed options = { measure_mode: measure_mode, exclude_threads: exclude_threads }.merge!(options) result = Profile.profile(options, &block) disable_gc_stats_if_needed(gc_stat_was_enabled) result end
# File lib/ruby-prof/compatibility.rb, line 127 def self.resume ensure_running! enable_gc_stats_if_needed @profile.resume end
# File lib/ruby-prof/compatibility.rb, line 119 def self.running? if defined?(@profile) and @profile @profile.running? else false end end
# File lib/ruby-prof/compatibility.rb, line 106 def self.start ensure_not_running! @profile = Profile.new(measure_mode: measure_mode, exclude_threads: exclude_threads) enable_gc_stats_if_needed @profile.start end
Profiling
# File lib/ruby-prof/compatibility.rb, line 101 def self.start_script(script) start load script end
# File lib/ruby-prof/compatibility.rb, line 133 def self.stop ensure_running! result = @profile.stop disable_gc_stats_if_needed @profile = nil result end