Skip to content

perf: improve the internal config set function#5872

Merged
BridgeAR merged 2 commits intomasterfrom
watson/speed-up-config-set
Jun 11, 2025
Merged

perf: improve the internal config set function#5872
BridgeAR merged 2 commits intomasterfrom
watson/speed-up-config-set

Conversation

@watson
Copy link
Copy Markdown
Collaborator

@watson watson commented Jun 11, 2025

What does this PR do?

Just an resource/peformance improvement: The function is now almost twice as fast and doesn't create any temprary objects in memory.

Motivation

Plugin Checklist

Additional Notes

The reason why I haven't touched the get and has functions, is because they are about to be removed in #5374

@watson watson requested a review from a team as a code owner June 11, 2025 06:33
@watson watson self-assigned this Jun 11, 2025
Copy link
Copy Markdown
Collaborator Author

watson commented Jun 11, 2025

This stack of pull requests is managed by Graphite. Learn more about stacking.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 11, 2025

Overall package size

Self size: 9.64 MB
Deduped: 104.59 MB
No deduping: 105.1 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.6.0 | 30.47 MB | 30.47 MB | | @datadog/native-appsec | 8.5.2 | 19.33 MB | 19.34 MB | | @datadog/pprof | 5.8.0 | 12.55 MB | 12.92 MB | | @datadog/native-iast-taint-tracking | 4.0.0 | 11.72 MB | 11.73 MB | | @opentelemetry/core | 1.30.1 | 908.66 kB | 7.16 MB | | protobufjs | 7.5.3 | 2.95 MB | 5.6 MB | | @datadog/wasm-js-rewriter | 4.0.1 | 2.85 MB | 3.58 MB | | @datadog/native-metrics | 3.1.1 | 1.02 MB | 1.43 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | import-in-the-middle | 1.14.0 | 120.58 kB | 841.68 kB | | source-map | 0.7.4 | 226 kB | 226 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | lru-cache | 7.18.3 | 133.92 kB | 133.92 kB | | pprof-format | 2.1.0 | 111.69 kB | 111.69 kB | | @datadog/sketches-js | 2.1.1 | 109.9 kB | 109.9 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | ignore | 5.3.2 | 53.63 kB | 53.63 kB | | istanbul-lib-coverage | 3.2.2 | 34.37 kB | 34.37 kB | | rfdc | 1.4.1 | 27.15 kB | 27.15 kB | | @isaacs/ttlcache | 1.4.1 | 25.2 kB | 25.2 kB | | dc-polyfill | 0.1.9 | 25.11 kB | 25.11 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | shell-quote | 1.8.2 | 23.54 kB | 23.54 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | semifies | 1.0.0 | 15.84 kB | 15.84 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | ttl-set | 1.0.0 | 4.61 kB | 9.69 kB | | mutexify | 1.4.0 | 5.71 kB | 8.74 kB | | path-to-regexp | 0.1.12 | 6.6 kB | 6.6 kB | | koalas | 1.0.2 | 6.47 kB | 6.47 kB | | module-details-from-path | 1.0.4 | 3.96 kB | 3.96 kB |

🤖 This report was automatically generated by heaviest-objects-in-the-universe

@codecov
Copy link
Copy Markdown

codecov Bot commented Jun 11, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 80.79%. Comparing base (fab3ee9) to head (d8eb69c).
Report is 3 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #5872      +/-   ##
==========================================
+ Coverage   80.26%   80.79%   +0.53%     
==========================================
  Files         460      464       +4     
  Lines       19795    19910     +115     
==========================================
+ Hits        15888    16086     +198     
+ Misses       3907     3824      -83     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@watson watson force-pushed the watson/speed-up-config-set branch from 549ecd4 to 2fa6887 Compare June 11, 2025 06:37
@pr-commenter
Copy link
Copy Markdown

pr-commenter Bot commented Jun 11, 2025

Benchmarks

Benchmark execution time: 2025-06-11 12:34:48

Comparing candidate commit d8eb69c in PR branch watson/speed-up-config-set with baseline commit fab3ee9 in branch master.

Found 0 performance improvements and 0 performance regressions! Performance is the same for 1268 metrics, 55 unstable metrics.

@datadog-datadog-prod-us1
Copy link
Copy Markdown

datadog-datadog-prod-us1 Bot commented Jun 11, 2025

Datadog Report

Branch report: watson/speed-up-config-set
Commit report: 288cadc
Test service: dd-trace-js-integration-tests

✅ 0 Failed, 1087 Passed, 0 Skipped, 11m 17.94s Total Time

The function is now almost twice as fast and doesn't create any temprary
objects in memory.
@watson watson force-pushed the watson/speed-up-config-set branch from 2fa6887 to c53e6fa Compare June 11, 2025 08:29
BridgeAR
BridgeAR previously approved these changes Jun 11, 2025
@BridgeAR BridgeAR dismissed their stale review June 11, 2025 10:05

Simplify implementation

Copy link
Copy Markdown
Member

@BridgeAR BridgeAR left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM while I believe we can simplify it quite a bit with my suggestion

Comment thread packages/datadog-core/src/utils/src/set.js Outdated
Co-authored-by: Ruben Bridgewater <ruben@bridgewater.de>
@BridgeAR BridgeAR enabled auto-merge (squash) June 11, 2025 12:33
@BridgeAR BridgeAR merged commit ed2469e into master Jun 11, 2025
431 of 533 checks passed
@BridgeAR BridgeAR deleted the watson/speed-up-config-set branch June 11, 2025 12:35
ghost pushed a commit that referenced this pull request Jun 12, 2025
The function is now almost twice as fast and doesn't create any temprary
objects in memory.
This was referenced Jun 12, 2025
ghost pushed a commit that referenced this pull request Jun 12, 2025
The function is now almost twice as fast and doesn't create any temprary
objects in memory.
szegedi pushed a commit that referenced this pull request Jun 12, 2025
The function is now almost twice as fast and doesn't create any temprary
objects in memory.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants