Repository: DataDog/dd-trace-py
Pull request #13498: chore(profiling): make recorder an optional parameter for collectors
Author: login: taegyunkim
Labels: name: changelog/no-changelog
description: A changelog entry is not required for this PR.
name: Profiling
description: Continous Profling
Created: 2025-05-23T19:28:22Z | Merged: 2025-05-23T20:21:06Z

Main motivation to this PR is to reduce the diffs when removing recorder from the codebase as part of removing the legacy exporter. 

## Checklist
- [x] PR author has checked that all the criteria below are met
- The PR description includes an overview of the change
- The PR description articulates the motivation for the change
- The change includes tests OR the PR description describes a testing strategy
- The PR description notes risks associated with the change, if any
- Newly-added code is easy to change
- The change follows the [library release note guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html)
- The change includes or references documentation updates if necessary
- Backport labels are set (if [applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting))

## Reviewer Checklist
- [x] Reviewer has checked that all the criteria below are met 
- Title is accurate
- All changes are related to the pull request's stated goal
- Avoids breaking [API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces) changes
- Testing strategy adequately addresses listed risks
- Newly-added code is easy to change
- Release note makes sense to a user of the library
- If necessary, author has acknowledged and discussed the performance implications of this PR as reported in the benchmarks PR comment
- Backport labels are set in a manner that is consistent with the [release branch maintenance policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)



Diff:
diff --git a/ddtrace/profiling/collector/__init__.py b/ddtrace/profiling/collector/__init__.py
index 606f2b101e4..735c27cc439 100644
--- a/ddtrace/profiling/collector/__init__.py
+++ b/ddtrace/profiling/collector/__init__.py
@@ -20,7 +20,7 @@ class CollectorUnavailable(CollectorError):
 class Collector(service.Service):
     """A profile collector."""
 
-    def __init__(self, recorder: Recorder, *args, **kwargs):
+    def __init__(self, recorder: typing.Optional[Recorder] = None, *args, **kwargs):
         super().__init__(*args, **kwargs)
         self.recorder = recorder
 
@@ -77,7 +77,7 @@ def capture(self):
 
 
 class CaptureSamplerCollector(Collector):
-    def __init__(self, recorder, capture_pct=config.capture_pct, *args, **kwargs):
+    def __init__(self, recorder: typing.Optional[Recorder] = None, capture_pct=config.capture_pct, *args, **kwargs):
         super().__init__(recorder, *args, **kwargs)
         self.capture_pct = capture_pct
         self._capture_sampler = CaptureSampler(self.capture_pct)
