Module: RubyProf
- Defined in:
- lib/ruby-prof/compatibility.rb,
lib/ruby-prof.rb,
lib/ruby-prof/task.rb,
lib/ruby-prof/thread.rb,
lib/ruby-prof/profile.rb,
lib/ruby-prof/version.rb,
lib/ruby-prof/call_info.rb,
lib/ruby-prof/method_info.rb,
lib/ruby-prof/call_info_visitor.rb,
lib/ruby-prof/aggregate_call_info.rb,
lib/ruby-prof/printers/dot_printer.rb,
lib/ruby-prof/printers/flat_printer.rb,
lib/ruby-prof/printers/graph_printer.rb,
lib/ruby-prof/printers/multi_printer.rb,
lib/ruby-prof/printers/abstract_printer.rb,
lib/ruby-prof/printers/call_info_printer.rb,
lib/ruby-prof/printers/call_tree_printer.rb,
lib/ruby-prof/printers/call_stack_printer.rb,
lib/ruby-prof/printers/graph_html_printer.rb,
lib/ruby-prof/printers/flat_printer_with_line_numbers.rb,
ext/ruby_prof/ruby_prof.c
Overview
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
Defined Under Namespace
Modules: Measure Classes: AbstractPrinter, AggregateCallInfo, CallInfo, CallInfoPrinter, CallInfoVisitor, CallStackPrinter, CallTreePrinter, DotPrinter, FlatPrinter, FlatPrinterWithLineNumbers, GraphHtmlPrinter, GraphPrinter, MethodInfo, MultiPrinter, Profile, ProfileTask, Thread
Constant Summary collapse
- VERSION =
"0.15.7"
- MEMORY =
INT2NUM(MEASURE_MEMORY)
- MEMORY_ENABLED =
MEASURE_MEMORY_ENABLED
- GC_RUNS =
INT2NUM(MEASURE_GC_RUNS)
- GC_RUNS_ENABLED =
MEASURE_GC_RUNS_ENABLED
- GC_TIME =
INT2NUM(MEASURE_GC_TIME)
- GC_TIME_ENABLED =
MEASURE_GC_TIME_ENABLED
- CPU_TIME =
INT2NUM(MEASURE_CPU_TIME)
- CPU_TIME_ENABLED =
Qtrue
- WALL_TIME =
INT2NUM(MEASURE_WALL_TIME)
- WALL_TIME_ENABLED =
Qtrue
- ALLOCATIONS =
INT2NUM(MEASURE_ALLOCATIONS)
- ALLOCATIONS_ENABLED =
MEASURE_ALLOCATIONS_ENABLED
- CLOCKS_PER_SEC =
INT2NUM(CLOCKS_PER_SEC)
- PROCESS_TIME =
INT2NUM(MEASURE_PROCESS_TIME)
- PROCESS_TIME_ENABLED =
Qtrue
Class Method Summary collapse
-
.cpu_frequency ⇒ Object
Measurements.
-
.exclude_threads ⇒ Object
call-seq: exclude_threads -> exclude_threads.
-
.exclude_threads=(value) ⇒ Object
call-seq: exclude_threads= -> void.
-
.figure_measure_mode ⇒ Object
Checks if the user specified the clock mode via the RUBY_PROF_MEASURE_MODE environment variable.
- .measure_allocations ⇒ Object
- .measure_cpu_time ⇒ Object
- .measure_gc_runs ⇒ Object
- .measure_gc_time ⇒ Object
- .measure_memory ⇒ Object
-
.measure_mode ⇒ Object
call-seq: measure_mode -> measure_mode.
-
.measure_mode=(value) ⇒ Object
call-seq: measure_mode=value -> void.
- .measure_mode_string ⇒ Object
- .measure_process_time ⇒ Object
- .measure_wall_time ⇒ Object
- .pause ⇒ Object
-
.profile(&block) ⇒ Object
Profile a block.
- .resume ⇒ Object
- .running? ⇒ Boolean
- .start ⇒ Object
-
.start_script(script) ⇒ Object
Profiling.
- .stop ⇒ Object
Class Method Details
.cpu_frequency ⇒ Object
Measurements
6 7 8 |
# File 'lib/ruby-prof/compatibility.rb', line 6 def self.cpu_frequency Measure::CpuTime.frequency end |
.exclude_threads ⇒ Object
call-seq: exclude_threads -> exclude_threads
Returns threads ruby-prof should exclude from profiling
88 89 90 |
# File 'lib/ruby-prof/compatibility.rb', line 88 def self.exclude_threads @exclude_threads ||= Array.new end |
.exclude_threads=(value) ⇒ Object
call-seq: exclude_threads= -> void
Specifies what threads ruby-prof should exclude from profiling
97 98 99 |
# File 'lib/ruby-prof/compatibility.rb', line 97 def self.exclude_threads=(value) @exclude_threads = value end |
.figure_measure_mode ⇒ Object
Checks if the user specified the clock mode via the RUBY_PROF_MEASURE_MODE environment variable
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# 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 ⇒ Object
10 11 12 |
# File 'lib/ruby-prof/compatibility.rb', line 10 def self.measure_allocations Measure::Allocations.measure end |
.measure_cpu_time ⇒ Object
14 15 16 |
# File 'lib/ruby-prof/compatibility.rb', line 14 def self.measure_cpu_time Measure::CpuTime.measure end |
.measure_gc_runs ⇒ Object
18 19 20 |
# File 'lib/ruby-prof/compatibility.rb', line 18 def self.measure_gc_runs Measure::GcRuns.measure end |
.measure_gc_time ⇒ Object
22 23 24 |
# File 'lib/ruby-prof/compatibility.rb', line 22 def self.measure_gc_time Measure::GcTime.measure end |
.measure_memory ⇒ Object
26 27 28 |
# File 'lib/ruby-prof/compatibility.rb', line 26 def self.measure_memory Measure::Memory.measure end |
.measure_mode ⇒ Object
call-seq: measure_mode -> measure_mode
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.*/
51 52 53 |
# File 'lib/ruby-prof/compatibility.rb', line 51 def self.measure_mode @measure_mode ||= RubyProf::WALL_TIME end |
.measure_mode=(value) ⇒ Object
call-seq: measure_mode=value -> void
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.*/
67 68 69 |
# File 'lib/ruby-prof/compatibility.rb', line 67 def self.measure_mode=(value) @measure_mode = value end |
.measure_mode_string ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/ruby-prof/compatibility.rb', line 71 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 ⇒ Object
30 31 32 |
# File 'lib/ruby-prof/compatibility.rb', line 30 def self.measure_process_time Measure::ProcessTime.measure end |
.measure_wall_time ⇒ Object
34 35 36 |
# File 'lib/ruby-prof/compatibility.rb', line 34 def self.measure_wall_time Measure::WallTime.measure end |
.pause ⇒ Object
114 115 116 117 118 |
# File 'lib/ruby-prof/compatibility.rb', line 114 def self.pause ensure_running! disable_gc_stats_if_needed @profile.pause end |
.profile(&block) ⇒ Object
Profile a block
143 144 145 146 147 148 149 |
# File 'lib/ruby-prof/compatibility.rb', line 143 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 ⇒ Object
128 129 130 131 132 |
# File 'lib/ruby-prof/compatibility.rb', line 128 def self.resume ensure_running! enable_gc_stats_if_needed @profile.resume end |
.running? ⇒ Boolean
120 121 122 123 124 125 126 |
# File 'lib/ruby-prof/compatibility.rb', line 120 def self.running? if defined?(@profile) and @profile @profile.running? else false end end |
.start ⇒ Object
107 108 109 110 111 112 |
# File 'lib/ruby-prof/compatibility.rb', line 107 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) ⇒ Object
Profiling
102 103 104 105 |
# File 'lib/ruby-prof/compatibility.rb', line 102 def self.start_script(script) start load script end |
.stop ⇒ Object
134 135 136 137 138 139 140 |
# File 'lib/ruby-prof/compatibility.rb', line 134 def self.stop ensure_running! result = @profile.stop disable_gc_stats_if_needed @profile = nil result end |