Perf: fix strictness in OccurAnal (#19989)
Perf: fix strictness in OccurAnal
This patch enhances OccurAnal perf by using a dedicated WithUsageDetails
datatype instead of a tuple (similarly to what has been done in
demand-analysis) with strict fields.
OccEnv is also passed strictly with more strict fields as it improves
results even more.
Perf results on x86-64/Linux:
-0.1 T11545 compile_time/bytes allocated
0.2 T1969 compile_time/max_bytes_used
-0.2 T13719 compile_time/bytes allocated
-0.3 hie002 compile_time/bytes allocated
-0.3 T18223 compile_time/bytes allocated
-0.3 T14683 compile_time/bytes allocated
-0.3 MultiLayerModules compile_time/bytes allocated
-0.3 T12545 compile_time/bytes allocated
-0.3 T3294 compile_time/bytes allocated
-0.4 MultiLayerModulesRecompcompile_time/bytes allocated
-0.4 T9872d compile_time/bytes allocated
0.4 T4029 runtime/max_bytes_used
-0.5 T16190 compile_time/bytes allocated
0.5 T3294 compile_time/max_bytes_used
-0.6 T5030 compile_time/bytes allocated
-0.6 T14697 compile_time/bytes allocated
-0.6 T17836 compile_time/bytes allocated
-0.6 T10370 compile_time/max_bytes_used
-0.7 T13701 compile_time/bytes allocated
-0.7 T18698b compile_time/max_bytes_used
0.8 T3064 compile_time/max_bytes_used
0.9 T9630 compile_time/max_bytes_used
-0.9 T14052 compile_time/bytes allocated
0.9 T9630 compile_time/peak_megabytes_allocated
-1.0 T3064 compile_time/bytes allocated
-1.0 T5631 compile_time/bytes allocated
1.0 T10370 compile_time/peak_megabytes_allocated
-1.0 T15630 compile_time/max_bytes_used
1.1 T3294 compile_time/peak_megabytes_allocated
-1.3 T18478 compile_time/bytes allocated
-1.3 T13379 compile_time/bytes allocated
-1.3 T12227 compile_time/bytes allocated
-1.5 T11374 compile_time/bytes allocated
-1.5 PmSeriesT compile_time/bytes allocated
-1.5 T17836b compile_time/bytes allocated
-1.5 PmSeriesS compile_time/bytes allocated
-1.5 PmSeriesV compile_time/bytes allocated
-1.5 T11195 compile_time/bytes allocated
-1.6 T11276 compile_time/bytes allocated
-1.6 T11822 compile_time/bytes allocated
-1.6 T12707 compile_time/bytes allocated
-1.6 T9198 compile_time/bytes allocated
1.6 T1969 compile_time/peak_megabytes_allocated
-1.6 T5321Fun compile_time/bytes allocated
-1.7 T17096 compile_time/bytes allocated
-1.7 T783 compile_time/bytes allocated
-1.8 T5321FD compile_time/bytes allocated
-1.8 ManyAlternatives compile_time/bytes allocated
-1.9 T17977 compile_time/bytes allocated
-1.9 T11303b compile_time/bytes allocated
-1.9 T17977b compile_time/bytes allocated
-1.9 T5837 compile_time/bytes allocated
-2.0 T10547 compile_time/bytes allocated
-2.0 PmSeriesG compile_time/bytes allocated
-2.1 T18698b compile_time/bytes allocated
-2.1 T18140 compile_time/bytes allocated
-2.2 T10858 compile_time/bytes allocated
-2.3 T18698a compile_time/bytes allocated
-2.3 T9675 compile_time/max_bytes_used
-2.4 T13035 compile_time/bytes allocated
-2.4 T18698b compile_time/peak_megabytes_allocated
-2.6 T18923 compile_time/bytes allocated
-2.6 T6048 compile_time/bytes allocated
-2.6 T1969 compile_time/bytes allocated
-2.8 WWRec compile_time/bytes allocated
-3.0 T5642 compile_time/bytes allocated
-3.0 T10421a compile_time/bytes allocated
-3.1 ManyConstructors compile_time/bytes allocated
-3.1 T4801 compile_time/bytes allocated
-3.1 T10421 compile_time/bytes allocated
-3.1 T9630 compile_time/bytes allocated
-3.2 T18304 compile_time/bytes allocated
-3.2 T12234 compile_time/bytes allocated
-3.3 T13253-spj compile_time/bytes allocated
-3.5 T9675 compile_time/bytes allocated
-3.5 T18282 compile_time/bytes allocated
-3.5 T9020 compile_time/bytes allocated
-3.6 T15630 compile_time/bytes allocated
-3.7 T15164 compile_time/bytes allocated
-3.8 T9233 compile_time/bytes allocated
-3.8 T13253 compile_time/bytes allocated
-4.0 T17516 compile_time/bytes allocated
-4.1 T12425 compile_time/bytes allocated
-4.1 T16577 compile_time/bytes allocated
-4.6 T13056 compile_time/bytes allocated
-5.0 T15304 compile_time/bytes allocated
-5.3 T9961 compile_time/bytes allocated
-6.2 T12150 compile_time/bytes allocated
Edited by Sylvain Henry