diff --git a/ddtrace/profiling/collector/_lock.py b/ddtrace/profiling/collector/_lock.py
index 013937aa1bd..5642d314e88 100644
--- a/ddtrace/profiling/collector/_lock.py
+++ b/ddtrace/profiling/collector/_lock.py
@@ -313,7 +313,7 @@ class LockCollector(collector.CaptureSamplerCollector):
 
     def __init__(
         self,
-        recorder,
+        recorder: typing.Optional[Recorder] = None,
         nframes=config.max_frames,
         endpoint_collection_enabled=config.endpoint_collection,
         export_libdd_enabled=config.export.libdd_enabled,
diff --git a/ddtrace/profiling/collector/memalloc.py b/ddtrace/profiling/collector/memalloc.py
index 1b83d534046..da717fbf10a 100644
--- a/ddtrace/profiling/collector/memalloc.py
+++ b/ddtrace/profiling/collector/memalloc.py
@@ -69,7 +69,7 @@ class MemoryCollector(collector.PeriodicCollector):
 
     def __init__(
         self,
-        recorder: Recorder,
+        recorder: Optional[Recorder] = None,
         _interval: float = _DEFAULT_INTERVAL,
         _max_events: Optional[int] = None,
         max_nframe: Optional[int] = None,
diff --git a/ddtrace/profiling/collector/stack.pyx b/ddtrace/profiling/collector/stack.pyx
index 10a06169483..5d9f9b5dae9 100644
--- a/ddtrace/profiling/collector/stack.pyx
+++ b/ddtrace/profiling/collector/stack.pyx
@@ -471,7 +471,7 @@ class StackCollector(collector.PeriodicCollector):
     )
 
     def __init__(self,
-                 recorder: Recorder,
+                 recorder: typing.Optional[Recorder] = None,
                  max_time_usage_pct: float = config.max_time_usage_pct,
                  nframes: int = config.max_frames,
                  ignore_profiler: bool = config.ignore_profiler,
diff --git a/tests/profiling_v2/collector/test_asyncio.py b/tests/profiling_v2/collector/test_asyncio.py
index f0c9bb625d9..4404570c8ec 100644
--- a/tests/profiling_v2/collector/test_asyncio.py
+++ b/tests/profiling_v2/collector/test_asyncio.py
@@ -51,7 +51,7 @@ def teardown_method(self):
                 print("Error while deleting file: ", e)
 
     async def test_asyncio_lock_events(self):
-        with collector_asyncio.AsyncioLockCollector(None, capture_pct=100, export_libdd_enabled=True):
+        with collector_asyncio.AsyncioLockCollector(capture_pct=100, export_libdd_enabled=True):
             lock = asyncio.Lock()  # !CREATE! test_asyncio_lock_events
             await lock.acquire()  # !ACQUIRE! test_asyncio_lock_events
             assert lock.locked()
@@ -89,7 +89,7 @@ async def test_asyncio_lock_events_tracer(self, tracer):
         resource = str(uuid.uuid4())
         span_type = ext.SpanTypes.WEB
 
-        with collector_asyncio.AsyncioLockCollector(None, capture_pct=100, export_libdd_enabled=True, tracer=tracer):
+        with collector_asyncio.AsyncioLockCollector(capture_pct=100, export_libdd_enabled=True, tracer=tracer):
             lock = asyncio.Lock()  # !CREATE! test_asyncio_lock_events_tracer_1
             await lock.acquire()  # !ACQUIRE! test_asyncio_lock_events_tracer_1
             with tracer.trace("test", resource=resource, span_type=span_type) as t:
diff --git a/tests/profiling_v2/collector/test_memalloc.py b/tests/profiling_v2/collector/test_memalloc.py
index 711cde4b1f6..4ecc9fca2a4 100644
--- a/tests/profiling_v2/collector/test_memalloc.py
+++ b/tests/profiling_v2/collector/test_memalloc.py
@@ -58,7 +58,7 @@ def test_memory_collector(tmp_path):
     )
     ddup.start()
 
-    mc = memalloc.MemoryCollector(None)
+    mc = memalloc.MemoryCollector()
     with mc:
         _allocate_1k()
         mc.periodic()
@@ -106,7 +106,7 @@ def test_memory_collector_ignore_profiler(tmp_path):
     )
     ddup.start()
 
-    mc = memalloc.MemoryCollector(None, ignore_profiler=True)
+    mc = memalloc.MemoryCollector(ignore_profiler=True)
     quit_thread = threading.Event()
 
     with mc:
diff --git a/tests/profiling_v2/collector/test_stack.py b/tests/profiling_v2/collector/test_stack.py
index 99cae2a3f17..d160844cae8 100644
--- a/tests/profiling_v2/collector/test_stack.py
+++ b/tests/profiling_v2/collector/test_stack.py
@@ -77,7 +77,7 @@ def bar():
     def foo():
         bar()
 
-    with stack.StackCollector(None, _stack_collector_v2_enabled=True):
+    with stack.StackCollector(_stack_collector_v2_enabled=True):
         for _ in range(10):
             foo()
     ddup.upload()
