Class: RubyProf::GraphPrinter

Inherits:
AbstractPrinter show all
Defined in:
lib/ruby-prof/graph_printer.rb

Overview

Generates graph profile reports as text. To use the graph printer:

result = RubyProf.profile do
  [code to profile]
end

printer = RubyProf::GraphPrinter.new(result, 5)
printer.print(STDOUT, 0)

The constructor takes two arguments. See the README

Direct Known Subclasses

GraphPrinterWithoutAggregation

Constant Summary collapse

PERCENTAGE_WIDTH =
8
TIME_WIDTH =
10
CALL_WIDTH =
17

Instance Method Summary collapse

Methods inherited from AbstractPrinter

#method_name, #min_percent, #print_file, #setup_options

Constructor Details

#initialize(result) ⇒ GraphPrinter

Create a GraphPrinter. Result is a RubyProf::Result object generated from a profiling run.



23
24
25
26
27
# File 'lib/ruby-prof/graph_printer.rb', line 23

def initialize(result)
  super(result)
  @thread_times = Hash.new
  calculate_thread_times
end

Instance Method Details

#calculate_thread_timesObject



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/ruby-prof/graph_printer.rb', line 29

def calculate_thread_times
  # Cache thread times since this is an expensive
  # operation with the required sorting
  @result.threads.each do |thread_id, methods|
    top = methods.max

    thread_time = [top.total_time, 0.01].max

    @thread_times[thread_id] = thread_time
  end
end

Print a graph report to the provided output.

output - Any IO oject, including STDOUT or a file. The default value is STDOUT.

options - Hash of print options. See #setup_options

for more information.


49
50
51
52
53
# File 'lib/ruby-prof/graph_printer.rb', line 49

def print(output = STDOUT, options = {})
  @output = output
  setup_options(options)
  print_threads
end