module RubyProf - ruby-prof

# 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

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 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

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::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

measure_mode=value → void click to toggle source

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

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(options = {}, &block) click to toggle source

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

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(measure_mode: measure_mode, exclude_threads: 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