@@ -126,7 +126,6 @@ def test_push_span(tmp_path, tracer):
     span_type = ext.SpanTypes.WEB
 
     with stack.StackCollector(
-        None,
         tracer=tracer,
         endpoint_collection_enabled=True,
         ignore_profiler=True,  # this is not necessary, but it's here to trim samples
@@ -175,7 +174,6 @@ def target_fun():
                 time.sleep(0.1)
 
         with stack.StackCollector(
-            None,
             tracer=tracer,
             endpoint_collection_enabled=True,
             ignore_profiler=True,  # this is not necessary, but it's here to trim samples
@@ -223,7 +221,6 @@ def test_push_non_web_span(tmp_path, tracer):
     span_type = ext.SpanTypes.SQL
 
     with stack.StackCollector(
-        None,
         tracer=tracer,
         endpoint_collection_enabled=True,
         ignore_profiler=True,  # this is not necessary, but it's here to trim samples
@@ -267,7 +264,6 @@ def test_push_span_none_span_type(tmp_path, tracer):
     resource = str(uuid.uuid4())
 
     with stack.StackCollector(
-        None,
         tracer=tracer,
         endpoint_collection_enabled=True,
         ignore_profiler=True,  # this is not necessary, but it's here to trim samples
@@ -309,7 +305,7 @@ def test_exception_collection(stack_v2_enabled, tmp_path):
     ddup.config(env="test", service=test_name, version="my_version", output_filename=pprof_prefix)
     ddup.start()
 
-    with stack.StackCollector(None, ignore_profiler=True, _stack_collector_v2_enabled=stack_v2_enabled):
+    with stack.StackCollector(ignore_profiler=True, _stack_collector_v2_enabled=stack_v2_enabled):
         try:
             raise ValueError("hello")
         except Exception:
@@ -356,7 +352,7 @@ def test_exception_collection_threads(stack_v2_enabled, tmp_path):
     ddup.config(env="test", service=test_name, version="my_version", output_filename=pprof_prefix)
     ddup.start()
 
-    with stack.StackCollector(None, ignore_profiler=True, _stack_collector_v2_enabled=stack_v2_enabled):
+    with stack.StackCollector(ignore_profiler=True, _stack_collector_v2_enabled=stack_v2_enabled):
 
         def target_fun():
             try:
@@ -417,7 +413,7 @@ def test_exception_collection_trace(stack_v2_enabled, tmp_path, tracer):
     ddup.config(env="test", service=test_name, version="my_version", output_filename=pprof_prefix)
     ddup.start()
 
-    with stack.StackCollector(None, tracer=tracer, ignore_profiler=True, _stack_collector_v2_enabled=stack_v2_enabled):
+    with stack.StackCollector(tracer=tracer, ignore_profiler=True, _stack_collector_v2_enabled=stack_v2_enabled):
         with tracer.trace("foobar", resource="resource", span_type=ext.SpanTypes.WEB):
             try:
                 raise ValueError("hello")
@@ -472,7 +468,7 @@ def sleep_instance(self):
     ddup.config(env="test", service=test_name, version="my_version", output_filename=pprof_prefix)
     ddup.start()
 
-    with stack.StackCollector(None, ignore_profiler=True, _stack_collector_v2_enabled=True):
+    with stack.StackCollector(ignore_profiler=True, _stack_collector_v2_enabled=True):
         SomeClass.sleep_class()
 
     ddup.upload()
@@ -526,7 +522,7 @@ def sleep_instance(foobar, self):
     ddup.config(env="test", service=test_name, version="my_version", output_filename=pprof_prefix)
     ddup.start()
 
-    with stack.StackCollector(None, ignore_profiler=True, _stack_collector_v2_enabled=True):
+    with stack.StackCollector(ignore_profiler=True, _stack_collector_v2_enabled=True):
         SomeClass.sleep_class(123)
 
     ddup.upload()
@@ -610,7 +606,7 @@ def _dofib():
 
     threads = []
 
-    with stack.StackCollector(None, _stack_collector_v2_enabled=False):
+    with stack.StackCollector(_stack_collector_v2_enabled=False):
         for i in range(5):
             t = threading.Thread(target=_dofib, name="TestThread %d" % i)
             t.start()
@@ -647,12 +643,12 @@ def _dofib():
 
 def test_max_time_usage():
     with pytest.raises(ValueError):
-        stack.StackCollector(None, max_time_usage_pct=0)
+        stack.StackCollector(max_time_usage_pct=0)
 
 
 def test_max_time_usage_over():
     with pytest.raises(ValueError):
-        stack.StackCollector(None, max_time_usage_pct=200)
+        stack.StackCollector(max_time_usage_pct=200)
 
 
 @pytest.mark.parametrize(
@@ -675,7 +671,7 @@ def test_ignore_profiler(stack_v2_enabled, ignore_profiler, tmp_path):
     ddup.config(env="test", service=test_name, version="my_version", output_filename=pprof_prefix)
     ddup.start()
 
-    s = stack.StackCollector(None, ignore_profiler=ignore_profiler, _stack_collector_v2_enabled=stack_v2_enabled)
+    s = stack.StackCollector(ignore_profiler=ignore_profiler, _stack_collector_v2_enabled=stack_v2_enabled)
     collector_worker_thread_id = None
 
     with s:
diff --git a/tests/profiling_v2/collector/test_threading.py b/tests/profiling_v2/collector/test_threading.py
index 12b84fc9970..472a4331593 100644
--- a/tests/profiling_v2/collector/test_threading.py
+++ b/tests/profiling_v2/collector/test_threading.py
@@ -49,7 +49,7 @@ def test_repr():
 
 
 def test_wrapper():
-    collector = collector_threading.ThreadingLockCollector(None)
+    collector = collector_threading.ThreadingLockCollector()
     with collector:
 
         class Foobar(object):
@@ -71,7 +71,7 @@ def __init__(self):
 
 def test_patch():
     lock = threading.Lock
-    collector = collector_threading.ThreadingLockCollector(None)
+    collector = collector_threading.ThreadingLockCollector()
     collector.start()
     assert lock == collector._original
     # wrapt makes this true
@@ -156,7 +156,7 @@ def test_wrapt_disable_extensions():
     assert os.environ.get("WRAPT_DISABLE_EXTENSIONS")
     assert _lock.WRAPT_C_EXT is False
 
-    with collector_threading.ThreadingLockCollector(None, capture_pct=100):
+    with collector_threading.ThreadingLockCollector(capture_pct=100):
         th_lock = threading.Lock()  # !CREATE! test_wrapt_disable_extensions
         with th_lock:  # !ACQUIRE! !RELEASE! test_wrapt_disable_extensions
             pass
@@ -226,7 +226,7 @@ def play_with_lock():
         lock.acquire()  # !ACQUIRE! test_lock_gevent_tasks
         lock.release()  # !RELEASE! test_lock_gevent_tasks
 
-    with collector_threading.ThreadingLockCollector(None, capture_pct=100, export_libdd_enabled=True):
+    with collector_threading.ThreadingLockCollector(capture_pct=100, export_libdd_enabled=True):
         t = threading.Thread(name="foobar", target=play_with_lock)
         t.start()
         t.join()
@@ -299,7 +299,7 @@ def teardown_method(self, method):
     def test_lock_events(self):
         # The first argument is the recorder.Recorder which is used for the
         # v1 exporter. We don't need it for the v2 exporter.
-        with collector_threading.ThreadingLockCollector(None, capture_pct=100, export_libdd_enabled=True):
+        with collector_threading.ThreadingLockCollector(capture_pct=100, export_libdd_enabled=True):
             lock = threading.Lock()  # !CREATE! test_lock_events
             lock.acquire()  # !ACQUIRE! test_lock_events
             lock.release()  # !RELEASE! test_lock_events
@@ -329,7 +329,7 @@ def test_lock_events(self):
         )
 
     def test_lock_acquire_events_class(self):
-        with collector_threading.ThreadingLockCollector(None, capture_pct=100, export_libdd_enabled=True):
+        with collector_threading.ThreadingLockCollector(capture_pct=100, export_libdd_enabled=True):
 
             class Foobar(object):
                 def lockfunc(self):
@@ -360,7 +360,6 @@ def test_lock_events_tracer(self, tracer):
         resource = str(uuid.uuid4())
         span_type = ext.SpanTypes.WEB
         with collector_threading.ThreadingLockCollector(
-            None,
             tracer=tracer,
             capture_pct=100,
             export_libdd_enabled=True,
@@ -423,7 +422,6 @@ def test_lock_events_tracer_non_web(self, tracer):
         resource = str(uuid.uuid4())
         span_type = ext.SpanTypes.SQL
         with collector_threading.ThreadingLockCollector(
-            None,
             tracer=tracer,
             capture_pct=100,
             export_libdd_enabled=True,
@@ -467,7 +465,6 @@ def test_lock_events_tracer_late_finish(self, tracer):
         resource = str(uuid.uuid4())
         span_type = ext.SpanTypes.WEB
         with collector_threading.ThreadingLockCollector(
-            None,
             tracer=tracer,
             capture_pct=100,
             export_libdd_enabled=True,
@@ -524,7 +521,6 @@ def test_resource_not_collected(self, tracer):
         resource = str(uuid.uuid4())
         span_type = ext.SpanTypes.WEB
         with collector_threading.ThreadingLockCollector(
-            None,
             tracer=tracer,
             capture_pct=100,
             export_libdd_enabled=True,
@@ -583,7 +579,7 @@ def test_resource_not_collected(self, tracer):
         )
 
     def test_lock_enter_exit_events(self):
-        with collector_threading.ThreadingLockCollector(None, capture_pct=100, export_libdd_enabled=True):
+        with collector_threading.ThreadingLockCollector(capture_pct=100, export_libdd_enabled=True):
             th_lock = threading.Lock()  # !CREATE! test_lock_enter_exit_events
             with th_lock:  # !ACQUIRE! !RELEASE! test_lock_enter_exit_events
                 pass
@@ -622,7 +618,7 @@ def test_class_member_lock(self, inspect_dir_enabled):
         with mock.patch("ddtrace.settings.profiling.config.lock.name_inspect_dir", inspect_dir_enabled):
             expected_lock_name = "foo_lock" if inspect_dir_enabled else None
 
-            with collector_threading.ThreadingLockCollector(None, capture_pct=100, export_libdd_enabled=True):
+            with collector_threading.ThreadingLockCollector(capture_pct=100, export_libdd_enabled=True):
                 foobar = Foo()
                 foobar.foo()
                 bar = Bar()
@@ -666,7 +662,7 @@ def foo(self):
                 with self.__lock:  # !RELEASE! !ACQUIRE! test_private_lock
                     pass
 
-        with collector_threading.ThreadingLockCollector(None, capture_pct=100, export_libdd_enabled=True):
+        with collector_threading.ThreadingLockCollector(capture_pct=100, export_libdd_enabled=True):
             foo = Foo()
             foo.foo()
 
@@ -705,7 +701,7 @@ def bar(self):
                 with self.foo.foo_lock:  # !RELEASE! !ACQUIRE! test_inner_lock
                     pass
 
-        with collector_threading.ThreadingLockCollector(None, capture_pct=100, export_libdd_enabled=True):
+        with collector_threading.ThreadingLockCollector(capture_pct=100, export_libdd_enabled=True):
             bar = Bar()
             bar.bar()
 
@@ -737,7 +733,7 @@ def bar(self):
         )
 
     def test_anonymous_lock(self):
-        with collector_threading.ThreadingLockCollector(None, capture_pct=100, export_libdd_enabled=True):
+        with collector_threading.ThreadingLockCollector(capture_pct=100, export_libdd_enabled=True):
             with threading.Lock():  # !CREATE! !ACQUIRE! !RELEASE! test_anonymous_lock
                 pass
         ddup.upload()
@@ -764,7 +760,7 @@ def test_anonymous_lock(self):
         )
 
     def test_global_locks(self):
-        with collector_threading.ThreadingLockCollector(None, capture_pct=100, export_libdd_enabled=True):
+        with collector_threading.ThreadingLockCollector(capture_pct=100, export_libdd_enabled=True):
             from tests.profiling.collector import global_locks
 
             global_locks.foo()


Reviews:
user: login: nsrip-dd
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-23T19:34:35Z
user: login: taegyunkim
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-23T19:37:01Z
user: login: nsrip-dd
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-05-23T19:39:27Z

Review comments:
diff_hunk: @@ -58,7 +58,7 @@ def test_memory_collector(tmp_path):
     )
     ddup.start()
 
-    mc = memalloc.MemoryCollector(None)
+    mc = memalloc.MemoryCollector()
path: tests/profiling_v2/collector/test_memalloc.py
user: login: nsrip-dd
body: The MemoryCollector `__init__` function takes the recorder as a positional argument so this won't work
created_at: 2025-05-23T19:34:34Z
author_association: CONTRIBUTOR
diff_hunk: @@ -58,7 +58,7 @@ def test_memory_collector(tmp_path):
     )
     ddup.start()
 
-    mc = memalloc.MemoryCollector(None)
+    mc = memalloc.MemoryCollector()
path: tests/profiling_v2/collector/test_memalloc.py
user: login: taegyunkim
body: Updated `MemoryCollector`
created_at: 2025-05-23T19:37:01Z
author_association: CONTRIBUTOR

PR comments:
user: login: github-actions[bot]
created_at: 2025-05-23T19:28:50Z
body: `CODEOWNERS` have been resolved as:

```
ddtrace/profiling/collector/__init__.py                                 @DataDog/profiling-python
ddtrace/profiling/collector/_lock.py                                    @DataDog/profiling-python
ddtrace/profiling/collector/memalloc.py                                 @DataDog/profiling-python
ddtrace/profiling/collector/stack.pyx                                   @DataDog/profiling-python
tests/profiling_v2/collector/test_asyncio.py                            @DataDog/profiling-python
tests/profiling_v2/collector/test_memalloc.py                           @DataDog/profiling-python
tests/profiling_v2/collector/test_stack.py                              @DataDog/profiling-python
tests/profiling_v2/collector/test_threading.py                          @DataDog/profiling-python
```
<!-- thollander/actions-comment-pull-request "codeowners_resolved" -->
author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-05-23T19:48:45Z
body: ## Bootstrap import analysis

Comparison of import times between this PR and base.

### Summary

The average import time from this PR is: 239 ± 3 ms.

The average import time from base is: 249 ± 6 ms.

The import time difference between this PR and base is: -10.2 ± 0.2 ms.


### Import time breakdown

The following import paths have **shrunk**:
<details style="padding-left: 1em"><summary><progress value="5089.2537462537475" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.auto</code>
            <span style="color: #888; font-size:small; font-family: arial;">5.089 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(2.13%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="2562.1628371628376" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace</code>
            <span style="color: #888; font-size:small; font-family: arial;">2.562 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(1.07%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="1295.3896103896107" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace._logger</code>
            <span style="color: #888; font-size:small; font-family: arial;">1.295 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.54%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="1127.3796203796205" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.internal.telemetry</code>
            <span style="color: #888; font-size:small; font-family: arial;">1.127 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.47%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="687.9780219780221" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.internal.telemetry.writer</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.688 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.29%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="313.0849150849151" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.internal.utils.version</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.313 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.13%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="313.0849150849151" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.vendor.packaging.version</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.313 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.13%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="204.2487512487512" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.vendor.packaging</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.204 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.09%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="204.2487512487512" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.vendor</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.204 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.09%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="204.2487512487512" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.internal.module</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.204 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.09%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="21.47552447552448" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.internal.wrapping.context</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.021 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.01%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="21.47552447552448" max="239168.56943056945" style="width: 2em;"></progress>
            <code>contextvars</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.021 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.01%)</span>
        </summary><div style="padding-left: 2em"><progress value="21.47552447552448" max="239168.56943056945" style="width: 2em;"></progress>
            <code>_contextvars</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.021 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.01%)</span>
        </div></details>
</details>
</details>
</details>
</details>
</details>
</details>
<details style="padding-left: 1em"><summary><progress value="143.1618381618381" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.internal.telemetry.data</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.143 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.06%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="112.49050949050945" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.internal.packages</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.112 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.05%)</span>
        </summary><div style="padding-left: 2em"><progress value="52.685314685314665" max="239168.56943056945" style="width: 2em;"></progress>
            <code>_sysconfigdata__linux_x86_64-linux-gnu</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.053 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </div></details>
<div style="padding-left: 2em"><progress value="30.671328671328638" max="239168.56943056945" style="width: 2em;"></progress>
            <code>sysconfig</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.031 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.01%)</span>
        </div></details>
<details style="padding-left: 1em"><summary><progress value="99.71528471528484" max="239168.56943056945" style="width: 2em;"></progress>
            <code>http.client</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.100 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.04%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="51.096903096903134" max="239168.56943056945" style="width: 2em;"></progress>
            <code>email.parser</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.051 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="51.096903096903134" max="239168.56943056945" style="width: 2em;"></progress>
            <code>email.feedparser</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.051 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="51.096903096903134" max="239168.56943056945" style="width: 2em;"></progress>
            <code>email._policybase</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.051 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="51.096903096903134" max="239168.56943056945" style="width: 2em;"></progress>
            <code>email.utils</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.051 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="51.096903096903134" max="239168.56943056945" style="width: 2em;"></progress>
            <code>email._parseaddr</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.051 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="51.096903096903134" max="239168.56943056945" style="width: 2em;"></progress>
            <code>calendar</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.051 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </summary><div style="padding-left: 2em"><progress value="51.096903096903134" max="239168.56943056945" style="width: 2em;"></progress>
            <code>locale</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.051 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </div></details>
</details>
</details>
</details>
</details>
</details>
</details>
<details style="padding-left: 1em"><summary><progress value="39.64435564435564" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.internal.runtime</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.040 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="39.64435564435564" max="239168.56943056945" style="width: 2em;"></progress>
            <code>uuid</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.040 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </summary><div style="padding-left: 2em"><progress value="39.64435564435564" max="239168.56943056945" style="width: 2em;"></progress>
            <code>platform</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.040 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </div></details>
</details>
<details style="padding-left: 1em"><summary><progress value="30.403596403596396" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.internal.encoding</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.030 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.01%)</span>
        </summary><div style="padding-left: 2em"><progress value="30.403596403596396" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.internal._encoding</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.030 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.01%)</span>
        </div></details>
