perf(rolldown_plugin_reporter): gzip size computation#5734
Merged
IWANABETHATGUY merged 1 commit intomainfrom Aug 15, 2025
Merged
perf(rolldown_plugin_reporter): gzip size computation#5734IWANABETHATGUY merged 1 commit intomainfrom
IWANABETHATGUY merged 1 commit intomainfrom
Conversation
✅ Deploy Preview for rolldown-rs canceled.
|
Contributor
Benchmarks Rust |
IWANABETHATGUY
commented
Aug 15, 2025
9a88fdd to
0395378
Compare
0395378 to
ed47def
Compare
IWANABETHATGUY
commented
Aug 15, 2025
IWANABETHATGUY
commented
Aug 15, 2025
Contributor
There was a problem hiding this comment.
Pull Request Overview
Optimizes gzip size computation in the rolldown plugin reporter to improve build performance by parallelizing compression and using a counting writer instead of allocating compressed data.
- Parallelizes gzip size computation across chunks and assets using rayon
- Implements a custom
CountingWriterto avoid allocating compressed data in memory - Updates flate2 dependency to use zlib-rs backend for better performance
Reviewed Changes
Copilot reviewed 5 out of 6 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| deny.toml | Adds Zlib license to allowed list for dependency compliance |
| crates/rolldown_plugin_reporter/src/utils.rs | Implements CountingWriter and refactors compute_gzip_size to avoid memory allocation |
| crates/rolldown_plugin_reporter/src/lib.rs | Parallelizes gzip computation and removes sequential processing |
| crates/rolldown_plugin_reporter/Cargo.toml | Adds rayon dependency for parallel processing |
| Cargo.toml | Updates flate2 to use zlib-rs backend |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
Member
|
cursor review |
shulaoda
approved these changes
Aug 15, 2025
sapphi-red
approved these changes
Aug 15, 2025
Member
sapphi-red
left a comment
There was a problem hiding this comment.
I'm curious to know how much this makes the Rolldown's binary size bigger (not a blocker).
Member
Author
This was referenced Aug 18, 2025
hyf0
pushed a commit
that referenced
this pull request
Aug 18, 2025
## [1.0.0-beta.33] - 2025-08-18 ### 💥 BREAKING CHANGES - only call `closeBundle` hook when bundling actually happens (#5715) by @shulaoda ### 🚀 Features - rolldown_plugin_vite_css_post: align transform logic except minify (#5768) by @shulaoda - rolldown_plugin_vite_css_post: align html inline css logic (#5767) by @shulaoda - support merge cjs ns in module group level (#5760) by @IWANABETHATGUY - rolldown_plugin_vite_css_post: filter transform id (#5766) by @shulaoda - rolldown: oxc v0.82.2 (#5754) by @Boshen - rollup-test: log error when `pringStatus` (#5744) by @situ2001 - rolldown_plugin_vite_css_post: initialize (#5743) by @shulaoda - rolldown_plugin_vite_css: align `transform` hook logic (#5736) by @shulaoda - rolldown_plugin_vite_css: align partial transform hook logic (#5733) by @shulaoda - add original wrap_kind (#5729) by @IWANABETHATGUY - concatenateWrappedModule (#5724) by @IWANABETHATGUY - rolldown: oxc v0.82.1 (#5717) by @Boshen - improve error message for `unresolved_import` when platform is `neutral` (#5700) by @IWANABETHATGUY ### 🐛 Bug Fixes - rolldown_plugin_transform: merge tsconfig jsx options even when `oxc.jsx.runtime` is set (#5771) by @hi-ogawa - jsx preserve break component which is default export (#5764) by @shulaoda - rolldown_plugin_asset: should directly stringify raw content (#5749) by @situ2001 - resolve symbol deconfliction order for cross-chunk imports by @IWANABETHATGUY - rolldown_error: improve resolve diagnostic message (#5740) by @shulaoda - vitest ci failed (#5741) by @IWANABETHATGUY - rolldown: options `context` should be available in renderStart (#5672) by @situ2001 - ensure lazy module eval order when import variable from other chunk (#5727) by @IWANABETHATGUY - wasm build panic on stackblitz (#5723) by @shulaoda - plugin/vite-resolve: try non-prefixed id before prefixed id (#5711) by @sapphi-red - devtool: shouldn't filter out spans for devtool use case (#5713) by @hyf0 - plugin/vite-resolve: fallback on more resolution errors that happened when trying with prefix (#5710) by @sapphi-red - plugin/vite-resolve: don't consider ids with `npm:` prefix as a built-in module (#5709) by @sapphi-red ### 🚜 Refactor - rolldown_plugin_json: use common plugin utils (#5769) by @shulaoda - hmr: remove unnecessary code of handling runtime module (#5752) by @hyf0 - hmr: enhance HMR update logic and improve clarity (#5748) by @hyf0 - improve `ScopeHoistingFinalizerContext` (#5739) by @shulaoda - move `finalize_normal_module` into `ScopeHoistingFinalizerContext` (#5738) by @shulaoda - private fields `wrap_kind` and `original_wrap_kind` and keep them sync (#5730) by @IWANABETHATGUY ### 📚 Documentation - rolldown_plugin_data_uri: update README (#5746) by @situ2001 - install guide for minor platforms (#5716) by @sapphi-red - update description for platform `neutral` (#5701) by @IWANABETHATGUY ### ⚡ Performance - hmr: only refetch changed modules (#5753) by @hyf0 - rolldown_plugin_reporter: gzip size computation (#5734) by @IWANABETHATGUY - hmr: reuse previous ast for non-changed modules (#5725) by @hyf0 - rolldown_ecmascript: do not run semantic twice for `dce-only` (#5707) by @Boshen ### 🧪 Testing - rolldown: should await for `toMatchFileSnapshot` (#5759) by @situ2001 - hmr: improve test of `import.meta.hot.invalidate` (#5747) by @hyf0 ### ⚙️ Miscellaneous Tasks - deps: lock file maintenance (#5765) by @renovate[bot] - deps: lock file maintenance rust crates (#5763) by @renovate[bot] - deps: lock file maintenance npm packages (#5762) by @renovate[bot] - deps: update github-actions (#5755) by @renovate[bot] - deps: update dependency tinybench to v5 (#5756) by @renovate[bot] - deps: update github-actions (major) (#5757) by @renovate[bot] - deps: update crate-ci/typos action to v1.35.4 (#5714) by @renovate[bot] - prepare-release: regenerate `binding.js` after version bump (#5704) by @shulaoda - deps: update dependency tsdown to v0.14.1 (#5705) by @renovate[bot] - rollup-tests: skip occasionally failing test case (#5703) by @shulaoda - update binding.js (#5702) by @shulaoda Co-authored-by: sapphi-red <49056869+sapphi-red@users.noreply.github.com>
graphite-app bot
pushed a commit
that referenced
this pull request
Feb 13, 2026
…rt_compressed_size` is disabled (#8321) Related to #5734 1. Remove the unused `compressed_count` field and its reset in `render_start` 2. Skip Rayon parallel computation entirely when `report_compressed_size` is `false` (using `.then()`) 3. Simplify the "computing gzip size" log message (remove TTY-specific progress reporting) Since #5734 removed the dynamic per-output progress reporting (`computing gzip size ({count})...`) in favor of printing the final sizes all at once, the remaining `computing gzip size (0)...` log is no longer meaningful. Additionally, with Rayon's `par_iter` and Rust's performance, gzip computation is fast enough that a progress log is unnecessary. Remove it.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Note
Before
I noticed that the gzip size computation costs a lot of time in rolldown-vite, in my local computer, it takes 158ms to compute gzip size(total building time takes about 750ms)

After
The size after gzip is almost identical; it should be alright to have a little difference since it's just a gzip size used for reference.