class RubyProf::DotPrinter

  1. lib/ruby-prof/dot_printer.rb
Parent: RubyProf

Generates a graphviz graph in dot format. To use the dot printer:

result = RubyProf.profile do
  [code to profile]
end
printer = RubyProf::DotPrinter.new(result)
printer.print(STDOUT)

You can use either dot viewer such as GraphViz, or the dot command line tool to reformat the output into a wide variety of outputs:

dot -Tpng graph.dot > graph.png

Methods

Public Class

  1. new

Public Instance

  1. print

Constants

CLASS_COLOR = '"#666666"'  
EDGE_COLOR = '"#666666"'  

Public Class methods

new (result)

Creates the DotPrinter using a RubyProf::Result.

[show source]
# File lib/ruby-prof/dot_printer.rb, line 25
def initialize(result)
  super(result)
  @seen_methods = Set.new
end

Public Instance methods

print (output = STDOUT, options = {})

Print a graph report to the provided output.

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

options - Hash of print options. See setup_options for more information.

When profiling results that cover a large number of method calls it helps to use the :min_percent option, for example:

DotPrinter.new(result).print(STDOUT, :min_percent=>5)
[show source]
# File lib/ruby-prof/dot_printer.rb, line 43
def print(output = STDOUT, options = {})
  @output = output
  setup_options(options)
  
  total_time = thread_times.values.inject{|a,b| a+b}
  
  puts 'digraph "Profile" {'
  puts "label=\"#{mode_name} >=#{min_percent}%\\nTotal: #{total_time}\";"
  puts "labelloc=t;"
  puts "labeljust=l;"
  print_threads
  puts '}'
end