<details style="padding-left: 1em"><summary><progress value="24.616383616383587" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.settings._telemetry</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.025 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.01%)</span>
        </summary><div style="padding-left: 2em"><progress value="24.616383616383587" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.settings._inferred_base_service</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.025 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.01%)</span>
        </div></details>
</details>
<details style="padding-left: 1em"><summary><progress value="384.090909090909" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.settings._agent</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.384 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.16%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="197.1808191808193" max="239168.56943056945" style="width: 2em;"></progress>
            <code>socket</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.197 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.08%)</span>
        </summary><div style="padding-left: 2em"><progress value="197.1808191808193" max="239168.56943056945" style="width: 2em;"></progress>
            <code>selectors</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.197 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.08%)</span>
        </div></details>
<details style="padding-left: 1em"><summary><progress value="186.9100899100897" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.settings</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.187 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.08%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="186.9100899100897" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.settings.http</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.187 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.08%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="130.206793206793" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.internal.utils.cache</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.130 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.05%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="130.206793206793" max="239168.56943056945" style="width: 2em;"></progress>
            <code>inspect</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.130 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.05%)</span>
        </summary><div style="padding-left: 2em"><progress value="48.92007992007984" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ast</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.049 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </div></details>
</details>
<div style="padding-left: 2em"><progress value="56.7032967032967" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.internal.utils.http</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.057 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </div></details>
</details>
</details>
<details style="padding-left: 1em"><summary><progress value="55.31068931068938" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.internal.utils.formats</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.055 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="55.31068931068938" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.internal.compat</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.055 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="55.31068931068938" max="239168.56943056945" style="width: 2em;"></progress>
            <code>pathlib</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.055 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="20.132867132867148" max="239168.56943056945" style="width: 2em;"></progress>
            <code>urllib.parse</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.020 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.01%)</span>
        </summary><div style="padding-left: 2em"><progress value="20.132867132867148" max="239168.56943056945" style="width: 2em;"></progress>
            <code>math</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.020 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.01%)</span>
        </div></details>
