diff --git a/.gitignore b/.gitignore index 1cbad6f..ea9656a 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ pkg .ruby-version *.bundle /tmp +Gemfile.lock diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..fa75df1 --- /dev/null +++ b/Gemfile @@ -0,0 +1,3 @@ +source 'https://rubygems.org' + +gemspec diff --git a/Rakefile b/Rakefile index 5f76144..b7f8f30 100755 --- a/Rakefile +++ b/Rakefile @@ -65,6 +65,10 @@ namespace :profile do ruby "./performance/profile.rb" end + task :stackprof do + ruby "./performance/stackprof.rb" + end + desc "Run KCacheGrind" task :grind => :run do system "qcachegrind /tmp/liquid.rubyprof_calltreeprinter.txt" diff --git a/liquid.gemspec b/liquid.gemspec index a99e951..55103ae 100644 --- a/liquid.gemspec +++ b/liquid.gemspec @@ -26,4 +26,7 @@ Gem::Specification.new do |s| s.require_path = "lib" s.add_development_dependency 'rake-compiler' + s.add_development_dependency 'stackprof' + s.add_development_dependency 'rake' + s.add_development_dependency 'activesupport' end diff --git a/performance/stackprof.rb b/performance/stackprof.rb new file mode 100644 index 0000000..fff8c0b --- /dev/null +++ b/performance/stackprof.rb @@ -0,0 +1,15 @@ +require 'stackprof' rescue fail("install stackprof extension/gem") +require File.dirname(__FILE__) + '/theme_runner' + +profiler = ThemeRunner.new +profiler.run +results = StackProf.run(mode: :cpu, out: ENV['FILENAME']) do + 100.times do + profiler.run + end +end +if results.kind_of?(File) + puts "wrote stackprof dump to #{results.path}" +else + StackProf::Report.new(results).print_text(false, 20) +end