Class: RubyProf::MultiPrinter

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby-prof/multi_printer.rb

Overview

Helper class to simplify printing profiles of several types from one profiling run. Currently prints a flat profile, a callgrind profile, a call stack profile and a graph profile.

Instance Method Summary collapse

Constructor Details

#initialize(result) ⇒ MultiPrinter

Returns a new instance of MultiPrinter.



6
7
8
9
10
11
# File 'lib/ruby-prof/multi_printer.rb', line 6

def initialize(result)
  @stack_printer = CallStackPrinter.new(result)
  @graph_printer = GraphHtmlPrinter.new(result)
  @tree_printer = CallTreePrinter.new(result)
  @flat_printer = FlatPrinter.new(result)
end

Instance Method Details

#flat_profileObject

the name of the flat profile file



49
50
51
# File 'lib/ruby-prof/multi_printer.rb', line 49

def flat_profile
  "#{@directory}/#{@profile}.flat.txt"
end

#graph_profileObject

the name of the graph profile file



39
40
41
# File 'lib/ruby-prof/multi_printer.rb', line 39

def graph_profile
  "#{@directory}/#{@profile}.graph.html"
end

create profile files under options or the current directory. options is used as the base name for the pofile file, defaults to “profile”.



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/ruby-prof/multi_printer.rb', line 16

def print(options)
  @profile = options.delete(:profile) || "profile"
  @directory = options.delete(:path) || File.expand_path(".")
  File.open(stack_profile, "w") do |f|
    @stack_printer.print(f, options.merge(:graph => "#{@profile}.graph.html"))
  end
  File.open(graph_profile, "w") do |f|
    @graph_printer.print(f, options)
  end
  File.open(tree_profile, "w") do |f|
    @tree_printer.print(f, options)
  end
  File.open(flat_profile, "w") do |f|
    @flat_printer.print(f, options)
  end
end

#stack_profileObject

the name of the call stack profile file



34
35
36
# File 'lib/ruby-prof/multi_printer.rb', line 34

def stack_profile
  "#{@directory}/#{@profile}.stack.html"
end

#tree_profileObject

the name of the callgrind profile file



44
45
46
# File 'lib/ruby-prof/multi_printer.rb', line 44

def tree_profile
  "#{@directory}/#{@profile}.grind.dat"
end