Files
2025-07-29 20:15:22 -04:00

43 lines
1011 B
Ruby

# frozen_string_literal: true
require 'stackprof'
require 'fileutils'
require_relative 'theme_runner'
output_dir = ENV['OUTPUT_DIR'] || "/tmp/liquid-performance"
FileUtils.mkdir_p(output_dir)
Liquid::Template.error_mode = ARGV.first.to_sym if ARGV.first
profiler = ThemeRunner.new
profiler.run_all # warmup
[:cpu, :object].each do |mode|
puts
puts "Profiling in #{mode} mode..."
puts "writing to #{output_dir}/#{mode}.profile:"
puts
StackProf.run(mode: mode, raw: true, out: "#{output_dir}/#{mode}.profile") do
200.times do
profiler.run_all
end
end
result = StackProf.run(mode: mode) do
100.times do
profiler.run_all
end
end
StackProf::Report.new(result).print_text(false, 30)
end
puts
puts "files in #{output_dir}:"
Dir.glob("#{output_dir}/*").each do |file|
puts " #{file}"
end
puts "Recommended:"
puts " stackprof --d3-flamegraph #{output_dir}/cpu.profile > #{output_dir}/flame.html"
puts " stackprof --method #{output_dir}/cpu.profile"
puts " etc"