From c67b77709d45d663de62d200c1870d5487d1509b Mon Sep 17 00:00:00 2001 From: Florian Weingarten Date: Wed, 17 Apr 2019 18:33:59 +0100 Subject: [PATCH] rake memory_profile:run --- Gemfile | 7 +++++-- Rakefile | 7 +++++++ performance/memory_profile.rb | 26 ++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 performance/memory_profile.rb diff --git a/Gemfile b/Gemfile index 6e3136d..c7cde24 100644 --- a/Gemfile +++ b/Gemfile @@ -5,10 +5,13 @@ end gemspec -gem 'stackprof', platforms: :mri - group :benchmark, :test do gem 'benchmark-ips' + gem 'memory_profiler' + + install_if -> { RUBY_PLATFORM !~ /mingw|mswin/ } do + gem 'stackprof' + end end group :test do diff --git a/Rakefile b/Rakefile index 3dba4cf..9650abb 100755 --- a/Rakefile +++ b/Rakefile @@ -85,6 +85,13 @@ namespace :profile do end end +namespace :memory_profile do + desc "Run memory profiler" + task :run do + ruby "./performance/memory_profile.rb" + end +end + desc "Run example" task :example do ruby "-w -d -Ilib example/server/server.rb" diff --git a/performance/memory_profile.rb b/performance/memory_profile.rb new file mode 100644 index 0000000..bfacde8 --- /dev/null +++ b/performance/memory_profile.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +require 'benchmark/ips' +require 'memory_profiler' +require_relative 'theme_runner' + +def profile(phase, &block) + puts + puts "#{phase}:" + puts + + report = MemoryProfiler.report(&block) + + report.pretty_print( + color_output: true, + scale_bytes: true, + detailed_report: true + ) +end + +Liquid::Template.error_mode = ARGV.first.to_sym if ARGV.first + +profiler = ThemeRunner.new + +profile("Parsing") { profiler.compile } +profile("Rendering") { profiler.render }