[Debugger] improve snapshot performance#5419
Conversation
Overall package sizeSelf size: 9.14 MB Dependency sizes| name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.5.0 | 29.83 MB | 29.83 MB | | @datadog/native-appsec | 8.5.1 | 19.26 MB | 19.27 MB | | @datadog/native-iast-taint-tracking | 3.3.0 | 13.77 MB | 13.78 MB | | @datadog/pprof | 5.6.0 | 9.79 MB | 10.16 MB | | @opentelemetry/core | 1.30.1 | 908.66 kB | 7.16 MB | | protobufjs | 7.4.0 | 2.77 MB | 5.42 MB | | @datadog/native-iast-rewriter | 2.8.0 | 2.6 MB | 2.74 MB | | @datadog/native-metrics | 3.1.0 | 1.06 MB | 1.46 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | import-in-the-middle | 1.13.1 | 117.64 kB | 839.26 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.0 | 29.34 kB | 29.34 kB | | rfdc | 1.4.1 | 27.15 kB | 27.15 kB | | @isaacs/ttlcache | 1.4.1 | 25.2 kB | 25.2 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | dc-polyfill | 0.1.6 | 24.56 kB | 24.56 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 | | 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.3 | 4.47 kB | 4.47 kB |🤖 This report was automatically generated by heaviest-objects-in-the-universe |
Datadog ReportBranch report: ✅ 0 Failed, 928 Passed, 0 Skipped, 12m 33.24s Total Time |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #5419 +/- ##
==========================================
+ Coverage 78.99% 79.18% +0.18%
==========================================
Files 505 512 +7
Lines 22899 23156 +257
==========================================
+ Hits 18090 18337 +247
- Misses 4809 4819 +10 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
|
||
| t.agent.on('debugger-input', ({ payload: [{ 'debugger.snapshot': { captures } }] }) => { | ||
| const { locals } = captures.lines[t.breakpoint.line] | ||
| const promise = once(t.agent, 'debugger-input') |
There was a problem hiding this comment.
Note: I personally like this way of writing tests. That way it's somewhat easier for me to follow the logic and the events are always definitely going to cause the error to fail in case of an error.
| // Allow for a variance of +50ms (time will tell if this is enough) | ||
| assert.isAtLeast(duration, 1000) | ||
| // Allow for a time variance (time will tell if this is enough). Timeouts can vary. | ||
| assert.isAtLeast(duration, 925) |
There was a problem hiding this comment.
I believe this is an indicator for the improved performance, but I did not understand the timeout logic here.
| 'fastify', 'getUndefined' | ||
| 'fastify', 'getUndefined', | ||
| // Up to 3 properties from the local scope | ||
| 'request', 'nil', 'undef' |
There was a problem hiding this comment.
The order should not be important, right?
|
Seems like this is triggering the AsyncHooks issue we faced recently constantly on 18. |
The sync code got a tad optimized (dense instead of sparse arrays and some other minor improvements). The async parts now also run in parallel. These changes do not make a big difference effectively due to the overhead of the inspector calls themselves.
60cb3b5 to
c00730a
Compare
This aligns the behavior, allows to update the action easier and it makes sure we always use consistent versions.
watson
left a comment
There was a problem hiding this comment.
Once the .github changes have been merged in a separate PR, this looks very good 👍
The sync code got a tad optimized (dense instead of sparse arrays and some other minor improvements). The async parts now also run in parallel. These changes do not make a big difference effectively due to the overhead of the inspector calls themselves. Co-authored-by: Thomas Watson <w@tson.dk>
The sync code got a tad optimized (dense instead of sparse arrays and some other minor improvements). The async parts now also run in parallel. These changes do not make a big difference effectively due to the overhead of the inspector calls themselves. Co-authored-by: Thomas Watson <w@tson.dk>
The sync code got a tad optimized (dense instead of sparse arrays and some other minor improvements). The async parts now also run in parallel.
These changes do not make a big difference effectively due to the overhead of the inspector calls themselves.