-
Notifications
You must be signed in to change notification settings - Fork 469
perf(profiling): do slightly less work when possible #15025
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
perf(profiling): do slightly less work when possible #15025
Conversation
|
|
Bootstrap import analysisComparison of import times between this PR and base. SummaryThe average import time from this PR is: 238 ± 3 ms. The average import time from base is: 240 ± 3 ms. The import time difference between this PR and base is: -2.0 ± 0.1 ms. Import time breakdownThe following import paths have shrunk:
|
e63353d to
0a2ef15
Compare
Performance SLOsComparing candidate kowalski/perf-profiling-do-slightly-less-work-if-not-needed (0a2ef15) with baseline main (5fa0681) 📈 Performance Regressions (2 suites)📈 iastaspectsospath - 24/24✅ ospathbasename_aspectTime: ✅ 5.065µs (SLO: <10.000µs 📉 -49.3%) vs baseline: 📈 +18.0% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +6.0% ✅ ospathbasename_noaspectTime: ✅ 1.088µs (SLO: <10.000µs 📉 -89.1%) vs baseline: +0.3% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +6.2% ✅ ospathjoin_aspectTime: ✅ 7.026µs (SLO: <10.000µs 📉 -29.7%) vs baseline: 📈 +13.2% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +6.1% ✅ ospathjoin_noaspectTime: ✅ 2.304µs (SLO: <10.000µs 📉 -77.0%) vs baseline: +0.3% Memory: ✅ 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +6.0% ✅ ospathnormcase_aspectTime: ✅ 3.856µs (SLO: <10.000µs 📉 -61.4%) vs baseline: +8.0% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +6.0% ✅ ospathnormcase_noaspectTime: ✅ 0.566µs (SLO: <10.000µs 📉 -94.3%) vs baseline: -0.1% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +6.1% ✅ ospathsplit_aspectTime: ✅ 4.772µs (SLO: <10.000µs 📉 -52.3%) vs baseline: -3.6% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +6.0% ✅ ospathsplit_noaspectTime: ✅ 1.599µs (SLO: <10.000µs 📉 -84.0%) vs baseline: -0.4% Memory: ✅ 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +5.8% ✅ ospathsplitdrive_aspectTime: ✅ 3.654µs (SLO: <10.000µs 📉 -63.5%) vs baseline: -2.1% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +6.1% ✅ ospathsplitdrive_noaspectTime: ✅ 0.697µs (SLO: <10.000µs 📉 -93.0%) vs baseline: ~same Memory: ✅ 38.142MB (SLO: <39.000MB -2.2%) vs baseline: +6.3% ✅ ospathsplitext_aspectTime: ✅ 4.548µs (SLO: <10.000µs 📉 -54.5%) vs baseline: -0.7% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +6.2% ✅ ospathsplitext_noaspectTime: ✅ 1.381µs (SLO: <10.000µs 📉 -86.2%) vs baseline: -0.6% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +5.8% 📈 telemetryaddmetric - 30/30✅ 1-count-metric-1-timesTime: ✅ 2.950µs (SLO: <20.000µs 📉 -85.3%) vs baseline: -0.3% Memory: ✅ 32.145MB (SLO: <34.000MB -5.5%) vs baseline: +4.9% ✅ 1-count-metrics-100-timesTime: ✅ 200.280µs (SLO: <220.000µs -9.0%) vs baseline: -2.4% Memory: ✅ 32.204MB (SLO: <34.000MB -5.3%) vs baseline: +5.0% ✅ 1-distribution-metric-1-timesTime: ✅ 3.254µs (SLO: <20.000µs 📉 -83.7%) vs baseline: -2.2% Memory: ✅ 32.165MB (SLO: <34.000MB -5.4%) vs baseline: +4.9% ✅ 1-distribution-metrics-100-timesTime: ✅ 212.994µs (SLO: <220.000µs -3.2%) vs baseline: -1.1% Memory: ✅ 32.185MB (SLO: <34.000MB -5.3%) vs baseline: +4.9% ✅ 1-gauge-metric-1-timesTime: ✅ 2.428µs (SLO: <20.000µs 📉 -87.9%) vs baseline: 📈 +11.0% Memory: ✅ 32.165MB (SLO: <34.000MB -5.4%) vs baseline: +5.1% ✅ 1-gauge-metrics-100-timesTime: ✅ 137.405µs (SLO: <150.000µs -8.4%) vs baseline: +0.6% Memory: ✅ 32.204MB (SLO: <34.000MB -5.3%) vs baseline: +5.0% ✅ 1-rate-metric-1-timesTime: ✅ 3.087µs (SLO: <20.000µs 📉 -84.6%) vs baseline: +0.2% Memory: ✅ 32.185MB (SLO: <34.000MB -5.3%) vs baseline: +5.0% ✅ 1-rate-metrics-100-timesTime: ✅ 213.122µs (SLO: <250.000µs 📉 -14.8%) vs baseline: -1.8% Memory: ✅ 32.204MB (SLO: <34.000MB -5.3%) vs baseline: +5.2% ✅ 100-count-metrics-100-timesTime: ✅ 20.057ms (SLO: <22.000ms -8.8%) vs baseline: -3.3% Memory: ✅ 32.185MB (SLO: <34.000MB -5.3%) vs baseline: +5.1% ✅ 100-distribution-metrics-100-timesTime: ✅ 2.271ms (SLO: <2.300ms 🟡 -1.3%) vs baseline: +0.3% Memory: ✅ 32.204MB (SLO: <34.000MB -5.3%) vs baseline: +4.9% ✅ 100-gauge-metrics-100-timesTime: ✅ 1.421ms (SLO: <1.550ms -8.3%) vs baseline: +1.4% Memory: ✅ 32.145MB (SLO: <34.000MB -5.5%) vs baseline: +4.8% ✅ 100-rate-metrics-100-timesTime: ✅ 2.253ms (SLO: <2.550ms 📉 -11.6%) vs baseline: +0.6% Memory: ✅ 32.224MB (SLO: <34.000MB -5.2%) vs baseline: +5.0% ✅ flush-1-metricTime: ✅ 4.606µs (SLO: <20.000µs 📉 -77.0%) vs baseline: +3.3% Memory: ✅ 32.204MB (SLO: <34.000MB -5.3%) vs baseline: +5.3% ✅ flush-100-metricsTime: ✅ 174.480µs (SLO: <250.000µs 📉 -30.2%) vs baseline: -0.3% Memory: ✅ 32.185MB (SLO: <34.000MB -5.3%) vs baseline: +5.0% ✅ flush-1000-metricsTime: ✅ 2.119ms (SLO: <2.500ms 📉 -15.2%) vs baseline: +0.5% Memory: ✅ 32.971MB (SLO: <34.500MB -4.4%) vs baseline: +5.0% 🟡 Near SLO Breach (3 suites)🟡 djangosimple - 30/30✅ appsecTime: ✅ 20.547ms (SLO: <22.300ms -7.9%) vs baseline: +0.8% Memory: ✅ 65.333MB (SLO: <67.000MB -2.5%) vs baseline: +5.1% ✅ exception-replay-enabledTime: ✅ 1.345ms (SLO: <1.450ms -7.3%) vs baseline: -0.5% Memory: ✅ 64.712MB (SLO: <67.000MB -3.4%) vs baseline: +4.8% ✅ iastTime: ✅ 20.461ms (SLO: <22.250ms -8.0%) vs baseline: +0.3% Memory: ✅ 65.274MB (SLO: <67.000MB -2.6%) vs baseline: +4.9% ✅ profilerTime: ✅ 15.260ms (SLO: <16.550ms -7.8%) vs baseline: +0.4% Memory: ✅ 54.146MB (SLO: <54.500MB 🟡 -0.6%) vs baseline: +5.4% ✅ resource-renamingTime: ✅ 20.600ms (SLO: <21.750ms -5.3%) vs baseline: +0.4% Memory: ✅ 65.274MB (SLO: <67.000MB -2.6%) vs baseline: +5.0% ✅ span-code-originTime: ✅ 25.352ms (SLO: <28.200ms 📉 -10.1%) vs baseline: ~same Memory: ✅ 67.448MB (SLO: <69.500MB -3.0%) vs baseline: +4.7% ✅ tracerTime: ✅ 20.541ms (SLO: <21.750ms -5.6%) vs baseline: +0.8% Memory: ✅ 65.333MB (SLO: <67.000MB -2.5%) vs baseline: +5.0% ✅ tracer-and-profilerTime: ✅ 22.042ms (SLO: <23.500ms -6.2%) vs baseline: ~same Memory: ✅ 66.807MB (SLO: <67.500MB 🟡 -1.0%) vs baseline: +5.1% ✅ tracer-dont-create-db-spansTime: ✅ 19.401ms (SLO: <21.500ms -9.8%) vs baseline: +0.7% Memory: ✅ 65.294MB (SLO: <66.000MB 🟡 -1.1%) vs baseline: +4.9% ✅ tracer-minimalTime: ✅ 16.714ms (SLO: <17.500ms -4.5%) vs baseline: +0.6% Memory: ✅ 65.214MB (SLO: <66.000MB 🟡 -1.2%) vs baseline: +4.9% ✅ tracer-nativeTime: ✅ 20.489ms (SLO: <21.750ms -5.8%) vs baseline: +0.2% Memory: ✅ 71.428MB (SLO: <72.500MB 🟡 -1.5%) vs baseline: +5.5% ✅ tracer-no-cachesTime: ✅ 18.483ms (SLO: <19.650ms -5.9%) vs baseline: +0.4% Memory: ✅ 65.273MB (SLO: <67.000MB -2.6%) vs baseline: +5.0% ✅ tracer-no-databasesTime: ✅ 18.817ms (SLO: <20.100ms -6.4%) vs baseline: +0.6% Memory: ✅ 65.274MB (SLO: <67.000MB -2.6%) vs baseline: +4.9% ✅ tracer-no-middlewareTime: ✅ 20.207ms (SLO: <21.500ms -6.0%) vs baseline: +0.4% Memory: ✅ 65.266MB (SLO: <67.000MB -2.6%) vs baseline: +4.9% ✅ tracer-no-templatesTime: ✅ 20.359ms (SLO: <22.000ms -7.5%) vs baseline: +0.4% Memory: ✅ 65.313MB (SLO: <67.000MB -2.5%) vs baseline: +5.1% 🟡 errortrackingdjangosimple - 6/6✅ errortracking-enabled-allTime: ✅ 18.083ms (SLO: <19.850ms -8.9%) vs baseline: +0.2% Memory: ✅ 65.250MB (SLO: <66.500MB 🟡 -1.9%) vs baseline: +5.0% ✅ errortracking-enabled-userTime: ✅ 18.301ms (SLO: <19.400ms -5.7%) vs baseline: +1.5% Memory: ✅ 65.205MB (SLO: <66.500MB 🟡 -1.9%) vs baseline: +4.9% ✅ tracer-enabledTime: ✅ 18.276ms (SLO: <19.450ms -6.0%) vs baseline: +1.6% Memory: ✅ 65.219MB (SLO: <66.500MB 🟡 -1.9%) vs baseline: +4.8% 🟡 flasksimple - 18/18✅ appsec-getTime: ✅ 4.584ms (SLO: <4.750ms -3.5%) vs baseline: +0.3% Memory: ✅ 61.912MB (SLO: <65.000MB -4.8%) vs baseline: +4.7% ✅ appsec-postTime: ✅ 6.621ms (SLO: <6.750ms 🟡 -1.9%) vs baseline: ~same Memory: ✅ 62.064MB (SLO: <65.000MB -4.5%) vs baseline: +4.9% ✅ appsec-telemetryTime: ✅ 4.580ms (SLO: <4.750ms -3.6%) vs baseline: -0.4% Memory: ✅ 61.932MB (SLO: <65.000MB -4.7%) vs baseline: +4.8% ✅ debuggerTime: ✅ 1.850ms (SLO: <2.000ms -7.5%) vs baseline: ~same Memory: ✅ 45.416MB (SLO: <47.000MB -3.4%) vs baseline: +4.9% ✅ iast-getTime: ✅ 1.856ms (SLO: <2.000ms -7.2%) vs baseline: ~same Memory: ✅ 42.428MB (SLO: <49.000MB 📉 -13.4%) vs baseline: +4.9% ✅ profilerTime: ✅ 1.913ms (SLO: <2.100ms -8.9%) vs baseline: +0.2% Memory: ✅ 46.576MB (SLO: <47.000MB 🟡 -0.9%) vs baseline: +5.1% ✅ resource-renamingTime: ✅ 3.364ms (SLO: <3.650ms -7.8%) vs baseline: -0.2% Memory: ✅ 52.180MB (SLO: <53.500MB -2.5%) vs baseline: +4.6% ✅ tracerTime: ✅ 3.354ms (SLO: <3.650ms -8.1%) vs baseline: ~same Memory: ✅ 52.239MB (SLO: <53.500MB -2.4%) vs baseline: +4.8% ✅ tracer-nativeTime: ✅ 3.357ms (SLO: <3.650ms -8.0%) vs baseline: ~same Memory: ✅ 58.175MB (SLO: <60.000MB -3.0%) vs baseline: +4.7%
|
Description
This PR updates a small part of the logic in the Profiler / Stack V2 to only fetch the
filename_strif we are going to use it (which may not be the case if we are pushing a "Task name frame".Risks
As far as I can tell, this is a functional no-op as it is effectively only deferring the declaration (and populating) of a variable –
filename_str– to later in the code.