Sourcemap performance improvements (#668)

This PR brings two performance improvements to the `rojo sourcemap`
command:

- Use `rayon` with a small threadpool to parallelize sourcemap
generation while still keeping startup cost very low
- Remove conversions to owned strings and use lifetimes tied to the dom
instead, which mostly improves performance with the
`--include-non-scripts` flag enabled

From my personal testing on an M1 mac this decreases the sourcemap
generation time of our games by 2x or more, from ~20ms to ~8ms on one
project and ~30ms to ~15ms on another. Generation is pretty fast to
begin with but since sourcemaps are heavily used in interactive tools
(like luau-lsp) a difference of a couple frames can be great for ux.
This commit is contained in:
Filip Tibell
2023-05-06 10:01:15 +02:00
committed by GitHub
parent 4b62190aff
commit 305423b856
4 changed files with 30 additions and 16 deletions

2
Cargo.lock generated
View File

@@ -1900,10 +1900,12 @@ dependencies = [
"maplit",
"memofs",
"notify",
"num_cpus",
"opener",
"paste",
"pretty_assertions",
"profiling",
"rayon",
"rbx_binary",
"rbx_dom_weak",
"rbx_reflection",