class TestProf::MemoryProf::Printer
def initialize(tracker)
def initialize(tracker) @tracker = tracker end
def memory_percentage(item)
def memory_percentage(item) return 0 if tracker.total_memory.zero? || item[:memory].zero? (100.0 * item[:memory] / tracker.total_memory).round(2) end
def number_to_human(value)
def number_to_human(value) NumberToHuman.convert(value) end
def print
def print messages = [ "MemoryProf results\n\n", print_total, print_block("groups", tracker.groups), print_block("examples", tracker.examples) ] log :info, messages.join end
def print_block(name, items)
def print_block(name, items) return if items.empty? <<~GROUP Top #{tracker.top_count} #{name} (by #{mode}): #{print_items(items)} GROUP end
def print_items(items)
def print_items(items) messages = items.map do |item| <<~ITEM #{item[:name].truncate(30)} (#{item[:location]}) – +#{memory_amount(item)} (#{memory_percentage(item)}%) ITEM end messages.join end