Skip to content

[ConstraintSystem] Improve the "transitive conformance" heuristic and remove early conformance checking from DisjunctionStep::shouldSkip #38700

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

hborla
Copy link
Member

@hborla hborla commented Jul 30, 2021

The "transitive conformance" constraint is a generalization of the early conformance checking in DisjunctionStep::shouldSkip. The code in DisjunctionStep ignored the potential for implicit conversions if the best score is equal to the current score, because if the current path needs an implicit conversion to satisfy a conformance requirement, that score would be worse anyway. We can use this assumption when simplifying a transitive conformance constraint, and remove the conformance checking from DisjunctionStep.

hborla added 2 commits July 29, 2021 19:27
…ecking

implicit conversions if the type does not conform and the current score
is equal to the best score.

Implicit conversions will always increase the score, so if the current
score is equal to the best score and an implicit conversion is needed to
satisfy a conformance requirement, the solver would end up pruning that
path later on anyway. It's better to fail early.
DisjunctionStep::shouldSkip. This heuristic is generalized via the
transitive conformance constraint.
@hborla hborla requested a review from xedin July 30, 2021 02:38
@hborla
Copy link
Member Author

hborla commented Jul 30, 2021

@swift-ci please test source compatibility

@hborla
Copy link
Member Author

hborla commented Jul 30, 2021

@swift-ci please test compiler performance

Copy link
Contributor

@xedin xedin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome!

@hborla
Copy link
Member Author

hborla commented Jul 30, 2021

@swift-ci please smoke test

@hborla
Copy link
Member Author

hborla commented Jul 30, 2021

@swift-ci please test Windows platform

@swift-ci
Copy link
Contributor

Summary for main full

Regressions found (see below)

Debug-batch

debug-batch brief

Regressed (2)
name old new delta delta_pct
Frontend.NumInstructionsExecuted 34,751,882,704,667 64,456,880,559,833 29,704,997,855,166 85.48% ⛔
LLVM.NumLLVMBytesOutput 849,692,232 1,632,932,670 783,240,438 92.18% ⛔
Improved (0)
name old new delta delta_pct
Unchanged (delta < 1.0% or delta < 100.0ms) (0)
name old new delta delta_pct

debug-batch detailed

