diff --git a/lib/datadog/di/instrumenter.rb b/lib/datadog/di/instrumenter.rb index b1f8f0f599a..ecb94ba82f3 100644 --- a/lib/datadog/di/instrumenter.rb +++ b/lib/datadog/di/instrumenter.rb @@ -1,8 +1,8 @@ # frozen_string_literal: true -# rubocop:disable Lint/AssignmentInCondition +require_relative '../core/utils/time' -require 'benchmark' +# rubocop:disable Lint/AssignmentInCondition module Datadog module DI @@ -118,19 +118,19 @@ def hook_method(probe, &block) rv = nil # Under Ruby 2.6 we cannot just call super(*args, **kwargs) # for methods defined via method_missing. - duration = Benchmark.realtime do # steep:ignore - rv = if args.any? - if kwargs.any? - super(*args, **kwargs, &target_block) - else - super(*args, &target_block) - end - elsif kwargs.any? - super(**kwargs, &target_block) + start_time = Core::Utils::Time.get_time + rv = if args.any? + if kwargs.any? + super(*args, **kwargs, &target_block) else - super(&target_block) + super(*args, &target_block) end + elsif kwargs.any? + super(**kwargs, &target_block) + else + super(&target_block) end + duration = Core::Utils::Time.get_time - start_time # The method itself is not part of the stack trace because # we are getting the stack trace from outside of the method. # Add the method in manually as the top frame.