From 544b512e7b8a201084887bcd86b6fd5259e76e73 Mon Sep 17 00:00:00 2001 From: Tobi Lutke Date: Tue, 29 Jul 2025 20:15:22 -0400 Subject: [PATCH] more profile cleanups --- performance/profile.rb | 62 ++++++++++++------------------------------ 1 file changed, 18 insertions(+), 44 deletions(-) diff --git a/performance/profile.rb b/performance/profile.rb index c1c46e64..7a00230f 100644 --- a/performance/profile.rb +++ b/performance/profile.rb @@ -11,58 +11,32 @@ Liquid::Template.error_mode = ARGV.first.to_sym if ARGV.first profiler = ThemeRunner.new profiler.run_all # warmup -puts -puts "writing to #{output_dir}/cpu.profile" -StackProf.run(mode: :cpu, raw: true, out: "#{output_dir}/cpu.profile") do - 100.times do - profiler.run_all +[: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 -end -puts "writing to #{output_dir}/object.profile" -StackProf.run(mode: :object, raw: true, out: "#{output_dir}/object.profile") do - 100.times do - profiler.run_all + result = StackProf.run(mode: mode) do + 100.times do + profiler.run_all + end end + + StackProf::Report.new(result).print_text(false, 30) end -puts "running cpu profile" -results = StackProf.run(mode: :cpu) do - 100.times do - profiler.run_all - end -end - -File.open("#{output_dir}/cpu.graph.dot", 'w+') do |f| - puts("Writing cpu graph to #{File.join(output_dir, "cpu.graph.dot")}") - StackProf::Report.new(results).print_graphviz({}, f) -end - -StackProf::Report.new(results).print_text(false, 20) -puts("Writing cpu profile to #{File.join(output_dir, "cpu.profile")}") -File.write(File.join(output_dir, "cpu.profile"), Marshal.dump(results)) - -puts -puts "Profiling in object mode..." -results = StackProf.run(mode: :object) do - 100.times do - profiler.run_all - end -end - -File.open("#{output_dir}/object.graph.dot", 'w+') do |f| - puts("Writing object graph to #{File.join(output_dir, "object.graph.dot")}") - StackProf::Report.new(results).print_graphviz({}, f) -end - -StackProf::Report.new(results).print_text(false, 20) -puts("Writing object profile to #{File.join(output_dir, "object.profile")}") -File.write(File.join(output_dir, "object.profile"), Marshal.dump(results)) -puts 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 --d3-flamegraph #{output_dir}/cpu.profile > #{output_dir}/flame.html" +puts " stackprof --method #{output_dir}/cpu.profile" +puts " etc"