benchmark_require

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