Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Apply some obvious rich debug info optimizations (#73373)
* Stop sending many duplicate MethodDetails events for rich debug info When rich debug info is enabled we send MethodDetails events for all inlinees as otherwise no information for those may have been sent (in case they have not been jitted). During rundown this was sending a lot of duplicate events. * Compress rich debug info and optimize ETW events * Compress rich debug info when stored in the runtime. For Avalonia.ILSpy which has ~33k methods, the memory overhead of rich debug info goes from 7 MB -> 2.1 MB * ETW events do not use the delta compression, but still optimize them a little by avoiding sending out the padding and unnecessarily large types. The average size of a rich debug info ETW event goes from 259 bytes to 219 bytes for ILSpy * Add DoEncodedDeltaU32NonMonotonic and use it The inline ordinals may not be monotonically increasing and the existing DoEncodedDeltaU32 is unnecessarily inefficient for the cases where it isn't (plus, will assert). * Use non-monotonic delta compression for IL offsets Gets us an extra ~10% size reduction in my tests
- Loading branch information