about summary refs log tree commit diff
path: root/compiler/rustc_hir_analysis
diff options
context:
space:
mode:
authorJoshua Liebow-Feeser <hello@joshlf.com>2025-04-10 13:45:39 -0700
committerJoshua Liebow-Feeser <hello@joshlf.com>2025-04-23 11:45:00 -0700
commit4326a44e6f0859077b7789d42416b9291b0ff4d1 (patch)
tree713ed8f802314f672e8d51725b158eb1a6c1dc9e /compiler/rustc_hir_analysis
parentbe181dd75c83d72fcc95538e235768bc367b76b9 (diff)
downloadrust-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