Regressed (219)
name old new delta delta_pct
AST.ImportSetCacheHit 1,027,790 1,872,924 845,134 82.23% ⛔
AST.ImportSetCacheMiss 157,996 325,372 167,376 105.94% ⛔
AST.ImportSetFoldHit 63,439 113,639 50,200 79.13% ⛔
AST.ImportSetFoldMiss 94,557 211,732 117,175 123.92% ⛔
AST.ModuleShadowCacheHit 1,681 3,804 2,123 126.29% ⛔
AST.ModuleShadowCacheMiss 641 1,640 999 155.85% ⛔
AST.ModuleVisibilityCacheHit 24,080 52,113 28,033 116.42% ⛔
AST.ModuleVisibilityCacheMiss 3,286 6,911 3,625 110.32% ⛔
AST.NumASTBytesAllocated 17,073,226,735 38,104,500,040 21,031,273,305 123.18% ⛔
AST.NumASTScopeExpansions 2,660,167 5,136,688 2,476,521 93.1% ⛔
AST.NumASTScopeLookups 2,818,145 5,412,190 2,594,045 92.05% ⛔
AST.NumDecls 64,070 130,205 66,135 103.22% ⛔
AST.NumDependencies 146,231 263,594 117,363 80.26% ⛔
AST.NumIncrementalDependencies 3,135 6,475 3,340 106.54% ⛔
AST.NumLoadedModules 88,328 196,973 108,645 123.0% ⛔
AST.NumLocalTypeDecls 181 255 74 40.88% ⛔
AST.NumModuleLookupClassMember 3,437 6,793 3,356 97.64% ⛔
AST.NumModuleLookupValue 34,696,663 55,367,974 20,671,311 59.58% ⛔
AST.NumObjCMethods 23,546 27,029 3,483 14.79% ⛔
AST.NumOperators 343 572 229 66.76% ⛔
AST.NumPrecedenceGroups 56 93 37 66.07% ⛔
AST.NumReferencedDynamicNames 75 155 80 106.67% ⛔
AST.NumReferencedMemberNames 6,126,617 10,460,212 4,333,595 70.73% ⛔
AST.NumReferencedTopLevelNames 559,452 1,022,838 463,386 82.83% ⛔
AST.NumSourceBuffers 135,406 260,927 125,521 92.7% ⛔
AST.NumSourceLines 2,342,724 4,459,912 2,117,188 90.37% ⛔
AST.NumSourceLinesPerSecond 1,772,488 4,075,944 2,303,456 129.96% ⛔
AST.NumTotalClangImportedEntities 858,896 1,683,552 824,656 96.01% ⛔
Frontend.MaxMallocUsage 287,643,551,744 655,008,150,872 367,364,599,128 127.72% ⛔
Frontend.NumInstructionsExecuted 34,751,882,704,667 64,456,880,559,833 29,704,997,855,166 85.48% ⛔
Frontend.NumProcessFailures 22 39 17 77.27% ⛔
IRGen.IRGenRequest 11,819 22,599 10,780 91.21% ⛔
IRModule.NumGOTEntries 101,950 212,724 110,774 108.66% ⛔
IRModule.NumIRAliases 105,221 185,029 79,808 75.85% ⛔
IRModule.NumIRBasicBlocks 3,284,711 6,974,646 3,689,935 112.34% ⛔
IRModule.NumIRFunctions 1,635,726 3,205,936 1,570,210 95.99% ⛔
IRModule.NumIRGlobals 1,736,702 3,214,501 1,477,799 85.09% ⛔
IRModule.NumIRInsts 37,145,321 73,201,397 36,056,076 97.07% ⛔
IRModule.NumIRNamedMetaData 61,240 115,177 53,937 88.07% ⛔
IRModule.NumIRValueSymbols 3,146,386 5,987,752 2,841,366 90.31% ⛔
LLVM.NumLLVMBytesOutput 849,692,232 1,632,932,670 783,240,438 92.18% ⛔
Parse.NumFunctionsParsed 130,286 261,061 130,775 100.38% ⛔
Parse.NumIterableDeclContextParsed 247,308 503,732 256,424 103.69% ⛔
Parse.ParseAbstractFunctionBodyRequest 117,345 239,229 121,884 103.87% ⛔
Parse.ParseMembersRequest 193,383 378,315 184,932 95.63% ⛔
Parse.ParseSourceFileRequest 134,649 258,726 124,077 92.15% ⛔
SILGen.ASTLoweringRequest 12,375 23,642 11,267 91.05% ⛔
SILModule.NumSILGenFunctions 1,035,626 2,032,983 997,357 96.3% ⛔
SILModule.NumSILGenGlobalVariables 21,790 52,307 30,517 140.05% ⛔
SILModule.NumSILGenVtables 11,840 24,609 12,769 107.85% ⛔
SILModule.NumSILGenWitnessTables 67,475 124,316 56,841 84.24% ⛔
SILModule.NumSILOptFunctions 1,262,068 2,515,382 1,253,314 99.31% ⛔
SILModule.NumSILOptGlobalVariables 22,652 53,927 31,275 138.07% ⛔
SILModule.NumSILOptVtables 11,868 24,703 12,835 108.15% ⛔
SILModule.NumSILOptWitnessTables 87,092 167,238 80,146 92.02% ⛔
SILOptimizer.ExecuteSILPipelineRequest 47,853 91,483 43,630 91.18% ⛔
Sema.ABIMembersRequest 44,202 90,104 45,902 103.85% ⛔
Sema.AbstractGenericSignatureRequest 14,583 31,643 17,060 116.99% ⛔
Sema.AccessLevelRequest 4,459,301 12,642,557 8,183,256 183.51% ⛔
Sema.ActorIsolationRequest 1,377,787 2,751,563 1,373,776 99.71% ⛔
Sema.AllMembersRequest 78,611 160,285 81,674 103.9% ⛔
Sema.AnyObjectLookupRequest 107 224 117 109.35% ⛔
Sema.ApplyAccessNoteRequest 965,330 1,927,305 961,975 99.65% ⛔
Sema.AreAllStoredPropertiesDefaultInitableRequest 8,972 19,137 10,165 113.3% ⛔
Sema.AttachedPropertyWrapperTypeRequest 4,226 10,522 6,296 148.98% ⛔
Sema.AttachedPropertyWrappersRequest 508,500 970,681 462,181 90.89% ⛔
Sema.AttachedResultBuilderRequest 220,950 438,417 217,467 98.42% ⛔
Sema.BodyInitKindRequest 22,806 45,152 22,346 97.98% ⛔
Sema.CallerSideDefaultArgExprRequest 44,817 100,637 55,820 124.55% ⛔
Sema.CheckInconsistentImplementationOnlyImportsRequest 2,895 6,512 3,617 124.94% ⛔
Sema.CheckRedeclarationRequest 454,189 906,741 452,552 99.64% ⛔
Sema.ClassAncestryFlagsRequest 50,698 90,618 39,920 78.74% ⛔
Sema.ClosureHasExplicitResultRequest 38,384 84,804 46,420 120.94% ⛔
Sema.CollectOverriddenDeclsRequest 2,476,438 7,967,703 5,491,265 221.74% ⛔
Sema.CompareDeclSpecializationRequest 242,415 475,099 232,684 95.99% ⛔
Sema.ConditionalRequirementsRequest 203,076 431,517 228,441 112.49% ⛔
Sema.CustomAttrNominalRequest 1,234 1,908 674 54.62% ⛔
Sema.CustomAttrTypeRequest 478 876 398 83.26% ⛔
Sema.DefaultAndMaxAccessLevelRequest 26,887 54,117 27,230 101.28% ⛔
Sema.DefaultArgumentExprRequest 20,124 36,404 16,280 80.9% ⛔
Sema.DefaultArgumentInitContextRequest 160 283 123 76.88% ⛔
Sema.DefaultDefinitionTypeRequest 2,633 6,095 3,462 131.48% ⛔
Sema.DefaultTypeRequest 115,231 244,601 129,370 112.27% ⛔
Sema.DerivativeAttrOriginalDeclRequest 0 8 8 100.0% ⛔
Sema.DirectLookupRequest 20,948,603 36,164,871 15,216,268 72.64% ⛔
Sema.DirectOperatorLookupRequest 839,800 1,412,231 572,431 68.16% ⛔
Sema.DirectPrecedenceGroupLookupRequest 387,756 622,597 234,841 60.56% ⛔
Sema.DynamicallyReplacedDeclRequest 483,233 997,462 514,229 106.41% ⛔
Sema.EnumRawTypeRequest 10,773 22,939 12,166 112.93% ⛔
Sema.EnumRawValuesRequest 5,598 10,708 5,110 91.28% ⛔
Sema.ExistentialConformsToSelfRequest 7,509 15,869 8,360 111.33% ⛔
Sema.ExistentialTypeSupportedRequest 7,881 14,176 6,295 79.88% ⛔
Sema.ExtendedNominalRequest 242,107 468,190 226,083 93.38% ⛔
Sema.ExtendedTypeRequest 35,921 71,215 35,294 98.25% ⛔
Sema.FragileFunctionKindRequest 687,578 1,394,364 706,786 102.79% ⛔
Sema.FunctionOperatorRequest 6,000 9,895 3,895 64.92% ⛔
Sema.GenericParamListRequest 1,879,057 3,953,274 2,074,217 110.39% ⛔
Sema.GenericSignatureRequest 1,081,586 2,121,628 1,040,042 96.16% ⛔
Sema.GetDestructorRequest 11,578 22,149 10,571 91.3% ⛔
Sema.GetImplicitSendableRequest 73,481 196,352 122,871 167.21% ⛔
Sema.GlobalActorAttributeRequest 1,621,255 3,271,618 1,650,363 101.8% ⛔
Sema.GlobalActorInstanceRequest 99 183 84 84.85% ⛔
Sema.HasCircularInheritedProtocolsRequest 4,874 9,052 4,178 85.72% ⛔
Sema.HasCircularRawValueRequest 3,780 8,734 4,954 131.06% ⛔
Sema.HasDefaultInitRequest 22,411 47,543 25,132 112.14% ⛔
Sema.HasDynamicMemberLookupAttributeRequest 234,378 482,269 247,891 105.77% ⛔
Sema.HasImplementationOnlyImportsRequest 134,020 256,164 122,144 91.14% ⛔
Sema.HasIsolatedSelfRequest 4,484,417 10,585,108 6,100,691 136.04% ⛔
Sema.HasMemberwiseInitRequest 9,092 20,494 11,402 125.41% ⛔
Sema.HasMissingDesignatedInitializersRequest 9,516 20,091 10,575 111.13% ⛔
Sema.HasUserDefinedDesignatedInitRequest 22,423 47,555 25,132 112.08% ⛔
Sema.InferredGenericSignatureRequest 87,505 148,171 60,666 69.33% ⛔
Sema.InheritedDeclsReferencedRequest 2,333,304 4,947,304 2,614,000 112.03% ⛔
Sema.InheritedProtocolsRequest 233,959 495,083 261,124 111.61% ⛔
Sema.InheritedTypeRequest 132,578 241,904 109,326 82.46% ⛔
Sema.InheritsSuperclassInitializersRequest 13,185 23,208 10,023 76.02% ⛔
Sema.InitKindRequest 44,256 85,963 41,707 94.24% ⛔
Sema.InterfaceTypeRequest 5,372,559 13,164,827 7,792,268 145.04% ⛔
Sema.IsABICompatibleOverrideRequest 63,993 125,652 61,659 96.35% ⛔
Sema.IsAccessorTransparentRequest 158,229 302,034 143,805 90.88% ⛔
Sema.IsActorRequest 564,131 1,262,278 698,147 123.76% ⛔
Sema.IsCallableNominalTypeRequest 988 2,239 1,251 126.62% ⛔
Sema.IsDeclRefinementOfRequest 22,127 35,872 13,745 62.12% ⛔
Sema.IsDefaultActorRequest 17,828 36,351 18,523 103.9% ⛔
Sema.IsDistributedActorRequest 557,177 1,247,663 690,486 123.93% ⛔
Sema.IsDistributedFuncRequest 336,050 679,538 343,488 102.21% ⛔
Sema.IsDynamicRequest 808,825 1,605,113 796,288 98.45% ⛔
Sema.IsFinalRequest 1,150,561 2,470,882 1,320,321 114.75% ⛔
Sema.IsGetterMutatingRequest 218,283 405,661 187,378 85.84% ⛔
Sema.IsImplicitlyUnwrappedOptionalRequest 1,170,471 2,267,515 1,097,044 93.73% ⛔
Sema.IsObjCRequest 730,810 1,441,616 710,806 97.26% ⛔
Sema.IsSetterMutatingRequest 168,107 328,563 160,456 95.45% ⛔
Sema.IsStaticRequest 477,133 859,852 382,719 80.21% ⛔
Sema.LazyStoragePropertyRequest 2,681 2,795 114 4.25% ⛔
Sema.LookupAllConformancesInContextRequest 573,244 1,655,082 1,081,838 188.72% ⛔
Sema.LookupConformanceInModuleRequest 54,603,832 72,379,854 17,776,022 32.55% ⛔
Sema.LookupInModuleRequest 2,988,394 5,865,024 2,876,630 96.26% ⛔
Sema.LookupInfixOperatorRequest 25,158 51,072 25,914 103.01% ⛔
Sema.LookupPostfixOperatorRequest 29 38 9 31.03% ⛔
Sema.LookupPrecedenceGroupRequest 12,780 23,978 11,198 87.62% ⛔
Sema.LookupPrefixOperatorRequest 86 161 75 87.21% ⛔
Sema.MangleLocalTypeDeclRequest 362 511 149 41.16% ⛔
Sema.ModuleImplicitImportsRequest 3,444 7,541 4,097 118.96% ⛔
Sema.ModuleQualifiedLookupRequest 1,237,790 2,615,257 1,377,467 111.28% ⛔
Sema.NamedLazyMemberLoadSuccessCount 10,509,846 18,187,539 7,677,693 73.05% ⛔
Sema.NamingPatternRequest 105,930 208,589 102,659 96.91% ⛔
Sema.NeedsNewVTableEntryRequest 354,064 653,980 299,916 84.71% ⛔
Sema.NumAccessorBodiesSynthesized 93,572 185,394 91,822 98.13% ⛔
Sema.NumAccessorsSynthesized 156,168 282,889 126,721 81.14% ⛔
Sema.NumConformanceAccessPathsRecorded 190,807 433,631 242,824 127.26% ⛔
Sema.NumConformancesDeserialized 3,325,569 8,550,694 5,225,125 157.12% ⛔
Sema.NumConstraintScopes 17,073,104 27,591,912 10,518,808 61.61% ⛔
Sema.NumConstraintsConsideredForEdgeContraction 507,344 1,282,044 774,700 152.7% ⛔
Sema.NumCyclicOneWayComponentsCollapsed 174 260 86 49.43% ⛔
Sema.NumDeclsDeserialized 25,250,352 63,062,998 37,812,646 149.75% ⛔
Sema.NumDeclsTypechecked 655,118 1,304,624 649,506 99.14% ⛔
Sema.NumGenericSignatureBuilders 449,265 993,536 544,271 121.15% ⛔
Sema.NumLazyIterableDeclContexts 3,106,263 7,091,905 3,985,642 128.31% ⛔
Sema.NumLazyRequirementSignatures 270,954 615,746 344,792 127.25% ⛔
Sema.NumLazyRequirementSignaturesLoaded 204,230 458,812 254,582 124.65% ⛔
Sema.NumLeafScopes 13,018,754 20,874,387 7,855,633 60.34% ⛔
Sema.NumRedundantRequirementSteps 389,340 620,963 231,623 59.49% ⛔
Sema.NumTypesDeserialized 8,181,248 19,324,184 11,142,936 136.2% ⛔
Sema.NumUnloadedLazyIterableDeclContexts 1,995,747 4,207,229 2,211,482 110.81% ⛔
Sema.OpaqueReadOwnershipRequest 142,831 259,566 116,735 81.73% ⛔
Sema.OpaqueResultTypeRequest 234 336 102 43.59% ⛔
Sema.OperatorPrecedenceGroupRequest 408 672 264 64.71% ⛔
Sema.OverriddenDeclsRequest 1,397,990 3,068,307 1,670,317 119.48% ⛔
Sema.ParamSpecifierRequest 621,764 1,163,619 541,855 87.15% ⛔
Sema.PatternBindingEntryRequest 218,293 436,295 218,002 99.87% ⛔
Sema.PatternTypeRequest 263,156 514,710 251,554 95.59% ⛔
Sema.PolymorphicEffectKindRequest 49,844 100,917 51,073 102.47% ⛔
Sema.PreCheckResultBuilderRequest 536 761 225 41.98% ⛔
Sema.PrimarySourceFilesRequest 3,444 7,541 4,097 118.96% ⛔
Sema.PropertyWrapperAuxiliaryVariablesRequest 227,631 452,105 224,474 98.61% ⛔
Sema.PropertyWrapperBackingPropertyTypeRequest 4,226 10,522 6,296 148.98% ⛔
Sema.PropertyWrapperInitializerInfoRequest 152,715 299,955 147,240 96.41% ⛔
Sema.PropertyWrapperLValuenessRequest 339 575 236 69.62% ⛔
Sema.PropertyWrapperMutabilityRequest 216,508 402,633 186,125 85.97% ⛔
Sema.PropertyWrapperTypeInfoRequest 91 193 102 112.09% ⛔
Sema.ProtocolRequiresClassRequest 17,527 30,909 13,382 76.35% ⛔
Sema.ProvideDefaultImplForRequest 2,476,438 7,967,703 5,491,265 221.74% ⛔
Sema.QualifiedLookupRequest 2,684,126 5,287,547 2,603,421 96.99% ⛔
Sema.RequirementRequest 35,033 86,382 51,349 146.57% ⛔
Sema.RequirementSignatureRequest 231,040 504,984 273,944 118.57% ⛔
Sema.RequiresOpaqueAccessorsRequest 638,022 1,222,315 584,293 91.58% ⛔
Sema.RequiresOpaqueModifyCoroutineRequest 127,982 241,099 113,117 88.39% ⛔
Sema.ResolveImplicitMemberRequest 222,809 458,776 235,967 105.91% ⛔
Sema.ResolveTypeRequest 1,662,144 3,035,677 1,373,533 82.64% ⛔
Sema.ResultBuilderTypeRequest 168,530 336,763 168,233 99.82% ⛔
Sema.ResultTypeRequest 319,343 610,953 291,610 91.32% ⛔
Sema.SPIGroupsRequest 2,494,065 5,307,003 2,812,938 112.79% ⛔
Sema.ScopedImportLookupRequest 41 722 681 1660.98% ⛔
Sema.SelfAccessKindRequest 337,168 590,793 253,625 75.22% ⛔
Sema.SelfBoundsFromWhereClauseRequest 861,779 1,520,769 658,990 76.47% ⛔
Sema.SetterAccessLevelRequest 82,310 151,006 68,696 83.46% ⛔
Sema.SimpleDidSetRequest 804,658 2,145,727 1,341,069 166.66% ⛔
Sema.SpecializeAttrTargetDeclRequest 777 2,852 2,075 267.05% ⛔
Sema.StorageImplInfoRequest 709,630 1,394,134 684,504 96.46% ⛔
Sema.StoredPropertiesAndMissingMembersRequest 25,222 53,612 28,390 112.56% ⛔
Sema.StoredPropertiesRequest 130,528 281,167 150,639 115.41% ⛔
Sema.StructuralTypeRequest 418 972 554 132.54% ⛔
Sema.SuperclassDeclRequest 160,529 345,283 184,754 115.09% ⛔
Sema.SuperclassTypeRequest 20,052 39,488 19,436 96.93% ⛔
Sema.SynthesizeAccessorRequest 156,168 282,889 126,721 81.14% ⛔
Sema.SynthesizeDefaultInitRequest 2,696 4,973 2,277 84.46% ⛔
Sema.SynthesizeMainFunctionRequest 43,359 88,669 45,310 104.5% ⛔
Sema.SynthesizeMemberwiseInitRequest 1,319 3,485 2,166 164.22% ⛔
Sema.TypeCheckFunctionBodyRequest 244,907 491,743 246,836 100.79% ⛔
Sema.TypeCheckSourceFileRequest 12,293 23,154 10,861 88.35% ⛔
Sema.TypeDeclsFromWhereClauseRequest 13,034 25,538 12,504 95.93% ⛔
Sema.TypeWitnessRequest 4,683 8,615 3,932 83.96% ⛔
Sema.USRGenerationRequest 3,033,853 9,207,614 6,173,761 203.5% ⛔
Sema.UnderlyingTypeDeclsReferencedRequest 153,427 259,603 106,176 69.2% ⛔
Sema.UnderlyingTypeRequest 13,083 30,615 17,532 134.01% ⛔
Sema.UnqualifiedLookupRequest 2,088,567 3,911,341 1,822,774 87.27% ⛔
Sema.ValidatePrecedenceGroupRequest 97,656 177,747 80,091 82.01% ⛔
Sema.ValueWitnessRequest 42,881 66,378 23,497 54.8% ⛔
TBDGen.PublicSymbolsRequest 11,826 22,613 10,787 91.21% ⛔
Improved (0)
name old new delta delta_pct
Unchanged (delta < 1.0% or delta < 100.0ms) (38)
name old new delta delta_pct
AST.NumLinkLibraries 0 0 0 0.0%
IRGen.OptimizedIRRequest 0 0 0 0.0%
IRGen.SymbolObjectCodeRequest 0 0 0 0.0%
IRModule.NumIRComdatSymbols 0 0 0 0.0%
IRModule.NumIRIFuncs 0 0 0 0.0%
Parse.CodeCompletionSecondPassRequest 0 0 0 0.0%
SILGen.ParseSILModuleRequest 0 0 0 0.0%
SILModule.NumSILGenDefaultWitnessTables 0 0 0 0.0%
SILModule.NumSILOptDefaultWitnessTables 0 0 0 0.0%
SILOptimizer.LoweredSILRequest 0 0 0 0.0%
Sema.CodeCompletionFileRequest 0 0 0 0.0%
Sema.ConformanceHasEffectRequest 0 0 0 0.0%
Sema.CursorInfoRequest 0 0 0 0.0%
Sema.DifferentiableAttributeTypeCheckRequest 0 0 0 0.0%
Sema.HasDistributedActorLocalInitRequest 0 0 0 0.0%
Sema.HasDynamicCallableAttributeRequest 0 0 0 0.0%
Sema.IsDeclApplicableRequest 0 0 0 0.0%
Sema.ModuleLibraryLevelRequest 0 0 0 0.0%
Sema.NumCrossImportsChecked 0 0 0 0.0%
Sema.NumCrossImportsFound 0 0 0 0.0%
Sema.NumRequirementMachineCompletionSteps 0 0 0 0.0%
Sema.NumRequirementMachineUnifiedConcreteTerms 0 0 0 0.0%
Sema.NumRequirementMachines 0 0 0 0.0%
Sema.PolymorphicEffectRequirementsRequest 0 0 0 0.0%
Sema.RangeInfoRequest 0 0 0 0.0%
Sema.RenamedDeclRequest 12 12 0 0.0%
Sema.ResolveEffectiveMemberwiseInitRequest 0 0 0 0.0%
Sema.ResolveProtocolNameRequest 0 0 0 0.0%
Sema.ResolveTypeEraserTypeRequest 0 0 0 0.0%
Sema.RootAndResultTypeOfKeypathDynamicMemberRequest 0 0 0 0.0%
Sema.RootTypeOfKeypathDynamicMemberRequest 0 0 0 0.0%
Sema.TangentStoredPropertyRequest 0 0 0 0.0%
Sema.TypeCheckASTNodeAtLocRequest 0 0 0 0.0%
Sema.TypeEraserHasViableInitRequest 0 0 0 0.0%
Sema.TypeRelationCheckRequest 0 0 0 0.0%
TBDGen.APIGenRequest 0 0 0 0.0%
TBDGen.GenerateTBDRequest 0 0 0 0.0%
TBDGen.SymbolSourceMapRequest 0 0 0 0.0%

