Speed up data dehydration (#79209)
authorMichal Strehovský <MichalStrehovsky@users.noreply.github.com>
Mon, 5 Dec 2022 10:53:06 +0000 (19:53 +0900)
committerGitHub <noreply@github.com>
Mon, 5 Dec 2022 10:53:06 +0000 (02:53 -0800)
commit9c3134e445412ecfac84cdd3239dea8b04a36c40
tree79af5e2de2dfc466942fc3a56716d363d8409775
parent1a37caf773a3b857ccff49a31be3333d4fdc491f
Speed up data dehydration (#79209)

Now that we switched everything we wanted to switch to dehydrated data, I redid startup measurements.

I used a 30 MB app that doesn't actually do anything useful with those megabytes and just exits (to get a lot of dehydrated data into the startup path).

On Windows:

(The measurements were frustratingly noisy within a range that spans 10 ms.)

Without dehydration, the app exits in ~27 ms.
With dehydration, the app exits in ~37 ms.
With the fixes in this PR and dehydration, it exits in ~34 ms.

On Linux, the difference between not dehydrated and dehydrated is ~8 ms -> ~12 ms. I didn't re-measure with this PR. Possibly shaved off a millisecond.
src/coreclr/nativeaot/Common/src/Internal/Runtime/CompilerHelpers/StartupCodeHelpers.cs
src/coreclr/tools/Common/Internal/Runtime/DehydratedData.cs