[CFE] Fix time-regression on using generateKernelInternal in expectation tests

After 9a9b33eb0b running the strong suite
(for instance) got noticeably slower.

The most obvious change is the we no longer cache uri translators,
and while that does add _something_, the main culprit for being quite
a bit slower is that it now verifies all fuzzing compiles too.
It didn't before.

Before running 1 of 10 shards took ~43 seconds, spending ~0.7 seconds on
getting uri translators and performing 298 verifications.

Now running the same thing takes ~64 seconds (in round numbers that's
+50%), spending ~3.7 seconds on getting uri translators and performing
3004 verifications.

Disabling verification when fuzzing makes it go to taking ~51 seconds,
spending ~4.2 seconds on getting uri translators and performing
298 verifications.

The main reason for the getting more uri translators (for the same run,
now: 1824, before: 293) is that the packages uri is now set on the
options (i.e. is non-null) making the incremental compiler force getting
a new uri translator (as the previous "known" was null, meaning that it
"matched" before (both was null), but doesn't now).

Fixing both of these and rerunning 5 times (turns out the runtimes vary
quite a bit) I get to (in seconds):

Before 9a9b33eb0b:
43
50
49
43
45

With this CL:
44
50
46
52
47

Where there's "no difference proven at 95.0% confidence".

Change-Id: Icc20083566cecb4daa27728c7801d50969d87e14
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/368643
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
This commit is contained in:
Jens Johansen 2024-05-30 11:25:35 +00:00 committed by Commit Queue
parent 6e5bb2cd5d
commit 13d22de115
3 changed files with 44 additions and 31 deletions

View file

@ -171,6 +171,7 @@ class IncrementalCompiler implements IncrementalKernelGenerator {
[bool? outlineOnly, this._incrementalSerializer])
: _ticker = context.options.ticker,
_resetTicker = true,
_previousPackagesUri = context.options.packagesUriRaw,
_initializationStrategy = new _InitializationStrategy.fromComponent(
_componentToInitializeFrom),
this.outlineOnly = outlineOnly ?? false,
@ -184,6 +185,7 @@ class IncrementalCompiler implements IncrementalKernelGenerator {
this._incrementalSerializer])
: _ticker = context.options.ticker,
_resetTicker = true,
_previousPackagesUri = context.options.packagesUriRaw,
_initializationStrategy =
new _InitializationStrategy.fromUri(_initializeFromDillUri),
this.outlineOnly = outlineOnly ?? false,
@ -196,6 +198,7 @@ class IncrementalCompiler implements IncrementalKernelGenerator {
[bool? resetTicker])
: _ticker = context.options.ticker,
this._resetTicker = resetTicker ?? true,
_previousPackagesUri = context.options.packagesUriRaw,
_initializationStrategy = new _InitializationStrategy.fromComponent(
_componentToInitializeFrom),
this.outlineOnly = false,

View file

