From d22d2fa6d4d77ff8ea48e5bbfd5496163f509f41 Mon Sep 17 00:00:00 2001 From: Yoo <121166835+ri7116@users.noreply.github.com> Date: Mon, 11 Aug 2025 12:29:01 +0900 Subject: [PATCH] lib: optimize writable stream buffer clearing Improved the `clearBuffer` function by replacing `buffered.splice` with `ArrayPrototypeSlice`. - Eliminates O(N) shifting overhead. - Improves CPU utilization and reduces GC overhead. PR-URL: https://github.com/nodejs/node/pull/59406 Reviewed-By: Matteo Collina Reviewed-By: Ethan Arrowood Reviewed-By: Ruben Bridgewater Reviewed-By: Anna Henningsen --- lib/internal/streams/writable.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/internal/streams/writable.js b/lib/internal/streams/writable.js index a3a1a965b00..84ef2e2629f 100644 --- a/lib/internal/streams/writable.js +++ b/lib/internal/streams/writable.js @@ -786,7 +786,7 @@ function clearBuffer(stream, state) { if (i === buffered.length) { resetBuffer(state); } else if (i > 256) { - buffered.splice(0, i); + state[kBufferedValue] = ArrayPrototypeSlice(buffered, i); state.bufferedIndex = 0; } else { state.bufferedIndex = i;