Merge pull request #2013 from luowenxing/perf/set_proto_listener_1225
Some checks failed
Test Browser / build (20.x) (push) Has been cancelled
Test NodeJS / build (23.x) (push) Has been cancelled

perf: The same node type shares the same eventListeners to improve perf of construct node
This commit is contained in:
Anton Lavrenov
2025-12-25 15:37:42 -05:00
committed by GitHub

View File

@@ -2500,8 +2500,11 @@ export abstract class Node<Config extends NodeConfig = NodeConfig> {
} }
} }
static protoListenerMap = new Map<string, any>();
_getProtoListeners(eventType) { _getProtoListeners(eventType) {
const allListeners = this._cache.get(ALL_LISTENERS) ?? {}; const { nodeType } = this;
const allListeners = Node.protoListenerMap.get(nodeType) || {};
let events = allListeners?.[eventType]; let events = allListeners?.[eventType];
if (events === undefined) { if (events === undefined) {
//recalculate cache //recalculate cache
@@ -2514,7 +2517,7 @@ export abstract class Node<Config extends NodeConfig = NodeConfig> {
} }
// update cache // update cache
allListeners[eventType] = events; allListeners[eventType] = events;
this._cache.set(ALL_LISTENERS, allListeners); Node.protoListenerMap.set(nodeType, allListeners);
} }
return events; return events;