lib/flamegraph.rb in flamegraph-0.0.5 vs lib/flamegraph.rb in flamegraph-0.0.6
- old
+ new
@@ -1,16 +1,39 @@
require "json"
-require "fast_stack"
+
+if RUBY_VERSION >= "2.1.0".freeze
+ begin
+ require "stackprof"
+ require "flamegraph/stackprof_sampler"
+ rescue
+ STDERR.puts "Please require the stackprof gem falling back to fast_stack"
+ require "fast_stack"
+ end
+else
+ begin
+ require "fast_stack"
+ rescue
+ STDERR.puts "Please require the fast_stack gem, note flamegraph is only supported on Ruby 2.0 and above"
+ end
+end
+
require "flamegraph/version"
require "flamegraph/renderer"
module Flamegraph
def self.generate(filename=nil, opts = {})
fidelity = opts[:fidelity] || 0.5
- backtraces = FastStack.profile(fidelity) do
- yield
- end
+ backtraces =
+ if defined? StackProf
+ StackProfSampler.collect(fidelity) do
+ yield
+ end
+ else
+ FastStack.profile(fidelity) do # , opts[:mode] || :ruby) do
+ yield
+ end
+ end
embed_resources = (filename && !opts.key?(:embed_resources)) || opts[:embed_resources]
renderer = Flamegraph::Renderer.new(backtraces)
rendered = renderer.graph_html(embed_resources)