class Peek::Views::GC

Attributes

gc_time[R]
invoke_time[R]
invokes[R]
total_object[R]
total_size[R]
use_size[R]

Public Instance Methods

parse_result() click to toggle source
# File lib/peek/views/gc.rb, line 24
def parse_result
  results = ::GC::Profiler.result.split("\n")

  @invokes = 0
  @invoke_time = 0.0
  @use_size = 0
  @total_size = 0
  @total_object = 0
  @gc_time = 0.0

  return if results.empty?

  @invokes = results.first.scan(/\s+\d+(?:\.\d+)?/).first.strip

  results[2..-1].each do |line|
    _, invoke_time, use_size, total_size, total_object, gc_time = line.scan(/\s+\-?\d+(?:\.\d+)?/).collect(&:strip)

    @invoke_time  += invoke_time.to_f
    @use_size     += use_size.to_i
    @total_size   += total_size.to_i
    @total_object += total_object.to_i
    @gc_time      += gc_time.to_f
  end
end
results() click to toggle source
# File lib/peek/views/gc.rb, line 11
def results
  parse_result

  {
    :invokes      => invokes,
    :invoke_time  => "%.2f" % invoke_time,
    :use_size     => use_size,
    :total_size   => total_size,
    :total_object => total_object,
    :gc_time      => "%.2f" % gc_time
  }
end

Private Instance Methods

setup_subscribers() click to toggle source
# File lib/peek/views/gc.rb, line 51
def setup_subscribers
  # Reset each counter when a new request starts
  before_request do |name, start, finish, id, payload|
    ::GC::Profiler.enable
    ::GC::Profiler.clear
  end

  # Once the action is finished
  subscribe 'process_action.action_controller' do |name, start, finish, id, payload|
    ::GC::Profiler.disable
    ::GC::Profiler.clear
  end
end