Set cheap-to-compare IdInfo fields only if they have changed
We should try setting IdInfo
fields that are cheap to compare, like bitfield
(which is just a Word64
), only if they have changed. For fields like demandInfo
, we could try to extract the cases which are common and cheap to compare (e.g. topDmd
) into a cheapEqX
function that does the cheap comparison, with the property that cheapEqX a b ==> (a == b)
, e.g. cheapEqX
will never return True
when (==)
would not.
It would be interesting to see the impact on compile-time allocations. Although I fear that the compiler then might be unable to "fuse" multiple setters into one record update with case-of-known-constructor as well as it can (at least could, I think?) now.