</details>
</details>
</details>
</details>
<details style="padding-left: 1em"><summary><progress value="168.00999000999013" max="239168.56943056945" style="width: 2em;"></progress>
            <code>logging</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.168 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.07%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="168.00999000999013" max="239168.56943056945" style="width: 2em;"></progress>
            <code>traceback</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.168 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.07%)</span>
        </summary><div style="padding-left: 2em"><progress value="168.00999000999013" max="239168.56943056945" style="width: 2em;"></progress>
            <code>contextlib</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.168 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.07%)</span>
        </div></details>
</details>
</details>
<details style="padding-left: 1em"><summary><progress value="308.3786213786216" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.settings._config</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.308 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.13%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="89.47152847152847" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.internal.gitmetadata</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.089 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.04%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="89.47152847152847" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.ext.ci</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.089 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.04%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="43.24275724275731" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.ext.git</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.043 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </summary><div style="padding-left: 2em"><progress value="43.24275724275731" max="239168.56943056945" style="width: 2em;"></progress>
            <code>shutil</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.043 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </div></details>
</details>
</details>
</details>
<details style="padding-left: 1em"><summary><progress value="177.65334665334677" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.trace</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.178 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.07%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="64.8061938061939" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace._trace.filters</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.065 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.03%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="64.8061938061939" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace._trace.processor</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.065 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.03%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="26.657342657342667" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace._trace.sampler</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.027 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.01%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="26.657342657342667" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace._trace.span</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.027 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.01%)</span>
        </summary><div style="padding-left: 2em"><progress value="26.657342657342667" max="239168.56943056945" style="width: 2em;"></progress>
            <code>pprint</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.027 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.01%)</span>
        </div></details>
