Low Level Tools/2019Q2: Difference between revisions
Jump to navigation
Jump to search
Nnethercote (talk | contribs) No edit summary |
Nnethercote (talk | contribs) (→Nick) |
||
Line 20: | Line 20: | ||
Land 5 changes that speed up or reduce peak memory usage of rustc. | Land 5 changes that speed up or reduce peak memory usage of rustc. | ||
* [https://github.com/rust-lang/rust/pull/59693 Increase `Span` from 4 bytes to 8 bytes.] A big win across lots of workloads, especially larger crates: some <tt>script-servo</tt> builds are 15% faster. | * [https://github.com/rust-lang/rust/pull/59693 Increase `Span` from 4 bytes to 8 bytes.] A big win across lots of workloads, especially larger crates: some <tt>script-servo</tt> builds are 15% faster. | ||
* [https://github.com/rust-lang/rust/pull/61253 Avoid `hygiene_data` lookups.] Up to 10% win on packed-simd, up to 3% on numerous others. | |||
* [https://github.com/rust-lang/rust/pull/59626 Reduce the `DepNode` pre-allocation ratio.] Reduces peak memory use by 20 MiB on some workloads. | * [https://github.com/rust-lang/rust/pull/59626 Reduce the `DepNode` pre-allocation ratio.] Reduces peak memory use by 20 MiB on some workloads. | ||
* [https://github.com/rust-lang/rust/pull/60630 Use `Symbol` more.] Up to 1% speed-up, as well as making the code nicer. Should also help with parallel rustc. | * [https://github.com/rust-lang/rust/pull/60630 Use `Symbol` more.] Up to 1% speed-up, as well as making the code nicer. Should also help with parallel rustc. | ||
* [https://github.com/rust-lang/rust/pull/60815 Use `Symbol` even more.] Up to 1% speed-up. Should also help with parallel rustc. | * [https://github.com/rust-lang/rust/pull/60815 Use `Symbol` even more.] Up to 1% speed-up. Should also help with parallel rustc. |
Revision as of 20:25, 30 May 2019
Nick
rustc pipelining: Implement "pipelined" rustc compilation (compiler side).
- 100% completed.
- Don't generate unnecessary rmeta files. A precursor.
- In JSON output, emit a directive after metadata is generated. The part that lets rustc tell Cargo when metadata has been written.
- Emit metadata files earlier. So that significant crate overlapping can occur.
- Tracking issue for stabilizing "pipelined compilation" has been opened.
- Announcement email to dev-platform
- Speed-ups depend on program structure and configuration, but up to 1.84x has been observed.
- Speedups for opt builds of notable projects on my 14-core Linux box:
- webrender: 1.27x
- cranelift-codegen: 1.20x
- Firefox: 1.07x
- script-servo: 1.07x
- style-servo: 1.06x
Ship GWP.
Land 5 changes that speed up or reduce peak memory usage of rustc.
- Increase `Span` from 4 bytes to 8 bytes. A big win across lots of workloads, especially larger crates: some script-servo builds are 15% faster.
- Avoid `hygiene_data` lookups. Up to 10% win on packed-simd, up to 3% on numerous others.
- Reduce the `DepNode` pre-allocation ratio. Reduces peak memory use by 20 MiB on some workloads.
- Use `Symbol` more. Up to 1% speed-up, as well as making the code nicer. Should also help with parallel rustc.
- Use `Symbol` even more. Up to 1% speed-up. Should also help with parallel rustc.