Skip to content

stream: optimize single-slot push queue drain#63274

Open
trivikr wants to merge 1 commit into
nodejs:mainfrom
trivikr:stream-iter-push-queue-drain
Open

stream: optimize single-slot push queue drain#63274
trivikr wants to merge 1 commit into
nodejs:mainfrom
trivikr:stream-iter-push-queue-drain

Conversation

@trivikr
Copy link
Copy Markdown
Member

@trivikr trivikr commented May 13, 2026

Optimize PushQueue.#drain() for the common single-slot case.

When only one slot is queued, return that slot directly instead of allocating a
new result array and copying every chunk into it. The existing flattening path is
kept for multi-slot drains.


Assisted-by: openai:gpt-5.5

@nodejs-github-bot
Copy link
Copy Markdown
Collaborator

Review requested:

  • @nodejs/streams

@nodejs-github-bot nodejs-github-bot added needs-ci PRs that need a full CI run. stream Issues and PRs related to the stream subsystem. labels May 13, 2026
@trivikr trivikr force-pushed the stream-iter-push-queue-drain branch from e0f819d to 31d0e90 Compare May 13, 2026 06:28
@trivikr trivikr self-assigned this May 13, 2026
@trivikr trivikr added the request-ci Add this label to start a Jenkins CI on a PR. label May 13, 2026
@codecov
Copy link
Copy Markdown

codecov Bot commented May 13, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 90.05%. Comparing base (2edd842) to head (4b44db4).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #63274      +/-   ##
==========================================
+ Coverage   90.04%   90.05%   +0.01%     
==========================================
  Files         714      714              
  Lines      225338   225342       +4     
  Branches    42598    42608      +10     
==========================================
+ Hits       202897   202926      +29     
+ Misses      14236    14195      -41     
- Partials     8205     8221      +16     
Files with missing lines Coverage Δ
lib/internal/streams/iter/push.js 91.44% <100.00%> (+0.04%) ⬆️

... and 34 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Avoid allocating a new result array when PushQueue drains a single
queued slot. Return that slot directly and keep the existing flattening
path for multiple queued slots.

Signed-off-by: Kamat, Trivikram <16024985+trivikr@users.noreply.github.com>
Assisted-by: openai:gpt-5.5
@trivikr trivikr force-pushed the stream-iter-push-queue-drain branch from 31d0e90 to 4b44db4 Compare May 15, 2026 00:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-ci PRs that need a full CI run. request-ci Add this label to start a Jenkins CI on a PR. stream Issues and PRs related to the stream subsystem.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants