-
Notifications
You must be signed in to change notification settings - Fork 467
chore(profiling): remove _self_ prefixes from the wrapped lock class's attributes
#15125
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
|
f18fcbf to
79f99ab
Compare
Bootstrap import analysisComparison of import times between this PR and base. SummaryThe average import time from this PR is: 209 ± 3 ms. The average import time from base is: 212 ± 3 ms. The import time difference between this PR and base is: -2.7 ± 0.1 ms. Import time breakdownThe following import paths have shrunk:
|
Performance SLOsComparing candidate vlad/lockprof-remove-self-prefixes (b344fef) with baseline main (6f02abc) 📈 Performance Regressions (2 suites)📈 iastaspectsospath - 24/24✅ ospathbasename_aspectTime: ✅ 4.285µs (SLO: <10.000µs 📉 -57.1%) vs baseline: -0.2% Memory: ✅ 37.493MB (SLO: <39.000MB -3.9%) vs baseline: +4.6% ✅ ospathbasename_noaspectTime: ✅ 1.086µs (SLO: <10.000µs 📉 -89.1%) vs baseline: -0.3% Memory: ✅ 37.552MB (SLO: <39.000MB -3.7%) vs baseline: +4.9% ✅ ospathjoin_aspectTime: ✅ 7.115µs (SLO: <10.000µs 📉 -28.8%) vs baseline: 📈 +15.2% Memory: ✅ 37.493MB (SLO: <39.000MB -3.9%) vs baseline: +4.9% ✅ ospathjoin_noaspectTime: ✅ 2.326µs (SLO: <10.000µs 📉 -76.7%) vs baseline: -0.2% Memory: ✅ 37.572MB (SLO: <39.000MB -3.7%) vs baseline: +5.0% ✅ ospathnormcase_aspectTime: ✅ 4.018µs (SLO: <10.000µs 📉 -59.8%) vs baseline: 📈 +15.5% Memory: ✅ 37.513MB (SLO: <39.000MB -3.8%) vs baseline: +4.6% ✅ ospathnormcase_noaspectTime: ✅ 0.573µs (SLO: <10.000µs 📉 -94.3%) vs baseline: +0.4% Memory: ✅ 37.513MB (SLO: <39.000MB -3.8%) vs baseline: +4.9% ✅ ospathsplit_aspectTime: ✅ 4.879µs (SLO: <10.000µs 📉 -51.2%) vs baseline: +0.5% Memory: ✅ 37.650MB (SLO: <39.000MB -3.5%) vs baseline: +5.2% ✅ ospathsplit_noaspectTime: ✅ 1.608µs (SLO: <10.000µs 📉 -83.9%) vs baseline: +0.2% Memory: ✅ 37.552MB (SLO: <39.000MB -3.7%) vs baseline: +4.5% ✅ ospathsplitdrive_aspectTime: ✅ 3.694µs (SLO: <10.000µs 📉 -63.1%) vs baseline: +0.1% Memory: ✅ 37.473MB (SLO: <39.000MB -3.9%) vs baseline: +4.6% ✅ ospathsplitdrive_noaspectTime: ✅ 0.696µs (SLO: <10.000µs 📉 -93.0%) vs baseline: -0.3% Memory: ✅ 37.532MB (SLO: <39.000MB -3.8%) vs baseline: +4.8% ✅ ospathsplitext_aspectTime: ✅ 4.577µs (SLO: <10.000µs 📉 -54.2%) vs baseline: +0.5% Memory: ✅ 37.493MB (SLO: <39.000MB -3.9%) vs baseline: +4.5% ✅ ospathsplitext_noaspectTime: ✅ 1.384µs (SLO: <10.000µs 📉 -86.2%) vs baseline: -0.3% Memory: ✅ 37.591MB (SLO: <39.000MB -3.6%) vs baseline: +4.9% 📈 telemetryaddmetric - 30/30✅ 1-count-metric-1-timesTime: ✅ 3.289µs (SLO: <20.000µs 📉 -83.6%) vs baseline: 📈 +11.9% Memory: ✅ 31.929MB (SLO: <34.000MB -6.1%) vs baseline: +5.0% ✅ 1-count-metrics-100-timesTime: ✅ 200.317µs (SLO: <220.000µs -8.9%) vs baseline: +0.6% Memory: ✅ 31.909MB (SLO: <34.000MB -6.1%) vs baseline: +4.9% ✅ 1-distribution-metric-1-timesTime: ✅ 3.285µs (SLO: <20.000µs 📉 -83.6%) vs baseline: +1.4% Memory: ✅ 31.831MB (SLO: <34.000MB -6.4%) vs baseline: +4.2% ✅ 1-distribution-metrics-100-timesTime: ✅ 213.465µs (SLO: <220.000µs -3.0%) vs baseline: +0.5% Memory: ✅ 31.949MB (SLO: <34.000MB -6.0%) vs baseline: +5.1% ✅ 1-gauge-metric-1-timesTime: ✅ 2.466µs (SLO: <20.000µs 📉 -87.7%) vs baseline: 📈 +13.6% Memory: ✅ 32.027MB (SLO: <34.000MB -5.8%) vs baseline: +5.2% ✅ 1-gauge-metrics-100-timesTime: ✅ 136.588µs (SLO: <150.000µs -8.9%) vs baseline: +0.2% Memory: ✅ 32.008MB (SLO: <34.000MB -5.9%) vs baseline: +5.3% ✅ 1-rate-metric-1-timesTime: ✅ 3.459µs (SLO: <20.000µs 📉 -82.7%) vs baseline: 📈 +12.8% Memory: ✅ 31.929MB (SLO: <34.000MB -6.1%) vs baseline: +4.8% ✅ 1-rate-metrics-100-timesTime: ✅ 213.666µs (SLO: <250.000µs 📉 -14.5%) vs baseline: +1.2% Memory: ✅ 31.949MB (SLO: <34.000MB -6.0%) vs baseline: +4.9% ✅ 100-count-metrics-100-timesTime: ✅ 20.087ms (SLO: <22.000ms -8.7%) vs baseline: +0.7% Memory: ✅ 31.988MB (SLO: <34.000MB -5.9%) vs baseline: +4.9% ✅ 100-distribution-metrics-100-timesTime: ✅ 2.218ms (SLO: <2.300ms -3.5%) vs baseline: -0.4% Memory: ✅ 31.909MB (SLO: <34.000MB -6.1%) vs baseline: +4.7% ✅ 100-gauge-metrics-100-timesTime: ✅ 1.415ms (SLO: <1.550ms -8.7%) vs baseline: +1.2% Memory: ✅ 31.929MB (SLO: <34.000MB -6.1%) vs baseline: +4.9% ✅ 100-rate-metrics-100-timesTime: ✅ 2.189ms (SLO: <2.550ms 📉 -14.2%) vs baseline: +1.1% Memory: ✅ 31.890MB (SLO: <34.000MB -6.2%) vs baseline: +4.6% ✅ flush-1-metricTime: ✅ 4.470µs (SLO: <20.000µs 📉 -77.7%) vs baseline: +0.2% Memory: ✅ 31.909MB (SLO: <34.000MB -6.1%) vs baseline: +4.7% ✅ flush-100-metricsTime: ✅ 174.424µs (SLO: <250.000µs 📉 -30.2%) vs baseline: -0.4% Memory: ✅ 31.909MB (SLO: <34.000MB -6.1%) vs baseline: +4.9% ✅ flush-1000-metricsTime: ✅ 2.135ms (SLO: <2.500ms 📉 -14.6%) vs baseline: -0.4% Memory: ✅ 32.657MB (SLO: <34.500MB -5.3%) vs baseline: +4.5% 🟡 Near SLO Breach (6 suites)🟡 djangosimple - 30/30✅ appsecTime: ✅ 20.412ms (SLO: <22.300ms -8.5%) vs baseline: -0.6% Memory: ✅ 66.296MB (SLO: <67.000MB 🟡 -1.1%) vs baseline: +5.0% ✅ exception-replay-enabledTime: ✅ 1.344ms (SLO: <1.450ms -7.3%) vs baseline: -0.7% Memory: ✅ 64.254MB (SLO: <67.000MB -4.1%) vs baseline: +4.7% ✅ iastTime: ✅ 20.448ms (SLO: <22.250ms -8.1%) vs baseline: -0.2% Memory: ✅ 66.198MB (SLO: <67.000MB 🟡 -1.2%) vs baseline: +4.9% ✅ profilerTime: ✅ 15.436ms (SLO: <16.550ms -6.7%) vs baseline: -0.8% Memory: ✅ 53.963MB (SLO: <54.500MB 🟡 -1.0%) vs baseline: +4.7% ✅ resource-renamingTime: ✅ 20.540ms (SLO: <21.750ms -5.6%) vs baseline: ~same Memory: ✅ 66.241MB (SLO: <67.000MB 🟡 -1.1%) vs baseline: +5.1% ✅ span-code-originTime: ✅ 25.352ms (SLO: <28.200ms 📉 -10.1%) vs baseline: -0.5% Memory: ✅ 67.312MB (SLO: <69.500MB -3.1%) vs baseline: +5.0% ✅ tracerTime: ✅ 20.457ms (SLO: <21.750ms -5.9%) vs baseline: -0.2% Memory: ✅ 66.218MB (SLO: <67.000MB 🟡 -1.2%) vs baseline: +5.0% ✅ tracer-and-profilerTime: ✅ 22.514ms (SLO: <23.500ms -4.2%) vs baseline: -0.9% Memory: ✅ 67.771MB (SLO: <68.000MB 🟡 -0.3%) vs baseline: +4.8% ✅ tracer-dont-create-db-spansTime: ✅ 19.312ms (SLO: <21.500ms 📉 -10.2%) vs baseline: -0.3% Memory: ✅ 66.168MB (SLO: <67.000MB 🟡 -1.2%) vs baseline: +5.0% ✅ tracer-minimalTime: ✅ 16.666ms (SLO: <17.500ms -4.8%) vs baseline: -0.3% Memory: ✅ 66.082MB (SLO: <67.000MB 🟡 -1.4%) vs baseline: +4.9% ✅ tracer-nativeTime: ✅ 20.479ms (SLO: <21.750ms -5.8%) vs baseline: +0.4% Memory: ✅ 67.712MB (SLO: <72.500MB -6.6%) vs baseline: +4.8% ✅ tracer-no-cachesTime: ✅ 18.474ms (SLO: <19.650ms -6.0%) vs baseline: ~same Memory: ✅ 66.138MB (SLO: <67.000MB 🟡 -1.3%) vs baseline: +5.0% ✅ tracer-no-databasesTime: ✅ 18.824ms (SLO: <20.100ms -6.3%) vs baseline: +0.2% Memory: ✅ 66.079MB (SLO: <67.000MB 🟡 -1.4%) vs baseline: +5.1% ✅ tracer-no-middlewareTime: ✅ 20.170ms (SLO: <21.500ms -6.2%) vs baseline: -0.2% Memory: ✅ 66.168MB (SLO: <67.000MB 🟡 -1.2%) vs baseline: +4.8% ✅ tracer-no-templatesTime: ✅ 20.310ms (SLO: <22.000ms -7.7%) vs baseline: ~same Memory: ✅ 66.231MB (SLO: <67.000MB 🟡 -1.1%) vs baseline: +4.9% 🟡 errortrackingdjangosimple - 6/6✅ errortracking-enabled-allTime: ✅ 18.184ms (SLO: <19.850ms -8.4%) vs baseline: +0.6% Memory: ✅ 66.148MB (SLO: <66.500MB 🟡 -0.5%) vs baseline: +4.8% ✅ errortracking-enabled-userTime: ✅ 18.110ms (SLO: <19.400ms -6.6%) vs baseline: +0.2% Memory: ✅ 66.155MB (SLO: <66.500MB 🟡 -0.5%) vs baseline: +4.9% ✅ tracer-enabledTime: ✅ 18.072ms (SLO: <19.450ms -7.1%) vs baseline: ~same Memory: ✅ 65.795MB (SLO: <66.500MB 🟡 -1.1%) vs baseline: +4.8% 🟡 errortrackingflasksqli - 6/6✅ errortracking-enabled-allTime: ✅ 2.087ms (SLO: <2.300ms -9.3%) vs baseline: +0.7% Memory: ✅ 52.593MB (SLO: <53.500MB 🟡 -1.7%) vs baseline: +4.8% ✅ errortracking-enabled-userTime: ✅ 2.070ms (SLO: <2.250ms -8.0%) vs baseline: ~same Memory: ✅ 52.632MB (SLO: <53.500MB 🟡 -1.6%) vs baseline: +4.8% ✅ tracer-enabledTime: ✅ 2.071ms (SLO: <2.300ms -10.0%) vs baseline: -0.4% Memory: ✅ 52.691MB (SLO: <53.500MB 🟡 -1.5%) vs baseline: +5.1% 🟡 flasksimple - 18/18✅ appsec-getTime: ✅ 4.598ms (SLO: <4.750ms -3.2%) vs baseline: +0.3% Memory: ✅ 62.312MB (SLO: <65.000MB -4.1%) vs baseline: +4.9% ✅ appsec-postTime: ✅ 6.628ms (SLO: <6.750ms 🟡 -1.8%) vs baseline: -0.4% Memory: ✅ 62.291MB (SLO: <65.000MB -4.2%) vs baseline: +4.8% ✅ appsec-telemetryTime: ✅ 4.592ms (SLO: <4.750ms -3.3%) vs baseline: +0.2% Memory: ✅ 62.248MB (SLO: <65.000MB -4.2%) vs baseline: +4.7% ✅ debuggerTime: ✅ 1.857ms (SLO: <2.000ms -7.1%) vs baseline: +0.2% Memory: ✅ 45.387MB (SLO: <47.000MB -3.4%) vs baseline: +5.2% ✅ iast-getTime: ✅ 1.855ms (SLO: <2.000ms -7.2%) vs baseline: ~same Memory: ✅ 42.140MB (SLO: <49.000MB 📉 -14.0%) vs baseline: +4.8% ✅ profilerTime: ✅ 1.910ms (SLO: <2.100ms -9.1%) vs baseline: ~same Memory: ✅ 46.604MB (SLO: <47.000MB 🟡 -0.8%) vs baseline: +4.5% ✅ resource-renamingTime: ✅ 3.363ms (SLO: <3.650ms -7.9%) vs baseline: +0.2% Memory: ✅ 52.521MB (SLO: <53.500MB 🟡 -1.8%) vs baseline: +4.8% ✅ tracerTime: ✅ 3.355ms (SLO: <3.650ms -8.1%) vs baseline: +0.4% Memory: ✅ 52.544MB (SLO: <53.500MB 🟡 -1.8%) vs baseline: +4.7% ✅ tracer-nativeTime: ✅ 3.356ms (SLO: <3.650ms -8.1%) vs baseline: +0.3% Memory: ✅ 54.134MB (SLO: <60.000MB -9.8%) vs baseline: +4.9% 🟡 flasksqli - 6/6✅ appsec-enabledTime: ✅ 3.970ms (SLO: <4.200ms -5.5%) vs baseline: -0.5% Memory: ✅ 62.423MB (SLO: <66.000MB -5.4%) vs baseline: +5.0% ✅ iast-enabledTime: ✅ 2.448ms (SLO: <2.800ms 📉 -12.6%) vs baseline: +0.2% Memory: ✅ 59.218MB (SLO: <60.000MB 🟡 -1.3%) vs baseline: +4.8% ✅ tracer-enabledTime: ✅ 2.064ms (SLO: <2.250ms -8.3%) vs baseline: +0.2% Memory: ✅ 52.691MB (SLO: <54.500MB -3.3%) vs baseline: +4.9% 🟡 recursivecomputation - 8/8✅ deepTime: ✅ 308.503ms (SLO: <320.950ms -3.9%) vs baseline: -0.1% Memory: ✅ 32.794MB (SLO: <34.500MB -4.9%) vs baseline: +5.0% ✅ deep-profiledTime: ✅ 327.680ms (SLO: <359.150ms -8.8%) vs baseline: ~same Memory: ✅ 38.294MB (SLO: <39.000MB 🟡 -1.8%) vs baseline: +4.1% ✅ mediumTime: ✅ 7.009ms (SLO: <7.400ms -5.3%) vs baseline: +0.2% Memory: ✅ 31.949MB (SLO: <34.000MB -6.0%) vs baseline: +4.7% ✅ shallowTime: ✅ 0.943ms (SLO: <1.050ms 📉 -10.2%) vs baseline: ~same Memory: ✅ 31.909MB (SLO: <34.000MB -6.1%) vs baseline: +4.8%
|
79f99ab to
9676eb2
Compare
ddtrace/profiling/collector/_lock.py
Outdated
| for attribute in dir(value): | ||
| try: | ||
| if not attribute.startswith("__") and getattr(value, attribute) is self: | ||
| self._self_name = attribute |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should separate updating self._self_name (i.e. self.name) from "finding" it.
_find_nameshould not have side effects, since it's really a getter._find_nameis called by_update_name, which also updates the name.
ae8ba4b to
61a52aa
Compare
_self_ prefixes from the wrapped lock class's attributes
0494e29 to
9298f6a
Compare
013c700 to
244ffac
Compare
244ffac to
004bc54
Compare
d00619e to
0b2d5fe
Compare
…rapting' Lock Profiler code
0b2d5fe to
b344fef
Compare
https://datadoghq.atlassian.net/browse/PROF-12854
Description
After
unwrapt'ing the Lock Profiler, we don't need to prefix the wrapped class' attributes with_self_. This iswrapt's requirement to distinguish its class members from those of the class being wrapped.Testing
Risks
none