diff options
| author | Joshua Liebow-Feeser <hello@joshlf.com> | 2025-04-10 13:45:39 -0700 |
|---|---|---|
| committer | Joshua Liebow-Feeser <hello@joshlf.com> | 2025-04-23 11:45:00 -0700 |
| commit | 4326a44e6f0859077b7789d42416b9291b0ff4d1 (patch) | |
| tree | 713ed8f802314f672e8d51725b158eb1a6c1dc9e /compiler/rustc_hir_analysis | |
| parent | be181dd75c83d72fcc95538e235768bc367b76b9 (diff) | |
| download | rust-4326a44e6f0859077b7789d42416b9291b0ff4d1.tar.gz rust-4326a44e6f0859077b7789d42416b9291b0ff4d1.zip | |
transmutability: Mark edges by ranges, not values
In the `Tree` and `Dfa` representations of a type's layout, store byte ranges rather than needing to separately store each byte value. This permits us to, for example, represent a `u8` using a single 0..=255 edge in the DFA rather than using 256 separate edges. This leads to drastic performance improvements. For example, on the author's 2024 MacBook Pro, the time to convert the `Tree` representation of a `u64` to its equivalent DFA representation drops from ~8.5ms to ~1us, a reduction of ~8,500x. See `bench_dfa_from_tree`. Similarly, the time to execute a transmutability query from `u64` to `u64` drops from ~35us to ~1.7us, a reduction of ~20x. See `bench_transmute`.
Diffstat (limited to 'compiler/rustc_hir_analysis')
0 files changed, 0 insertions, 0 deletions
