Sha256: d1cc265bd221d22f83c81fe7da2bc45ecebff2fbf81d002436a8c545d07f2cc7

Contents?: true

Size: 789 Bytes

Versions: 1

Compression:

Stored size: 789 Bytes

Contents

class Flamegraph::StackProfSampler
  def self.collect(fidelity=0.5)

    result = StackProf.run(mode: :wall,
                           raw: true,
                           aggregate: false,
                           interval: (fidelity * 1000).to_i) do
      yield
    end


    stacks = []
    stack = []

    return [] unless result && result[:raw]

    length = nil
    result[:raw].each do |i|
      if length.nil?
        length = i
        next
      end

      if length > 0
        frame = result[:frames][i]
        frame = "#{frame[:file]}:#{frame[:line]}:in `#{frame[:name]}'"
        stack << frame.to_s
        length -= 1
        next
      end

      i.times do
        stacks << stack.reverse
      end

      stack = []
      length = nil
    end

    stacks
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
flamegraph-0.9.5 lib/flamegraph/stackprof_sampler.rb