Module: Sperf::Collapsed

Defined in:
lib/sperf.rb

Overview

Collapsed stacks encoder for FlameGraph / speedscope. Output: one line per unique stack, “frame1;frame2;…;leafN weight\n”

Class Method Summary collapse

Class Method Details

.encode(data) ⇒ Object



439
440
441
442
443
444
445
446
# File 'lib/sperf.rb', line 439

def encode(data)
  merged = Hash.new(0)
  data[:samples].each do |frames, weight|
    key = frames.reverse.map { |_, label| label }.join(";")
    merged[key] += weight
  end
  merged.map { |stack, weight| "#{stack} #{weight}" }.join("\n") + "\n"
end