https: optimize session cache property access#59967
https: optimize session cache property access#59967jbj338033 wants to merge 1 commit intonodejs:mainfrom
Conversation
|
Review requested:
|
mcollina
left a comment
There was a problem hiding this comment.
Does this actually improve performance?
lib/https.js
Outdated
|
|
||
| Agent.prototype._evictSession = function _evictSession(key) { | ||
| const index = ArrayPrototypeIndexOf(this._sessionCache.list, key); | ||
| const { map, list } = this._sessionCache; |
There was a problem hiding this comment.
There is no need to optimize map, as it's only used once. I would also avoid destructuring.
lib/https.js
Outdated
| return; | ||
|
|
||
| // Cache property accesses for better performance | ||
| const { map, list } = this._sessionCache; |
There was a problem hiding this comment.
I would avoid destructuring and just extract map here, and then list just before its used.
Cache frequently accessed properties in _cacheSession and _evictSession
methods to improve performance. This reduces the number of property
lookups in hot paths of HTTPS session caching.
Changes:
- _cacheSession: Cache map and list properties separately, avoiding
destructuring as suggested in review
- _evictSession: Only cache list property since map is accessed once
The optimization follows a similar pattern to other performance
improvements in the codebase by caching frequently accessed object
properties in local variables.
Benchmark results show 12-18% improvement in session cache operations:
https/https-session-cache.js n=10000 sessions=100: 18.2% improvement
https/https-session-cache.js n=10000 sessions=256: 12.7% improvement
Signed-off-by: jbj338033 <jbj338033@gmail.com>
afb6802 to
bd8ffe3
Compare
|
What does the benchmark before/after reports? |
|
The benchmark results show inconsistent performance with regressions in several cases, so this optimization isn't worth merging. I'll close this PR and look for better opportunities. Appreciate the feedback! |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #59967 +/- ##
=======================================
Coverage 88.41% 88.42%
=======================================
Files 703 703
Lines 207421 207426 +5
Branches 39993 40005 +12
=======================================
+ Hits 183398 183423 +25
+ Misses 15996 15985 -11
+ Partials 8027 8018 -9
🚀 New features to boost your workflow:
|
Summary
_cacheSessionand from 2 to 1 in_evictSessionDetails
This PR improves the performance of HTTPS session caching by caching the
this._sessionCache.mapandthis._sessionCache.listproperty accesses in local variables. This pattern is commonly used throughout the Node.js codebase to reduce repeated object property lookups.The optimization is particularly beneficial in high-throughput HTTPS scenarios where session caching is frequently accessed.
Performance Impact
Test plan