in benchmark/gem.rb [70:108]
def benchmark_require(legacy_report_data, report_data)
return unless gem_name
time = Benchmark.fork_run do |out|
t1 = Benchmark.monotonic_milliseconds
require gem_name
out[:require_time] = (Benchmark.monotonic_milliseconds - t1)
end
memory = Benchmark.fork_run do |out|
unless defined?(JRUBY_VERSION)
r = ::MemoryProfiler.report { require gem_name }
out[:require_mem_retained] = r.total_retained_memsize / (1024.0 * 1024.0)
out[:require_mem_allocated] = r.total_allocated_memsize / (1024.0 * 1024.0)
end
end
legacy_report_data.merge!(time)
legacy_report_data.merge!(memory)
report_data << Result.new(
"#{service_name(gem_name)}.require.time",
"The time it takes to require the #{gem_name} gem.",
[time[:require_time]]
).format
report_data << Result.new(
"#{service_name(gem_name)}.require.retained.size",
"The amount of memory retained when requiring the #{gem_name} gem.",
[memory[:require_mem_retained]]
).format
report_data << Result.new(
"#{service_name(gem_name)}.require.allocated.size",
"The amount of memory allocated when requiring the #{gem_name} gem.",
[memory[:require_mem_allocated]]
).format
end