Release

release brief

Regressed (0)
name old new delta delta_pct
Improved (0)
name old new delta delta_pct
Unchanged (delta < 1.0% or delta < 100.0ms) (2)
name old new delta delta_pct
Frontend.NumInstructionsExecuted 92,880,312,785,969 92,902,816,707,392 22,503,921,423 0.02%
LLVM.NumLLVMBytesOutput 2,340,938,464 2,340,944,400 5,936 0.0%

release detailed

Regressed (2)
name old new delta delta_pct
Sema.NumConstraintScopes 31,457,104 34,383,048 2,925,944 9.3% ⛔
Sema.NumLeafScopes 22,752,639 25,403,546 2,650,907 11.65% ⛔
Improved (3)
name old new delta delta_pct
Sema.ConditionalRequirementsRequest 244,543 241,589 -2,954 -1.21% ✅
Sema.IsDeclRefinementOfRequest 33,224 30,389 -2,835 -8.53% ✅
Sema.LookupConformanceInModuleRequest 111,138,901 107,359,268 -3,779,633 -3.4% ✅
Unchanged (delta < 1.0% or delta < 100.0ms) (252)
name old new delta delta_pct
AST.ImportSetCacheHit 1,800,423 1,800,501 78 0.0%
AST.ImportSetCacheMiss 76,909 76,908 -1 -0.0%
AST.ImportSetFoldHit 33,764 33,764 0 0.0%
AST.ImportSetFoldMiss 43,145 43,144 -1 -0.0%
AST.ModuleShadowCacheHit 4,920 4,920 0 0.0%
AST.ModuleShadowCacheMiss 1,820 1,820 0 0.0%
AST.ModuleVisibilityCacheHit 55,597 55,597 0 0.0%
AST.ModuleVisibilityCacheMiss 4,901 4,901 0 0.0%
AST.NumASTBytesAllocated 13,172,862,084 13,169,847,425 -3,014,659 -0.02%
AST.NumASTScopeExpansions 4,080,868 4,080,864 -4 -0.0%
AST.NumASTScopeLookups 5,966,249 5,966,250 1 0.0%
AST.NumDecls 199,275 199,275 0 0.0%
AST.NumDependencies 70,177 70,175 -2 -0.0%
AST.NumIncrementalDependencies 0 0 0 0.0%
AST.NumLinkLibraries 0 0 0 0.0%
AST.NumLoadedModules 36,351 36,350 -1 -0.0%
AST.NumLocalTypeDecls 330 330 0 0.0%
AST.NumModuleLookupClassMember 9,989 9,989 0 0.0%
AST.NumModuleLookupValue 42,394,704 42,392,340 -2,364 -0.01%
AST.NumObjCMethods 30,263 30,263 0 0.0%
AST.NumOperators 801 801 0 0.0%
AST.NumPrecedenceGroups 130 130 0 0.0%
AST.NumReferencedDynamicNames 0 0 0 0.0%
AST.NumReferencedMemberNames 3,956 3,956 0 0.0%
AST.NumReferencedTopLevelNames 352 352 0 0.0%
AST.NumSourceBuffers 36,253 36,252 -1 -0.0%
AST.NumSourceLines 6,670,677 6,670,677 0 0.0%
AST.NumSourceLinesPerSecond 873,445 877,278 3,833 0.44%
AST.NumTotalClangImportedEntities 614,929 614,871 -58 -0.01%
Frontend.MaxMallocUsage 340,550,855,832 340,600,817,040 49,961,208 0.01%
Frontend.NumInstructionsExecuted 92,880,312,785,969 92,902,816,707,392 22,503,921,423 0.02%
Frontend.NumProcessFailures 36 36 0 0.0%
IRGen.IRGenRequest 12 12 0 0.0%
IRGen.OptimizedIRRequest 0 0 0 0.0%
IRGen.SymbolObjectCodeRequest 0 0 0 0.0%
IRModule.NumGOTEntries 292,105 292,105 0 0.0%
IRModule.NumIRAliases 199,612 199,612 0 0.0%
IRModule.NumIRBasicBlocks 6,293,294 6,293,294 0 0.0%
IRModule.NumIRComdatSymbols 0 0 0 0.0%
IRModule.NumIRFunctions 3,601,364 3,601,364 0 0.0%
IRModule.NumIRGlobals 4,062,824 4,062,824 0 0.0%
IRModule.NumIRIFuncs 0 0 0 0.0%
IRModule.NumIRInsts 61,313,300 61,313,300 0 0.0%
IRModule.NumIRNamedMetaData 164,920 164,920 0 0.0%
IRModule.NumIRValueSymbols 7,327,813 7,327,813 0 0.0%
LLVM.NumLLVMBytesOutput 2,340,938,464 2,340,944,400 5,936 0.0%
Parse.CodeCompletionSecondPassRequest 0 0 0 0.0%
Parse.NumFunctionsParsed 397,279 397,279 0 0.0%
Parse.NumIterableDeclContextParsed 134,020 134,020 0 0.0%
Parse.ParseAbstractFunctionBodyRequest 359,030 359,030 0 0.0%
Parse.ParseMembersRequest 419 419 0 0.0%
Parse.ParseSourceFileRequest 34,766 34,766 0 0.0%
SILGen.ASTLoweringRequest 1,556 1,556 0 0.0%
SILGen.ParseSILModuleRequest 0 0 0 0.0%
SILModule.NumSILGenDefaultWitnessTables 0 0 0 0.0%
SILModule.NumSILGenFunctions 1,576,034 1,576,034 0 0.0%
SILModule.NumSILGenGlobalVariables 77,985 77,985 0 0.0%
SILModule.NumSILGenVtables 22,420 22,420 0 0.0%
SILModule.NumSILGenWitnessTables 92,468 92,468 0 0.0%
SILModule.NumSILOptDefaultWitnessTables 0 0 0 0.0%
SILModule.NumSILOptFunctions 1,323,746 1,323,746 0 0.0%
SILModule.NumSILOptGlobalVariables 59,832 59,832 0 0.0%
SILModule.NumSILOptVtables 27,124 27,124 0 0.0%
SILModule.NumSILOptWitnessTables 94,477 94,477 0 0.0%
SILOptimizer.ExecuteSILPipelineRequest 6,212 6,212 0 0.0%
SILOptimizer.LoweredSILRequest 0 0 0 0.0%
Sema.ABIMembersRequest 122,588 122,588 0 0.0%
Sema.AbstractGenericSignatureRequest 36,626 36,626 0 0.0%
Sema.AccessLevelRequest 2,166,202 2,166,199 -3 -0.0%
Sema.ActorIsolationRequest 2,108,030 2,110,067 2,037 0.1%
Sema.AllMembersRequest 120,245 120,245 0 0.0%
Sema.AnyObjectLookupRequest 345 345 0 0.0%
Sema.ApplyAccessNoteRequest 2,276,198 2,276,189 -9 -0.0%
Sema.AreAllStoredPropertiesDefaultInitableRequest 19,450 19,450 0 0.0%
Sema.AttachedPropertyWrapperTypeRequest 10,566 10,566 0 0.0%
Sema.AttachedPropertyWrappersRequest 1,048,969 1,048,963 -6 -0.0%
Sema.AttachedResultBuilderRequest 618,870 618,866 -4 -0.0%
Sema.BodyInitKindRequest 64,825 64,825 0 0.0%
Sema.CallerSideDefaultArgExprRequest 132,824 132,824 0 0.0%
Sema.CheckInconsistentImplementationOnlyImportsRequest 1,588 1,588 0 0.0%
Sema.CheckRedeclarationRequest 1,382,644 1,382,641 -3 -0.0%
Sema.ClassAncestryFlagsRequest 61,600 61,600 0 0.0%
Sema.ClosureHasExplicitResultRequest 130,417 130,412 -5 -0.0%
Sema.CodeCompletionFileRequest 0 0 0 0.0%
Sema.CollectOverriddenDeclsRequest 0 0 0 0.0%
Sema.CompareDeclSpecializationRequest 551,720 551,716 -4 -0.0%
Sema.ConformanceHasEffectRequest 0 0 0 0.0%
Sema.CursorInfoRequest 0 0 0 0.0%
Sema.CustomAttrNominalRequest 781 781 0 0.0%
Sema.CustomAttrTypeRequest 591 591 0 0.0%
Sema.DefaultAndMaxAccessLevelRequest 58,012 58,012 0 0.0%
Sema.DefaultArgumentExprRequest 53,103 53,103 0 0.0%
Sema.DefaultArgumentInitContextRequest 146 146 0 0.0%
Sema.DefaultDefinitionTypeRequest 4,300 4,300 0 0.0%
Sema.DefaultTypeRequest 360,104 360,101 -3 -0.0%
Sema.DerivativeAttrOriginalDeclRequest 8 8 0 0.0%
Sema.DifferentiableAttributeTypeCheckRequest 0 0 0 0.0%
Sema.DirectLookupRequest 44,454,351 44,506,237 51,886 0.12%
Sema.DirectOperatorLookupRequest 1,779,056 1,778,900 -156 -0.01%
Sema.DirectPrecedenceGroupLookupRequest 806,481 806,417 -64 -0.01%
Sema.DynamicallyReplacedDeclRequest 1,090,178 1,090,177 -1 -0.0%
Sema.EnumRawTypeRequest 13,770 13,770 0 0.0%
Sema.EnumRawValuesRequest 14,529 14,529 0 0.0%
Sema.ExistentialConformsToSelfRequest 6,675 6,675 0 0.0%
Sema.ExistentialTypeSupportedRequest 10,238 10,238 0 0.0%
Sema.ExtendedNominalRequest 62,696 62,699 3 0.0%
Sema.ExtendedTypeRequest 62,601 62,601 0 0.0%
Sema.FragileFunctionKindRequest 1,380,916 1,380,897 -19 -0.0%
Sema.FunctionOperatorRequest 12,686 12,686 0 0.0%
Sema.GenericParamListRequest 1,650,497 1,650,580 83 0.01%
Sema.GenericSignatureRequest 1,397,999 1,397,963 -36 -0.0%
Sema.GetDestructorRequest 24,447 24,447 0 0.0%
Sema.GetImplicitSendableRequest 57,368 57,368 0 0.0%
Sema.GlobalActorAttributeRequest 2,468,966 2,471,186 2,220 0.09%
Sema.GlobalActorInstanceRequest 94 94 0 0.0%
Sema.HasCircularInheritedProtocolsRequest 11,067 11,067 0 0.0%
Sema.HasCircularRawValueRequest 13,769 13,769 0 0.0%
Sema.HasDefaultInitRequest 42,288 42,288 0 0.0%
Sema.HasDistributedActorLocalInitRequest 0 0 0 0.0%
Sema.HasDynamicCallableAttributeRequest 0 0 0 0.0%
Sema.HasDynamicMemberLookupAttributeRequest 342,654 342,231 -423 -0.12%
Sema.HasImplementationOnlyImportsRequest 34,591 34,591 0 0.0%
Sema.HasIsolatedSelfRequest 4,644,755 4,646,764 2,009 0.04%
Sema.HasMemberwiseInitRequest 18,693 18,693 0 0.0%
Sema.HasMissingDesignatedInitializersRequest 24,306 24,306 0 0.0%
Sema.HasUserDefinedDesignatedInitRequest 42,288 42,288 0 0.0%
Sema.InferredGenericSignatureRequest 92,710 92,710 0 0.0%
Sema.InheritedDeclsReferencedRequest 1,421,817 1,420,091 -1,726 -0.12%
Sema.InheritedProtocolsRequest 131,339 131,324 -15 -0.01%
Sema.InheritedTypeRequest 216,723 216,722 -1 -0.0%
Sema.InheritsSuperclassInitializersRequest 18,770 18,769 -1 -0.01%
Sema.InitKindRequest 81,910 81,910 0 0.0%
Sema.InterfaceTypeRequest 4,437,921 4,437,840 -81 -0.0%
Sema.IsABICompatibleOverrideRequest 175,405 175,405 0 0.0%
Sema.IsAccessorTransparentRequest 353,332 353,332 0 0.0%
Sema.IsActorRequest 326,257 326,224 -33 -0.01%
Sema.IsCallableNominalTypeRequest 3,072 3,072 0 0.0%
Sema.IsDeclApplicableRequest 0 0 0 0.0%
Sema.IsDefaultActorRequest 32,417 32,417 0 0.0%
Sema.IsDistributedActorRequest 317,140 317,107 -33 -0.01%
Sema.IsDistributedFuncRequest 785,069 785,050 -19 -0.0%
Sema.IsDynamicRequest 1,719,161 1,719,157 -4 -0.0%
Sema.IsFinalRequest 1,348,262 1,348,245 -17 -0.0%
Sema.IsGetterMutatingRequest 461,388 461,385 -3 -0.0%
Sema.IsImplicitlyUnwrappedOptionalRequest 2,638,448 2,638,377 -71 -0.0%
Sema.IsObjCRequest 1,525,099 1,525,096 -3 -0.0%
Sema.IsSetterMutatingRequest 443,649 443,647 -2 -0.0%
Sema.IsStaticRequest 787,684 787,670 -14 -0.0%
Sema.LazyStoragePropertyRequest 872 872 0 0.0%
Sema.LookupAllConformancesInContextRequest 158,163 158,158 -5 -0.0%
Sema.LookupInModuleRequest 3,106,130 3,106,207 77 0.0%
Sema.LookupInfixOperatorRequest 75,957 75,956 -1 -0.0%
Sema.LookupPostfixOperatorRequest 47 47 0 0.0%
Sema.LookupPrecedenceGroupRequest 34,432 34,432 0 0.0%
Sema.LookupPrefixOperatorRequest 209 209 0 0.0%
Sema.MangleLocalTypeDeclRequest 350 350 0 0.0%
Sema.ModuleImplicitImportsRequest 1,592 1,592 0 0.0%
Sema.ModuleLibraryLevelRequest 0 0 0 0.0%
Sema.ModuleQualifiedLookupRequest 554,738 554,733 -5 -0.0%
Sema.NamedLazyMemberLoadSuccessCount 10,614,660 10,620,989 6,329 0.06%
Sema.NamingPatternRequest 98,590 98,588 -2 -0.0%
Sema.NeedsNewVTableEntryRequest 713,521 713,521 0 0.0%
Sema.NumAccessorBodiesSynthesized 281,557 281,557 0 0.0%
Sema.NumAccessorsSynthesized 286,121 286,121 0 0.0%
Sema.NumConformanceAccessPathsRecorded 816,798 816,798 0 0.0%
Sema.NumConformancesDeserialized 4,142,961 4,141,496 -1,465 -0.04%
Sema.NumConstraintsConsideredForEdgeContraction 2,129,246 2,141,284 12,038 0.57%
Sema.NumCrossImportsChecked 0 0 0 0.0%
Sema.NumCrossImportsFound 0 0 0 0.0%
Sema.NumCyclicOneWayComponentsCollapsed 346 346 0 0.0%
Sema.NumDeclsDeserialized 14,579,772 14,578,086 -1,686 -0.01%
Sema.NumDeclsTypechecked 1,985,083 1,985,078 -5 -0.0%
Sema.NumGenericSignatureBuilders 292,233 292,100 -133 -0.05%
Sema.NumLazyIterableDeclContexts 1,837,392 1,836,510 -882 -0.05%
Sema.NumLazyRequirementSignatures 147,789 147,817 28 0.02%
Sema.NumLazyRequirementSignaturesLoaded 116,934 116,913 -21 -0.02%
Sema.NumRedundantRequirementSteps 383,627 383,625 -2 -0.0%
Sema.NumRequirementMachineCompletionSteps 0 0 0 0.0%
Sema.NumRequirementMachineUnifiedConcreteTerms 0 0 0 0.0%
Sema.NumRequirementMachines 0 0 0 0.0%
Sema.NumTypesDeserialized 6,501,506 6,500,984 -522 -0.01%
Sema.NumUnloadedLazyIterableDeclContexts 1,199,832 1,198,962 -870 -0.07%
Sema.OpaqueReadOwnershipRequest 254,319 254,319 0 0.0%
Sema.OpaqueResultTypeRequest 366 366 0 0.0%
Sema.OperatorPrecedenceGroupRequest 711 711 0 0.0%
Sema.OverriddenDeclsRequest 1,653,430 1,653,506 76 0.0%
Sema.ParamSpecifierRequest 1,082,051 1,082,049 -2 -0.0%
Sema.PatternBindingEntryRequest 424,319 424,317 -2 -0.0%
Sema.PatternTypeRequest 534,224 534,216 -8 -0.0%
Sema.PolymorphicEffectKindRequest 94,690 94,690 0 0.0%
Sema.PolymorphicEffectRequirementsRequest 0 0 0 0.0%
Sema.PreCheckResultBuilderRequest 903 903 0 0.0%
Sema.PrimarySourceFilesRequest 1,592 1,592 0 0.0%
Sema.PropertyWrapperAuxiliaryVariablesRequest 436,616 436,614 -2 -0.0%
Sema.PropertyWrapperBackingPropertyTypeRequest 10,566 10,566 0 0.0%
Sema.PropertyWrapperInitializerInfoRequest 443,349 443,347 -2 -0.0%
Sema.PropertyWrapperLValuenessRequest 811 811 0 0.0%
Sema.PropertyWrapperMutabilityRequest 458,864 458,861 -3 -0.0%
Sema.PropertyWrapperTypeInfoRequest 88 88 0 0.0%
Sema.ProtocolRequiresClassRequest 11,762 11,761 -1 -0.01%
Sema.ProvideDefaultImplForRequest 0 0 0 0.0%
Sema.QualifiedLookupRequest 5,425,971 5,428,371 2,400 0.04%
Sema.RangeInfoRequest 0 0 0 0.0%
Sema.RenamedDeclRequest 12 12 0 0.0%
Sema.RequirementRequest 93,615 93,615 0 0.0%
Sema.RequirementSignatureRequest 130,663 130,641 -22 -0.02%
Sema.RequiresOpaqueAccessorsRequest 1,623,700 1,623,625 -75 -0.0%
Sema.RequiresOpaqueModifyCoroutineRequest 248,268 248,268 0 0.0%
Sema.ResolveEffectiveMemberwiseInitRequest 0 0 0 0.0%
Sema.ResolveImplicitMemberRequest 541,638 541,631 -7 -0.0%
Sema.ResolveProtocolNameRequest 0 0 0 0.0%
Sema.ResolveTypeEraserTypeRequest 0 0 0 0.0%
Sema.ResolveTypeRequest 2,585,480 2,585,452 -28 -0.0%
Sema.ResultBuilderTypeRequest 469,619 469,615 -4 -0.0%
Sema.ResultTypeRequest 571,342 571,342 0 0.0%
Sema.RootAndResultTypeOfKeypathDynamicMemberRequest 0 0 0 0.0%
Sema.RootTypeOfKeypathDynamicMemberRequest 0 0 0 0.0%
Sema.SPIGroupsRequest 2,518,802 2,518,717 -85 -0.0%
Sema.ScopedImportLookupRequest 1,519 1,519 0 0.0%
Sema.SelfAccessKindRequest 449,439 449,427 -12 -0.0%
Sema.SelfBoundsFromWhereClauseRequest 631,039 631,019 -20 -0.0%
Sema.SetterAccessLevelRequest 185,808 185,808 0 0.0%
Sema.SimpleDidSetRequest 456,605 456,605 0 0.0%
Sema.SpecializeAttrTargetDeclRequest 2,157 2,157 0 0.0%
Sema.StorageImplInfoRequest 1,773,255 1,773,198 -57 -0.0%
Sema.StoredPropertiesAndMissingMembersRequest 52,993 52,993 0 0.0%
Sema.StoredPropertiesRequest 189,902 189,902 0 0.0%
Sema.StructuralTypeRequest 529 529 0 0.0%
Sema.SuperclassDeclRequest 124,949 124,947 -2 -0.0%
Sema.SuperclassTypeRequest 29,723 29,723 0 0.0%
Sema.SynthesizeAccessorRequest 286,121 286,121 0 0.0%
Sema.SynthesizeDefaultInitRequest 4,338 4,338 0 0.0%
Sema.SynthesizeMainFunctionRequest 121,377 121,377 0 0.0%
Sema.SynthesizeMemberwiseInitRequest 3,699 3,699 0 0.0%
Sema.TangentStoredPropertyRequest 0 0 0 0.0%
Sema.TypeCheckASTNodeAtLocRequest 0 0 0 0.0%
Sema.TypeCheckFunctionBodyRequest 742,865 742,864 -1 -0.0%
Sema.TypeCheckSourceFileRequest 34,742 34,742 0 0.0%
Sema.TypeDeclsFromWhereClauseRequest 29,662 29,662 0 0.0%
Sema.TypeEraserHasViableInitRequest 0 0 0 0.0%
Sema.TypeRelationCheckRequest 0 0 0 0.0%
Sema.TypeWitnessRequest 5,544 5,544 0 0.0%
Sema.USRGenerationRequest 482,435 482,435 0 0.0%
Sema.UnderlyingTypeDeclsReferencedRequest 73,281 73,280 -1 -0.0%
Sema.UnderlyingTypeRequest 26,415 26,415 0 0.0%
Sema.UnqualifiedLookupRequest 3,080,008 3,080,091 83 0.0%
Sema.ValidatePrecedenceGroupRequest 258,203 258,201 -2 -0.0%
Sema.ValueWitnessRequest 46,499 46,527 28 0.06%
TBDGen.APIGenRequest 0 0 0 0.0%
TBDGen.GenerateTBDRequest 0 0 0 0.0%
TBDGen.PublicSymbolsRequest 1,552 1,552 0 0.0%
TBDGen.SymbolSourceMapRequest 0 0 0 0.0%

@hborla
Copy link
Member Author

hborla commented Jul 31, 2021

Not sure what's going on with the debug performance results, but an increase in constraint scopes in the release results is expected. With the old code, overloads were pruned in DisjunctionStep before the overload was attempted. With the new code, the overload is pruned right after it's attempted, so a new constraint scope will be created before the solver fails the transitive conformance constraint. This is fine, because the solver isn't actually exploring more space than before.

@hborla hborla merged commit 2d851ff into swiftlang:main Jul 31, 2021
@hborla hborla deleted the improve-transitive-conformance-heuristic branch July 31, 2021 20:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants