Skip to content

perf(rolldown_sourcemap): cache source id -> source text mapping#5285

Merged
Boshen merged 1 commit intomainfrom
07-15-perf_rolldown_sourcemap_cache_source_id_-_source_text_mapping
Jul 16, 2025
Merged

perf(rolldown_sourcemap): cache source id -> source text mapping#5285
Boshen merged 1 commit intomainfrom
07-15-perf_rolldown_sourcemap_cache_source_id_-_source_text_mapping

Conversation

@Boshen
Copy link
Member

@Boshen Boshen commented Jul 15, 2025

Current approach is hashing the source text for everything token,
cache the mapping to avoid redundant hashes. Hashing large source text
is slow!

Copy link
Member Author

Boshen commented Jul 15, 2025

@github-actions
Copy link
Contributor

github-actions bot commented Jul 15, 2025

Benchmarks Rust

  • target: main(1eb7786)
  • pr: 07-15-perf_rolldown_sourcemap_cache_source_id_-_source_text_mapping(7a72803)
group                                                        pr                                     target
-----                                                        --                                     ------
bundle/bundle@multi-duplicated-top-level-symbol              1.10     95.7±5.13ms        ? ?/sec    1.00     87.3±5.85ms        ? ?/sec
bundle/bundle@multi-duplicated-top-level-symbol-sourcemap    1.03    110.1±3.56ms        ? ?/sec    1.00    106.8±8.44ms        ? ?/sec
bundle/bundle@rome_ts                                        1.19    142.6±8.43ms        ? ?/sec    1.00    120.0±3.90ms        ? ?/sec
bundle/bundle@rome_ts-sourcemap                              1.07    168.7±4.74ms        ? ?/sec    1.00    157.6±9.38ms        ? ?/sec
bundle/bundle@threejs                                        1.03     47.1±1.91ms        ? ?/sec    1.00     45.6±3.34ms        ? ?/sec
bundle/bundle@threejs-sourcemap                              1.05     58.8±3.10ms        ? ?/sec    1.00     56.2±2.63ms        ? ?/sec
bundle/bundle@threejs10x                                     1.03   523.1±22.23ms        ? ?/sec    1.00   507.3±36.17ms        ? ?/sec
bundle/bundle@threejs10x-sourcemap                           1.02   619.5±28.01ms        ? ?/sec    1.00   607.1±40.81ms        ? ?/sec
scan/scan@rome_ts                                            1.00     94.5±3.81ms        ? ?/sec    1.01     95.4±2.72ms        ? ?/sec
scan/scan@threejs                                            1.01     35.4±1.58ms        ? ?/sec    1.00     34.9±2.46ms        ? ?/sec
scan/scan@threejs10x                                         1.04   355.9±18.54ms        ? ?/sec    1.00   342.3±10.80ms        ? ?/sec

Base automatically changed from perf-sourcemap to main July 15, 2025 07:49
Current approach is hashing the source text for everything token,
cache the mapping to avoid redundant hashes. Hashing large source text
is slow!
@Boshen Boshen force-pushed the 07-15-perf_rolldown_sourcemap_cache_source_id_-_source_text_mapping branch from 5f29c71 to 7a72803 Compare July 16, 2025 11:47
@Boshen Boshen enabled auto-merge July 16, 2025 11:47
@netlify
Copy link

netlify bot commented Jul 16, 2025

Deploy Preview for rolldown-rs canceled.

Name Link
🔨 Latest commit 7a72803
🔍 Latest deploy log https://app.netlify.com/projects/rolldown-rs/deploys/687791585ec7760008a64a87

@Boshen Boshen added this pull request to the merge queue Jul 16, 2025
Merged via the queue into main with commit e25fa71 Jul 16, 2025
24 checks passed
@Boshen Boshen deleted the 07-15-perf_rolldown_sourcemap_cache_source_id_-_source_text_mapping branch July 16, 2025 12:01
This was referenced Jul 17, 2025
shulaoda pushed a commit that referenced this pull request Jul 17, 2025
## [1.0.0-beta.28] - 2025-07-17