</details>
</details>
</details>
<div style="padding-left: 2em"><progress value="41.19780219780216" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace._trace.tracer</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.041 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </div></details>
<details style="padding-left: 1em"><summary><progress value="55.2907092907094" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace._monkey</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.055 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="55.2907092907094" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.appsec._listeners</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.055 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="55.2907092907094" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.internal.core</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.055 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </summary><div style="padding-left: 2em"><progress value="55.2907092907094" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.internal.core.event_hub</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.055 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </div></details>
</details>
</details>
<details style="padding-left: 1em"><summary><progress value="50.40259740259745" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.internal._unpatched</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.050 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="16.596403596403604" max="239168.56943056945" style="width: 2em;"></progress>
            <code>json</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.017 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.01%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="16.596403596403604" max="239168.56943056945" style="width: 2em;"></progress>
            <code>json.decoder</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.017 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.01%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="16.596403596403604" max="239168.56943056945" style="width: 2em;"></progress>
            <code>json.scanner</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.017 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.01%)</span>
        </summary><div style="padding-left: 2em"><progress value="16.596403596403604" max="239168.56943056945" style="width: 2em;"></progress>
            <code>_json</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.017 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.01%)</span>
        </div></details>
</details>
</details>
</details>
</details>
<details style="padding-left: 1em"><summary><progress value="2527.09090909091" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.bootstrap.sitecustomize</code>
            <span style="color: #888; font-size:small; font-family: arial;">2.527 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(1.06%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="2479.511488511489" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.bootstrap.preload</code>
            <span style="color: #888; font-size:small; font-family: arial;">2.480 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(1.04%)</span>
        </summary><div style="padding-left: 2em"><progress value="973.8671328671326" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.internal.remoteconfig.client</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.974 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.41%)</span>
        </div><details style="padding-left: 1em"><summary><progress value="195.93806193806176" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.internal.runtime.runtime_metrics</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.196 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.08%)</span>
        </summary><details style="padding-left: 1em"><summary><progress value="195.93806193806176" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.internal.runtime.metric_collectors</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.196 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.08%)</span>
        </summary><div style="padding-left: 2em"><progress value="195.93806193806176" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.internal.runtime.collector</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.196 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.08%)</span>
        </div></details>
