module RubyProf

The call info visitor class does a depth-first traversal across a thread's call stack. 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)

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

cpu_frequency() click to toggle source

Measurements

# File lib/ruby-prof/compatibility.rb, line 5
def self.cpu_frequency
  Measure::CpuTime.frequency
end
exclude_threads → exclude_threads click to toggle source

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
exclude_threads= → void click to toggle source

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
figure_measure_mode() click to toggle source

Checks if the user specified the clock mode via the RUBY_PROF_MEASURE_MODE environment variable

# File lib/ruby-prof.rb, line 34
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
measure_allocations() click to toggle source
# File lib/ruby-prof/compatibility.rb, line 9
def self.measure_allocations
  Measure::Allocations.measure
end
measure_cpu_time() click to toggle source
# File lib/ruby-prof/compatibility.rb, line 13
def self.measure_cpu_time
  Measure::CpuTime.measure
end
measure_gc_runs() click to toggle source
# File lib/ruby-prof/compatibility.rb, line 17
def self.measure_gc_runs
  Measure::GcRuns.measure
end
measure_gc_time() click to toggle source
# File lib/ruby-prof/compatibility.rb, line 21
def self.measure_gc_time
  Measure::GcTime.measure
end
measure_memory() click to toggle source
# File lib/ruby-prof/compatibility.rb, line 25
def self.measure_memory
  Measure::Memory.measure
end
measure_mode → measure_mode click to toggle source

Returns what ruby-prof is measuring. Valid values include:

*RubyProf::PROCESS_TIME - Measure process time. This is default. It is implemented using the clock functions in the C Runtime library. *RubyProf::WALL_TIME - Measure wall time using gettimeofday on Linx and GetLocalTime on Windows *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
measure_mode=value → void click to toggle source

Specifies what ruby-prof should measure. Valid values include:

*RubyProf::PROCESS_TIME - Measure process time. This is default. It is implemented using the clock functions in the C Runtime library. *RubyProf::WALL_TIME - Measure wall time using gettimeofday on Linx and GetLocalTime on Windows *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
measure_mode_string() click to toggle source
# 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
measure_process_time() click to toggle source
# File lib/ruby-prof/compatibility.rb, line 29
def self.measure_process_time
  Measure::ProcessTime.measure
end
measure_wall_time() click to toggle source
# File lib/ruby-prof/compatibility.rb, line 33
def self.measure_wall_time
  Measure::WallTime.measure
end
pause() click to toggle source
# File lib/ruby-prof/compatibility.rb, line 113
def self.pause
  ensure_running!
  disable_gc_stats_if_needed
  @profile.pause
end
profile(&block) click to toggle source

Profile a block

# File lib/ruby-prof/compatibility.rb, line 142
def self.profile(&block)
  ensure_not_running!
  gc_stat_was_enabled = enable_gc_stats_if_needed
  res = Profile.profile(self.measure_mode, self.exclude_threads, &block)
  disable_gc_stats_if_needed(gc_stat_was_enabled)
  res
end
resume() click to toggle source
# File lib/ruby-prof/compatibility.rb, line 127
def self.resume
  ensure_running!
  enable_gc_stats_if_needed
  @profile.resume
end
running?() click to toggle source
# File lib/ruby-prof/compatibility.rb, line 119
def self.running?
  if defined?(@profile) and @profile
    @profile.running?
  else
    false
  end
end
start() click to toggle source
# File lib/ruby-prof/compatibility.rb, line 106
def self.start
  ensure_not_running!
  @profile = Profile.new(self.measure_mode, self.exclude_threads)
  enable_gc_stats_if_needed
  @profile.start
end
start_script(script) click to toggle source

Profiling

# File lib/ruby-prof/compatibility.rb, line 101
def self.start_script(script)
  start
  load script
end
stop() click to toggle source
# 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