Commit b35bf30
committed
perf(codegen): optimize sourcemap builder to reduce allocations (#13670)
## Summary
This PR optimizes the sourcemap builder to reduce memory allocations and improve performance. Profiling showed that `update_generated_line_and_column` and `add_source_mapping` were performance bottlenecks.
### Changes Made
**Optimization 4: Optimize Line Offset Table Generation**
- Pre-allocate `columns` vector with capacity 256 to avoid frequent reallocations
- Replace `columns.clone().into_boxed_slice()` with `std::mem::take(&mut columns).into_boxed_slice()` to avoid unnecessary cloning
- Reserve capacity after taking the vector to maintain performance for subsequent lines
### Performance Impact
These changes reduce memory allocations when generating sourcemaps, especially for files with Unicode characters. The `clone()` operation was creating unnecessary copies of potentially large vectors on every Unicode line, which is now eliminated.
### Future Optimizations
Additional optimizations from the analysis that could be implemented in follow-up PRs:
1. Use SIMD-accelerated line break detection with `memchr`
2. Optimize UTF-16 column calculation to avoid iterator allocation
3. Add fast path for sequential token processing
5. Inline hot functions with `#[inline(always)]`
## Test Plan
- [x] All existing tests pass
- [x] No functional changes, only performance optimizations
- [x] Verified that sourcemap generation still works correctly
🤖 Generated with [Claude Code](https://claude.ai/code)1 parent 2d53203 commit b35bf30
1 file changed
+6
-3
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
308 | 308 | | |
309 | 309 | | |
310 | 310 | | |
311 | | - | |
| 311 | + | |
| 312 | + | |
312 | 313 | | |
313 | 314 | | |
314 | 315 | | |
| |||
389 | 390 | | |
390 | 391 | | |
391 | 392 | | |
| 393 | + | |
392 | 394 | | |
393 | 395 | | |
394 | | - | |
| 396 | + | |
395 | 397 | | |
396 | | - | |
| 398 | + | |
| 399 | + | |
397 | 400 | | |
398 | 401 | | |
399 | 402 | | |
| |||
0 commit comments