</details>
<div style="padding-left: 2em"><progress value="73.53246753246754" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.settings.profiling</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.074 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.03%)</span>
        </div><div style="padding-left: 2em"><progress value="52.88311688311683" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.internal.symbol_db.remoteconfig</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.053 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </div><div style="padding-left: 2em"><progress value="49.25374625374616" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace.internal.flare.flare</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.049 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </div></details>
<div style="padding-left: 2em"><progress value="47.57942057942057" max="239168.56943056945" style="width: 2em;"></progress>
            <code>ddtrace._trace.trace_handlers</code>
            <span style="color: #888; font-size:small; font-family: arial;">0.048 ms</span>
            <span style="color: #888; font-size:small; font-family: arial;">(0.02%)</span>
        </div></details>
</details>



<!-- thollander/actions-comment-pull-request "import_analysis" -->
author_association: CONTRIBUTOR
user: login: pr-commenter[bot]
created_at: 2025-05-23T20:19:23Z
body: ## Benchmarks

Benchmark execution time: 2025-05-23 20:19:20

Comparing candidate commit 0a237bb4d691b267a4a23555f60498a9b1a2a23f in PR branch `taegyunkim/collector-recorder-optional` with baseline commit 185176e115ff335abadd177661995302a362410c in branch `main`.

Found 0 performance improvements and 3 performance regressions! Performance is the same for 510 metrics, 7 unstable metrics.

#### scenario:iast_aspects-ospathbasename_aspect

- 🟥 `execution_time` [+513.796ns; +762.098ns] or [+12.389%; +18.377%]

#### scenario:iast_aspects-swapcase_aspect

- 🟥 `execution_time` [+196.906ns; +248.665ns] or [+7.843%; +9.905%]

#### scenario:iast_aspects-upper_aspect

- 🟥 `execution_time` [+216.674ns; +284.741ns] or [+9.473%; +12.449%]




author_association: NONE