lib/flamegraph.rb in flamegraph-0.0.1 vs lib/flamegraph.rb in flamegraph-0.0.2
- old
+ new
@@ -1,23 +1,24 @@
require "json"
+require "fast_stack"
require "flamegraph/version"
-require "flamegraph/sampler"
require "flamegraph/renderer"
module Flamegraph
- def self.generate(filename=nil)
- sampler = Flamegraph::Sampler.new
- sampler.start
- yield
- results = sampler.finish
+ def self.generate(filename=nil, opts = {})
+ fidelity = opts[:fidelity] || 0.5
- renderer = Flamegraph::Renderer.new(results)
- result = renderer.graph_html
+ backtraces = FastStack.profile(fidelity) do
+ yield
+ end
+ renderer = Flamegraph::Renderer.new(backtraces)
+ rendered = renderer.graph_html
+
if filename
File.open(filename,"w") do |f|
- f.write(result)
+ f.write(rendered)
end
end
- result
+ rendered
end
end