From: Jérôme Benoit Date: Fri, 22 Aug 2025 19:39:33 +0000 (+0200) Subject: perf: add adaptive aging factor to priority queue X-Git-Tag: v5.1.5~3 X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=66c08e6f68fbe7aeaa8da91fe8ed812e1befefc9;p=poolifier.git perf: add adaptive aging factor to priority queue Signed-off-by: Jérôme Benoit --- diff --git a/src/queues/fixed-priority-queue.ts b/src/queues/fixed-priority-queue.ts index 509b1ad43..fa4b02574 100644 --- a/src/queues/fixed-priority-queue.ts +++ b/src/queues/fixed-priority-queue.ts @@ -30,16 +30,19 @@ export class FixedPriorityQueue } priority = priority ?? 0 const now = performance.now() + const effectiveAgingFactor = + this.agingFactor * (1 + 2 * (this.size / this.capacity)) let insertionPhysicalIndex = -1 let currentPhysicalIndex = this.start for (let i = 0; i < this.size; i++) { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - const node = this.nodeArray[currentPhysicalIndex]! - const nodeEffectivePriority = - node.priority - (now - node.timestamp) * this.agingFactor - if (nodeEffectivePriority > priority) { - insertionPhysicalIndex = currentPhysicalIndex - break + const node = this.nodeArray[currentPhysicalIndex] + if (node != null) { + const nodeEffectivePriority = + node.priority - (now - node.timestamp) * effectiveAgingFactor + if (nodeEffectivePriority > priority) { + insertionPhysicalIndex = currentPhysicalIndex + break + } } ++currentPhysicalIndex if (currentPhysicalIndex === this.capacity) {