Files
news.gitea.happylizard.me/bin/gems/addressable-2.8.7/tasks/profile.rake
T
pizza2d1 4cee170d66
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 9s
Add bin and edit workflow
2026-09-16 13:11:16 -06:00

73 lines
2.2 KiB
Ruby

# frozen_string_literal: true
namespace :profile do
desc "Profile Template match memory allocations"
task :template_match_memory do
require "memory_profiler"
require "addressable/template"
start_at = Time.now.to_f
template = Addressable::Template.new("http://example.com/{?one,two,three}")
report = MemoryProfiler.report do
30_000.times do
template.match(
"http://example.com/?one=one&two=floo&three=me"
)
end
end
end_at = Time.now.to_f
print_options = { scale_bytes: true, normalize_paths: true }
puts "\n\n"
if ENV["CI"]
report.pretty_print(print_options)
else
t_allocated = report.scale_bytes(report.total_allocated_memsize)
t_retained = report.scale_bytes(report.total_retained_memsize)
puts "Total allocated: #{t_allocated} (#{report.total_allocated} objects)"
puts "Total retained: #{t_retained} (#{report.total_retained} objects)"
puts "Took #{end_at - start_at} seconds"
FileUtils.mkdir_p("tmp")
report.pretty_print(to_file: "tmp/memprof.txt", **print_options)
end
end
desc "Profile URI parse memory allocations"
task :memory do
require "memory_profiler"
require "addressable/uri"
if ENV["IDNA_MODE"] == "pure"
Addressable.send(:remove_const, :IDNA)
load "addressable/idna/pure.rb"
end
start_at = Time.now.to_f
report = MemoryProfiler.report do
30_000.times do
Addressable::URI.parse(
"http://google.com/stuff/../?with_lots=of&params=asdff#!stuff"
).normalize
end
end
end_at = Time.now.to_f
print_options = { scale_bytes: true, normalize_paths: true }
puts "\n\n"
if ENV["CI"]
report.pretty_print(**print_options)
else
t_allocated = report.scale_bytes(report.total_allocated_memsize)
t_retained = report.scale_bytes(report.total_retained_memsize)
puts "Total allocated: #{t_allocated} (#{report.total_allocated} objects)"
puts "Total retained: #{t_retained} (#{report.total_retained} objects)"
puts "Took #{end_at - start_at} seconds"
FileUtils.mkdir_p("tmp")
report.pretty_print(to_file: "tmp/memprof.txt", **print_options)
end
end
end