@ -39,9 +39,9 @@ const Map<String, double> _expect = {
"package:front_end/src/api_unstable/dart2js.dart": 0.0,
"package:front_end/src/api_unstable/util.dart": 37.03703703703704,
"package:front_end/src/base/instrumentation.dart": 100.0,
"package:front_end/src/base/processed_options.dart": 39.0,
"package:front_end/src/base/processed_options.dart": 38.81578947368421,
"package:front_end/src/compute_platform_binaries_location.dart":
64.1025641025641,
66.66666666666666,
"package:front_end/src/fasta/builder/builder.dart": 63.63636363636363,
"package:front_end/src/fasta/builder/builder_mixins.dart": 100.0,
"package:front_end/src/fasta/builder/builtin_type_declaration_builder.dart":
@ -76,7 +76,7 @@ const Map<String, double> _expect = {
"package:front_end/src/fasta/builder/modifier_builder.dart":
76.47058823529412,
"package:front_end/src/fasta/builder/named_type_builder.dart":
74.94949494949495,
74.74747474747475,
"package:front_end/src/fasta/builder/never_type_declaration_builder.dart":
76.92307692307693,
"package:front_end/src/fasta/builder/null_type_declaration_builder.dart":
@ -88,7 +88,7 @@ const Map<String, double> _expect = {
0.0,
"package:front_end/src/fasta/builder/prefix_builder.dart": 89.1891891891892,
"package:front_end/src/fasta/builder/record_type_builder.dart":
74.35897435897436,
77.43589743589745,
"package:front_end/src/fasta/builder/type_alias_builder.dart":
78.99159663865547,
"package:front_end/src/fasta/builder/type_builder.dart": 77.77777777777779,
@ -97,15 +97,15 @@ const Map<String, double> _expect = {
78.42227378190255,
"package:front_end/src/fasta/builder/void_type_declaration_builder.dart":
100.0,
"package:front_end/src/fasta/builder_graph.dart": 54.0,
"package:front_end/src/fasta/builder_graph.dart": 54.71698113207547,
"package:front_end/src/fasta/codes/fasta_codes_cfe_generated.dart":
73.0892742453436,
"package:front_end/src/fasta/codes/type_labeler.dart": 83.68336025848141,
"package:front_end/src/fasta/codes/type_labeler.dart": 83.57723577235772,
"package:front_end/src/fasta/combinator.dart": 100.0,
"package:front_end/src/fasta/command_line_reporting.dart": 68.68686868686868,
"package:front_end/src/fasta/compiler_context.dart": 90.1639344262295,
"package:front_end/src/fasta/configuration.dart": 100.0,
"package:front_end/src/fasta/crash.dart": 57.95454545454546,
"package:front_end/src/fasta/crash.dart": 59.09090909090909,
"package:front_end/src/fasta/dill/dill_builder_mixins.dart": 100.0,
"package:front_end/src/fasta/dill/dill_class_builder.dart": 92.34972677595628,
"package:front_end/src/fasta/dill/dill_extension_builder.dart":
@ -117,7 +117,7 @@ const Map<String, double> _expect = {
"package:front_end/src/fasta/dill/dill_extension_type_member_builder.dart":
83.76623376623377,
"package:front_end/src/fasta/dill/dill_library_builder.dart": 78.134110787172,
"package:front_end/src/fasta/dill/dill_loader.dart": 80.0,
"package:front_end/src/fasta/dill/dill_loader.dart": 76.58536585365854,
"package:front_end/src/fasta/dill/dill_member_builder.dart":
86.52173913043478,
"package:front_end/src/fasta/dill/dill_target.dart": 74.35897435897436,
@ -129,25 +129,28 @@ const Map<String, double> _expect = {
"package:front_end/src/fasta/ignored_parser_errors.dart": 100.0,
"package:front_end/src/fasta/import.dart": 100.0,
"package:front_end/src/fasta/import_chains.dart": 96.96969696969697,
"package:front_end/src/fasta/incremental_compiler.dart": 47.0,
"package:front_end/src/fasta/incremental_compiler.dart": 47.61111111111111,
"package:front_end/src/fasta/incremental_serializer.dart": 0.0,
"package:front_end/src/fasta/kernel/augmentation_lowering.dart": 100.0,
"package:front_end/src/fasta/kernel/benchmarker.dart": 0.0,
"package:front_end/src/fasta/kernel/body_builder.dart": 90.0,
"package:front_end/src/fasta/kernel/body_builder.dart": 90.95321558581637,
"package:front_end/src/fasta/kernel/body_builder_context.dart":
68.31501831501832,
"package:front_end/src/fasta/kernel/collections.dart": 36.44736842105264,
"package:front_end/src/fasta/kernel/combined_member_signature.dart":
91.29411764705883,
"package:front_end/src/fasta/kernel/const_conditional_simplifier.dart": 50.0,
"package:front_end/src/fasta/kernel/constant_collection_builders.dart": 64.0,
"package:front_end/src/fasta/kernel/constant_evaluator.dart": 78.0,
"package:front_end/src/fasta/kernel/constant_collection_builders.dart":
64.92307692307693,
"package:front_end/src/fasta/kernel/constant_evaluator.dart":
78.68572647749093,
"package:front_end/src/fasta/kernel/constant_int_folder.dart":
92.04545454545455,
"package:front_end/src/fasta/kernel/constructor_tearoff_lowering.dart":
95.11278195488721,
"package:front_end/src/fasta/kernel/exhaustiveness.dart": 74.57098283931357,
"package:front_end/src/fasta/kernel/expression_generator.dart": 79.0,
"package:front_end/src/fasta/kernel/expression_generator.dart":
79.69046114971573,
"package:front_end/src/fasta/kernel/expression_generator_helper.dart": 100.0,
"package:front_end/src/fasta/kernel/forest.dart": 90.27777777777779,
"package:front_end/src/fasta/kernel/forwarding_node.dart": 94.4927536231884,
@ -174,7 +177,7 @@ const Map<String, double> _expect = {
"package:front_end/src/fasta/kernel/invalid_type.dart": 74.13793103448276,
"package:front_end/src/fasta/kernel/kernel_constants.dart": 45.45454545454545,
"package:front_end/src/fasta/kernel/kernel_helper.dart": 98.95833333333334,
"package:front_end/src/fasta/kernel/kernel_target.dart": 78.0,
"package:front_end/src/fasta/kernel/kernel_target.dart": 79.03103709311128,
"package:front_end/src/fasta/kernel/kernel_variable_builder.dart":
61.111111111111114,
"package:front_end/src/fasta/kernel/late_lowering.dart": 100.0,
@ -195,7 +198,7 @@ const Map<String, double> _expect = {
15.238095238095239,
"package:front_end/src/fasta/kernel/try_constant_evaluator.dart":
19.753086419753085,
"package:front_end/src/fasta/kernel/type_algorithms.dart": 93.4560327198364,
"package:front_end/src/fasta/kernel/type_algorithms.dart": 93.96728016359918,
"package:front_end/src/fasta/kernel/type_builder_computer.dart":
90.20618556701031,
"package:front_end/src/fasta/kernel/utils.dart": 37.93103448275862,
@ -205,18 +208,20 @@ const Map<String, double> _expect = {
"package:front_end/src/fasta/modifier.dart": 100.0,
"package:front_end/src/fasta/operator.dart": 100.0,
"package:front_end/src/fasta/problems.dart": 0.0,
"package:front_end/src/fasta/scope.dart": 79.0,
"package:front_end/src/fasta/scope.dart": 79.22606924643586,
"package:front_end/src/fasta/source/class_declaration.dart":
80.29556650246306,
"package:front_end/src/fasta/source/diet_listener.dart": 89.0,
"package:front_end/src/fasta/source/diet_listener.dart": 89.18539325842697,
"package:front_end/src/fasta/source/diet_parser.dart": 100.0,
"package:front_end/src/fasta/source/name_scheme.dart": 93.19148936170212,
"package:front_end/src/fasta/source/outline_builder.dart": 91.54411764705883,
"package:front_end/src/fasta/source/offset_map.dart": 95.16129032258065,
"package:front_end/src/fasta/source/outline_builder.dart": 91.37159137159138,
"package:front_end/src/fasta/source/redirecting_factory_body.dart":
94.44444444444444,
"package:front_end/src/fasta/source/source_builder_mixins.dart":
88.8268156424581,
"package:front_end/src/fasta/source/source_class_builder.dart": 85.9375,
"package:front_end/src/fasta/source/source_class_builder.dart":
85.51136363636364,
"package:front_end/src/fasta/source/source_constructor_builder.dart":
92.65658747300216,
"package:front_end/src/fasta/source/source_enum_builder.dart":
@ -228,12 +233,12 @@ const Map<String, double> _expect = {
"package:front_end/src/fasta/source/source_factory_builder.dart":
92.22222222222223,
"package:front_end/src/fasta/source/source_field_builder.dart":
89.18507235338919,
90.0990099009901,
"package:front_end/src/fasta/source/source_function_builder.dart":
89.29663608562691,
"package:front_end/src/fasta/source/source_library_builder.dart":
82.6852338413032,
"package:front_end/src/fasta/source/source_loader.dart": 79.0,
83.27291558777836,
"package:front_end/src/fasta/source/source_loader.dart": 79.344409519533,
"package:front_end/src/fasta/source/source_member_builder.dart":
40.32258064516129,
"package:front_end/src/fasta/source/source_procedure_builder.dart":
@ -242,7 +247,7 @@ const Map<String, double> _expect = {
97.63313609467455,
"package:front_end/src/fasta/source/stack_listener_impl.dart":
64.44444444444444,
"package:front_end/src/fasta/ticker.dart": 73.0,
"package:front_end/src/fasta/ticker.dart": 73.07692307692307,
"package:front_end/src/fasta/type_inference/closure_context.dart":
84.23236514522821,
"package:front_end/src/fasta/type_inference/delayed_expressions.dart":
@ -255,9 +260,9 @@ const Map<String, double> _expect = {
"package:front_end/src/fasta/type_inference/inference_results.dart":
85.12820512820512,
"package:front_end/src/fasta/type_inference/inference_visitor.dart":
90.10645683869475,
90.17588521175654,
"package:front_end/src/fasta/type_inference/inference_visitor_base.dart":
83.98997134670488,
84.20487106017191,
"package:front_end/src/fasta/type_inference/matching_cache.dart":
80.26509572901325,
"package:front_end/src/fasta/type_inference/matching_expressions.dart":
@ -268,11 +273,11 @@ const Map<String, double> _expect = {
"package:front_end/src/fasta/type_inference/standard_bounds.dart":
71.42857142857143,
"package:front_end/src/fasta/type_inference/type_constraint_gatherer.dart":
60,
60.026041666666664,
"package:front_end/src/fasta/type_inference/type_demotion.dart":
77.77777777777779,
"package:front_end/src/fasta/type_inference/type_inference_engine.dart":
86.76975945017182,
88.06509945750453,
"package:front_end/src/fasta/type_inference/type_inferrer.dart":
51.17647058823529,
"package:front_end/src/fasta/type_inference/type_schema.dart":
@ -291,7 +296,7 @@ const Map<String, double> _expect = {
"package:front_end/src/fasta/util/parser_ast.dart": 5.567451820128479,
"package:front_end/src/fasta/util/parser_ast_helper.dart": 20.424013434089,
"package:front_end/src/fasta/util/textual_outline.dart": 86.54205607476636,
"package:front_end/src/kernel_generator_impl.dart": 0.5376344086021506,
"package:front_end/src/kernel_generator_impl.dart": 28.645833333333332,
"package:front_end/src/macros/isolate_macro_serializer.dart": 0.0,
"package:front_end/src/macros/macro_serializer.dart": 0.0,
"package:front_end/src/macros/macro_target.dart": 0.0,

View file

@ -767,7 +767,8 @@ class CompilationSetup {
}
CompilationSetup createCompilationSetup(
TestDescription description, FastaContext context) {
TestDescription description, FastaContext context,
{bool? forceVerifyTo}) {
List<Iterable<String>> errors = <Iterable<String>>[];
Uri? librariesSpecificationUri =
@ -816,6 +817,9 @@ CompilationSetup createCompilationSetup(
(context.compileMode != CompileMode.full || folderOptions.noVerify)
? false
: context.verify;
if (forceVerifyTo != null) {
compilerOptions.verify = forceVerifyTo;
}
compilerOptions.sdkSummary =
context._getPlatformUri(compilerOptions.target!, nnbdMode);
if (folderOptions.overwriteCurrentSdkVersion != null) {
@ -862,8 +866,9 @@ class FuzzCompiles
context.forcedExperimentalFlags[
ExperimentalFlag.alternativeInvalidationStrategy] = true;
CompilationSetup compilationSetup =
createCompilationSetup(result.description, context);
CompilationSetup compilationSetup = createCompilationSetup(
result.description, context,
forceVerifyTo: false);
Target backendTarget = compilationSetup.options.target;
if (backendTarget is TestTarget) {