### 🚀 Features

- rolldown: oxc v0.77.2 (#5328) by @Boshen
- hmr: add `module` and `exports` parameters to CJS initializer
functions (#5322) by @hyf0
- rolldown_plugin_transform: align with `vitejs/rolldown-vite#318`
(#5318) by @shulaoda
- rolldown_plugin_transform: align with `vitejs/rolldown-vite#315`
(#5315) by @shulaoda
- hmr: automatically disable treeshaking in hmr (#5311) by @hyf0
- hmr: use `trait HmrAstBuilder` to unify ast construction (#5310) by
@hyf0
- rolldown_plugin_chunk_import_map: basic implementation (#5307) by
@shulaoda
- add `watch.onInvalidate` (#5239) by @situ2001
- rolldown_plugin_chunk_import_map: implement initial `render_chunk`
logic (#5306) by @shulaoda
- rolldown: oxc v0.77.1 (#5304) by @Boshen
- js: expose `experimental.incrementalBuild` option (#5300) by
@IWANABETHATGUY
- js: support `experimental.onDemandWrapping` option (#5299) by
@IWANABETHATGUY
- support on demand wrapping for entry chunk (#5291) by @IWANABETHATGUY
- rolldown_plugin_chunk_import_map: initialize (#5289) by @shulaoda
- show owner module id for "canonical name not found for" errors (#5288)
by @sapphi-red

### 🐛 Bug Fixes

- only transform VarDeclaration when enable `keepNames` (#5323) by
@IWANABETHATGUY
- keepNames with special Ifstmt (#5320) by @IWANABETHATGUY
- incremental watch panic when adding dynamic import (#5309) by
@IWANABETHATGUY
- make leaf module wrapping optimization opt-in (#5305) by
@IWANABETHATGUY
- `keepNames` should consider exportNamed function declaration (#5298)
by @IWANABETHATGUY
- undefined `process.versions` for browser build (#5295) by @sxzz
- sanitizeFileName: entry name should be sanitized (#5283) by @shulaoda
- minify-internal-exports: ensure minifying internal exports stably
(#5281) by @hyf0
- keep legal and annotation comments for `minify: 'dce-only'` (#5280) by
@sapphi-red
- unstable chunk generation when `preserveEntrySignatures: false` is
used (#5274) by @IWANABETHATGUY

### 🚜 Refactor

- pass the while CodegenOptions to `EcmaCompiler::minify` (#5279) by
@sapphi-red
- avoid iterate `canonical_exports` twice (#5276) by @IWANABETHATGUY

### 📚 Documentation

- pluginutils: add README file (#5262) by @TheAlexLichter

### ⚡ Performance

- inline function expression when rewriting `name` property with
`keepNames` enabled (#5321) by @IWANABETHATGUY
- rolldown_sourcemap: cache source id -> source text mapping (#5285) by
@Boshen
- rolldown_sourcemap: disable rayon (#5284) by @Boshen

### 🧪 Testing

- rust: prevent meaningless snapshot change from bumping oxc runtime
versions (#5312) by @hyf0

### ⚙️ Miscellaneous Tasks

- upgrade to NAPI-RS 3.0 stable (#5324) by @Brooooooklyn
- infra: add onlyBuiltDependencies (#5287) by @situ2001
- improve the order of import keys in the exports field (#5314) by @btea
- deps: update dependency rolldown-plugin-dts to v0.13.14 (#5293) by
@renovate[bot]
- deps: lock file maintenance rust crates (#5267) by @renovate[bot]
- deps: lock file maintenance npm packages (#5266) by @renovate[bot]
- deps: update github-actions (#5265) by @renovate[bot]

### ❤️ New Contributors

* @situ2001 made their first contribution in
[#5287](#5287)

Co-authored-by: IWANABETHATGUY <17974631+IWANABETHATGUY@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants