Skip to content

Named lazy member loading 1/N #12429

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
merged 10 commits into from
Oct 24, 2017
Merged

Conversation

graydon
Copy link
Contributor

@graydon graydon commented Oct 13, 2017

This is an initial grab-bag of work related to reducing the number of codepaths in the frontend that eventually call LazyMemberLoader::loadAllMembers, specifically as a consequence of doing a named member-lookup (as in NominalTypeDecl::lookupDirect).

The goal here (grand plan provided by @DougGregor and @jrose-apple) is to support loading just the plausibly-same-named members of an IterableDeclContext that a given named member-lookup is after, rather than all the members.

I'm starting with the lazy member loader in the clang importer (because it already has member names in the clang module lookuptables, which we can use for direct lookup). Within that, focusing on ObjC protocol members (because they're the simplest case, according to Jordan). And within that, at this stage it seems there are a bunch of non name-lookup-related paths that wind up triggering loadAllMembers anyways, so this PR mostly just works on those.

Commits included here:

  • Adding some counters, an -Xfrontend -enable-named-lazy-member-loading option flag, and debug logging
  • Adding a rough-cut API LazyMemberLoader::loadNamedMembers
  • Implementing the simplest case of it for ObjC protocol members, from clang
  • Cutting down a couple more paths that force all-member loads on protocols elsewhere (
    9c79770 and 1c306cc)
  • Adding a bunch of comments to the unified stats reporter: a bit of a ride-along patch but @ematejska requested it this afternoon and I had it done before I realized I'd documented the counters at the end of this PR rather than the beginning. Figured I'd include it here rather than delete and re-add comments in a separate PR.

There are going to be a bunch more PRs in this series before it's done, but I figured I'd get review and integration started on the first set, to make sure I'm on the right path.

@graydon
Copy link
Contributor Author

graydon commented Oct 13, 2017

@swift-ci please test

@graydon
Copy link
Contributor Author

graydon commented Oct 13, 2017

@swift-ci please smoke test compiler performance

Copy link
Contributor

@jrose-apple jrose-apple left a comment

Choose a reason for hiding this comment

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

Nice start! It's missing test cases, though. Make sure you include methods with NS_SWIFT_NAME annotations. Factory methods (class methods that return instancetype and start with the name of the type, like +[Foo fooWithValue:]) are another good test case because they get imported as both initializers and unavailable class methods.

(I think you should just pull the stats comments out into another PR. git worktree is great for scratch branches that you don't build locally.)

@@ -3216,6 +3216,10 @@ ConstraintResult GenericSignatureBuilder::expandConformanceRequirement(
}
}

// Remaining logic is not relevant in imported-from-ObjC protocol cases.
if (proto->isObjC() && proto->hasClangNode())
return ConstraintResult::Resolved;
Copy link
Contributor

Choose a reason for hiding this comment

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

Why is this specific to imported-from-ObjC protocols and not all @objc protocols?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Well .. there was a testcase that seems to care (compiler crasher 28855-swift-genericsignaturebuilder...) but in general I think this code path is about improving diagnostics in cases that might credibly occur (according to Slava at least) and the cases we're cutting off are those where there's a typealias in a protocol. And that's a fair bit easier to write in swift as @objc protocol P { typealias ... (as in the testcase) than it is likely to arrive through a clang-import-as-member (which Slava at least implied was not worth worrying about here; of course your opinion may vary!)

Copy link
Contributor

Choose a reason for hiding this comment

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

Ok if it regresses a crasher, sure. Maybe @DougGregor has ideas.

Copy link
Contributor

Choose a reason for hiding this comment

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

I feel like whatever special things the GSB does with type aliases, it should not do them with objc protocols. Treat them like any other nested (nominal) type.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I'm happy to just rewrite the crasher too, if this fix makes it no-longer-crash. I was just being a bit lazy. Preference?


auto *CD = D->getClangDecl();
if (!CD)
return true;
Copy link
Contributor

Choose a reason for hiding this comment

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

These are things you should assert.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

All 4 of them? DeclContext existing, ClangDecl existing, Submodule existing, and Lookuptable existing? I wasn't sure which of those are "sometimes not there" situations.

Copy link
Contributor

Choose a reason for hiding this comment

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

Hm.

  • A non-DeclContext can't have members.
  • A non-Clang decl won't have the importer as its lazy loader.
  • But a Clang decl from the bridging header won't have a Clang module (though it will have a lookup table).
  • I think we have lookup tables for everything by now, so that actually ought to be safe to assert as well. We probably want to know if there isn't one.

insertMembersAndAlternates(member, tmp);
for (auto *TD : tmp) {
if (auto *V = dyn_cast<ValueDecl>(TD)) {
Members.push_back(V);
Copy link
Contributor

Choose a reason for hiding this comment

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

You need to be filtering these by name. Remember that a single Clang declaration may get imported under multiple Swift names.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I'm not sure I follow. I'm looking up by swift name, and I'm doing insertMembersAndAlternates to get the extra swift names it might be imported-as. Which names should I be filtering out? The alternates?

Copy link
Contributor

Choose a reason for hiding this comment

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

No, the "alternates" are things like getters and setters for a property, or the original methods for Objective-C subscripts. I guess those do need to be filtered, but I was referring more to things like this:

- (void)foo NS_SWIFT_NAME(bar);

This will show up in the lookup tables for both foo and bar, and will import the method under both names, but we only want to return the one with the matching name. You can take a look at the way top-level lookup does this in ClangImporter::Implementation::lookupValue.

@graydon
Copy link
Contributor Author

graydon commented Oct 17, 2017

Ok, I've pulled the stat-comments out and landed as a separate commit, then fixed (hopefully) the name-filtering parts in clang importer, added some test infrastructure and a testcase against WebKit. Will try to make some more testcases against synthetic modules tomorrow, including the corner cases of ObjC Jordan mentioned, but .. is this a bit closer to viable?

Copy link
Contributor

@jrose-apple jrose-apple left a comment

Choose a reason for hiding this comment

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

Logic looking good. :-) Still needs tests, of course.

TinyPtrVector<ValueDecl *> &Members) {

auto *DC = dyn_cast<DeclContext>(D);
assert(DC && "loadNamedMembers on a Decl that's not a DeclContext");
Copy link
Contributor

Choose a reason for hiding this comment

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

This one you should just write cast. We're used to that, and you still get the backtrace.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

fixed.

// - The decl is from a clang module, CMO is Some(M) for non-null
// M and we can use the table for that module.
//
// - The decl is from some other non-modular context, CMO is None.
Copy link
Contributor

Choose a reason for hiding this comment

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

This can't really happen, because Clang can't distinguish between the bridging header and the non-modular context. It looks like the actual case in which this returns None is when CD is a forward declaration and there's no definition, but in that case you wouldn't ask for its members.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

fixed.

@graydon graydon force-pushed the named-lazy-member-loading branch from 7e4ecfd to cecd7a6 Compare October 17, 2017 20:16
Copy link
Contributor

@jrose-apple jrose-apple left a comment

Choose a reason for hiding this comment

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

Test comments

@@ -0,0 +1,33 @@
#import <Foundation/Foundation.h>

@protocol doer
Copy link
Contributor

Choose a reason for hiding this comment

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

Test style nitpick 1: Cocoa Objective-C capitalization rules mostly match Swift's, so protocols should be UpperCamelCase.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Fixed.


@protocol doer

- (void) doSomeWork;
Copy link
Contributor

Choose a reason for hiding this comment

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

Test style nitpick 2: No space after the close paren.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Fixed.


+ (simpleDoer*) doer;

+ (simpleDoer*) doerOfNoWork;
Copy link
Contributor

Choose a reason for hiding this comment

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

What are you testing with this? Was this class supposed to conform to the protocol you defined above?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

No (doing so actually causes the protocol to be entirely-imported because presumably conformance checking). I was hoping to add some members that could possibly (wrongly) collide in the member lookup table with the members we do want, to be sure we don't accidentally grab them. Maybe there's no chance of that happening.

- (void) doSomeWorkWithSpeed:(int)s;

- (void) doSomeWorkWithSpeed:(int)s andThoroughness:(int)t
NS_SWIFT_NAME(doSomeWork(speed:thoroughness:));
Copy link
Contributor

Choose a reason for hiding this comment

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

Test style nitpick 3: Despite mockery, Cocoa naming almost never uses "and"; without it, the Swift name you've picked would match the usual selector-splitting rules Swift already applies. I suggest a test cases where you change the base name:

- (void)doSomeWorkWithSpeed:(int)s thoroughness:(int)t
  NS_SWIFT_NAME(doVeryImportantWork(speed:thoroughness:));

and one where you only change argument names

- (void)doSomeWorkWithSpeed:(int)s alacrity:(int)a
  NS_SWIFT_NAME(doSomeWork(speed:levelOfAlacrity:));

and check that both the "before" and "after" names get imported.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

No mockery intended! I'm just .. continuing to absorb ObjC via testcases and inspection of headers. Fixed.

//
// Check that with lazy named member loading, we're importing less.
// RUN: %target-swift-frontend -typecheck -enable-named-lazy-member-loading -stats-output-dir %t/stats-post %s
// RUN: %utils/process-stats-dir.py --evaluate 'NumTotalClangImportedEntities < 10' %t/stats-post
Copy link
Contributor

Choose a reason for hiding this comment

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

It seems brittle to depend on WebKit not to change. Can you make a fake test case instead?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I .. guess? The synthetic testcase is the other one above (it includes a stats measurement). I was hoping to "check that it matters in the real world too" but I guess I can just omit this test.

# are projected into python dicts (thus variables in the eval expr) named by
# the last identifier in the stat definition. This means you can evaluate
# things like 'NumIRInsts < 1000' or
# 'NumTypesValidated == NumTypesDeserialized'
Copy link
Contributor

Choose a reason for hiding this comment

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

This will definitely be useful!

@graydon graydon force-pushed the named-lazy-member-loading branch 2 times, most recently from 95687e8 to 7068399 Compare October 19, 2017 05:26
@swiftlang swiftlang deleted a comment from swift-ci Oct 19, 2017
@graydon graydon force-pushed the named-lazy-member-loading branch 2 times, most recently from d9c9a3c to c291e9f Compare October 19, 2017 06:36
@swiftlang swiftlang deleted a comment from swift-ci Oct 19, 2017
@swiftlang swiftlang deleted a comment from swift-ci Oct 19, 2017
@graydon
Copy link
Contributor Author

graydon commented Oct 19, 2017

Updated to reflect most-recent feedback.

@graydon graydon force-pushed the named-lazy-member-loading branch from c291e9f to d1b36b8 Compare October 19, 2017 07:21
@swiftlang swiftlang deleted a comment from swift-ci Oct 19, 2017
@swiftlang swiftlang deleted a comment from swift-ci Oct 19, 2017
@swiftlang swiftlang deleted a comment from swift-ci Oct 19, 2017
@graydon
Copy link
Contributor Author

graydon commented Oct 19, 2017

@swift-ci please test

@swiftlang swiftlang deleted a comment from swift-ci Oct 19, 2017
@swiftlang swiftlang deleted a comment from swift-ci Oct 19, 2017
@swiftlang swiftlang deleted a comment from swift-ci Oct 19, 2017
/// \p Members is otherwise incomplete, due to implementation limitations
/// (eg. the implementation is unable to do named lookup at all, or within
/// the particular type of Decl that \p D is).
virtual bool
Copy link
Member

Choose a reason for hiding this comment

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

Would this API be cleaner if, instead of a bool result type and by-reference vector, it returned an Optional<TinyPtrVector<ValueDecl *>> ?

Copy link
Member

Choose a reason for hiding this comment

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

I guess it means you can't get an "incomplete" result, where Members is partially filled but can't be completely filled, but that seems okay?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Happy to change it to Optional, don't feel strongly. You prefer Optional here?

@@ -5,5 +5,5 @@
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors

// RUN: not --crash %target-swift-frontend %s -emit-ir
// RUN: not %target-swift-frontend %s -emit-ir
Copy link
Member

Choose a reason for hiding this comment

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

Well, that's unexpected.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Unexpected like huh interesting, or unexpected like you'd prefer I detour into figuring out why it was crashing in the first place?

auto contextInfo =
ctx.getOrCreateLazyIterableContextData(this,
/*lazyLoader=*/nullptr);
if (contextInfo->loader->loadNamedMembers(this, name,
Copy link
Member

Choose a reason for hiding this comment

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

Hmmm, this won't be sufficient, because lookupDirect is supposed to return all of the members of the given name across the nominal type and all of its extensions, but the contextInfo is only associated with the nominal type declaration itself. At worst, we will have to poll several different sources to gather all of the declarations that match a given name:

  • The Clang importer, which can answer this question by looking into all of the Swift name lookup tables,
  • The Swift module loader, which can answer this question once we've added some name lookup tables for nominal types, and
  • Walking the members of any extensions of the type that we parsed into the current module

We have to combine the results from all of these sources to get the right results from name lookup.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, those are reserved for phases 2/N, 3/N and so forth in this work series. This version literally just does ObjC @protocol members (and I mistakenly thought imported @protocols were not themselves extendable on the swift side). I'll add a check for "not extended by swift" for this variant; will return to this when we handle the swift side (i.e. have extended swiftmodules with member lookup tables too).

//
// Check that with lazy named member loading, we're importing less.
// RUN: %target-swift-frontend -typecheck -I %S/Inputs/NamedLazyMembers -enable-named-lazy-member-loading -stats-output-dir %t/stats-post %s
// RUN: %utils/process-stats-dir.py --evaluate 'NumTotalClangImportedEntities < 15' %t/stats-post
Copy link
Member

Choose a reason for hiding this comment

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

Fantastic test!

@swiftlang swiftlang deleted a comment from swift-ci Oct 20, 2017
@swiftlang swiftlang deleted a comment from swift-ci Oct 20, 2017
@swiftlang swiftlang deleted a comment from swift-ci Oct 21, 2017
@swiftlang swiftlang deleted a comment from swift-ci Oct 21, 2017
@swiftlang swiftlang deleted a comment from swift-ci Oct 21, 2017
@graydon graydon force-pushed the named-lazy-member-loading branch from d1b36b8 to cb1c852 Compare October 21, 2017 05:56
@graydon
Copy link
Contributor Author

graydon commented Oct 21, 2017

@swift-ci please smoke test compiler performance

@graydon
Copy link
Contributor Author

graydon commented Oct 21, 2017

@DougGregor let me know if this looks a bit more-right?

@graydon
Copy link
Contributor Author

graydon commented Oct 21, 2017

@swift-ci please test

@swift-ci
Copy link
Contributor

Build failed
Swift Test OS X Platform
Git Sha - d1b36b8d57dec04c119e8e401294fbac922dca6e

@swift-ci
Copy link
Contributor

Build failed
Swift Test Linux Platform
Git Sha - d1b36b8d57dec04c119e8e401294fbac922dca6e

@swift-ci
Copy link
Contributor

Build comment file:

Summary for master smoketest

Regressions found (see below)

Debug

PR vs. head (debug)

PR vs. head, changed counters (debug)

Regressed (0)
Improved (28)
Improved in Kingfisher (11)
name old new delta delta_pct
Sema.NumDeclsDeserialized 412556 412342 -214 -0.05% ✅
Sema.NumTypesDeserialized 338368 338154 -214 -0.06% ✅
Sema.NumConstraintScopes 316984 316772 -212 -0.07% ✅
Sema.NumLazyGenericEnvironments 67522 67466 -56 -0.08% ✅
Sema.NumGenericSignatureBuilders 11068 11052 -16 -0.14% ✅
Sema.NumLazyIterableDeclContexts 53475 53361 -114 -0.21% ✅
Sema.NumTypesValidated 21490 21406 -84 -0.39% ✅
Sema.NumDeclsValidated 83674 83194 -480 -0.57% ✅
Sema.NumFunctionsTypechecked 16546 16432 -114 -0.69% ✅
AST.NumImportedExternalDefinitions 26842 26636 -206 -0.77% ✅
AST.NumTotalClangImportedEntities 66562 66052 -510 -0.77% ✅
Improved in ReactiveCocoa (11)
name old new delta delta_pct
Sema.NumDeclsDeserialized 542585 542063 -522 -0.1% ✅
Sema.NumLazyGenericEnvironments 104132 103994 -138 -0.13% ✅
Sema.NumTypesDeserialized 468228 467520 -708 -0.15% ✅
Sema.NumLazyIterableDeclContexts 105114 104302 -812 -0.77% ✅
Sema.NumTypesValidated 41370 40968 -402 -0.97% ✅
Sema.NumGenericSignatureBuilders 24020 22226 -1794 -7.47% ✅
Sema.NumConstraintScopes 63936 56898 -7038 -11.01% ✅
AST.NumTotalClangImportedEntities 113610 100836 -12774 -11.24% ✅
Sema.NumDeclsValidated 91498 81118 -10380 -11.34% ✅
AST.NumImportedExternalDefinitions 39682 33382 -6300 -15.88% ✅
Sema.NumFunctionsTypechecked 23542 18198 -5344 -22.7% ✅
Improved in ReactiveSwift (2)
name old new delta delta_pct
AST.NumImportedExternalDefinitions 5606 5566 -40 -0.71% ✅
AST.NumTotalClangImportedEntities 18812 18652 -160 -0.85% ✅
Improved in Result (4)
name old new delta delta_pct
Sema.NumDeclsDeserialized 26593 26585 -8 -0.03% ✅
Sema.NumLazyIterableDeclContexts 2926 2912 -14 -0.48% ✅
AST.NumImportedExternalDefinitions 338 334 -4 -1.18% ✅
AST.NumTotalClangImportedEntities 1098 1066 -32 -2.91% ✅
Unchanged (abs(delta) < 0.01% or 100000usec) (87)
Unchanged (abs(delta) < 0.01% or 100000usec) in Alamofire (23)
name old new delta delta_pct
AST.NumImportedExternalDefinitions 7982 7982 0 0.0%
AST.NumLoadedModules 522 522 0 0.0%
AST.NumTotalClangImportedEntities 24822 24822 0 0.0%
AST.NumUsedConformances 432 432 0 0.0%
IRModule.NumIRBasicBlocks 13594 13594 0 0.0%
IRModule.NumIRFunctions 5110 5110 0 0.0%
IRModule.NumIRGlobals 4701 4701 0 0.0%
IRModule.NumIRInsts 132791 132791 0 0.0%
IRModule.NumIRValueSymbols 8430 8430 0 0.0%
LLVM.NumLLVMBytesOutput 3021356 3021356 0 0.0%
SILModule.NumSILGenFunctions 2458 2458 0 0.0%
SILModule.NumSILOptFunctions 4207 4207 0 0.0%
Sema.NumConformancesDeserialized 35093 35093 0 0.0%
Sema.NumConstraintScopes 41279 41279 0 0.0%
Sema.NumDeclsDeserialized 198809 198809 0 0.0%
Sema.NumDeclsValidated 38769 38769 0 0.0%
Sema.NumFunctionsTypechecked 5454 5454 0 0.0%
Sema.NumGenericSignatureBuilders 3909 3909 0 0.0%
Sema.NumLazyGenericEnvironments 30620 30620 0 0.0%
Sema.NumLazyGenericEnvironmentsLoaded 2493 2493 0 0.0%
Sema.NumLazyIterableDeclContexts 20991 20991 0 0.0%
Sema.NumTypesValidated 14335 14335 0 0.0%
Sema.NumTypesDeserialized 158980 158963 -17 -0.01%
Unchanged (abs(delta) < 0.01% or 100000usec) in Kingfisher (12)
name old new delta delta_pct
AST.NumLoadedModules 1323 1323 0 0.0%
AST.NumUsedConformances 850 850 0 0.0%
IRModule.NumIRBasicBlocks 17779 17779 0 0.0%
IRModule.NumIRFunctions 7752 7752 0 0.0%
IRModule.NumIRGlobals 9063 9063 0 0.0%
IRModule.NumIRInsts 184365 184365 0 0.0%
IRModule.NumIRValueSymbols 14452 14452 0 0.0%
LLVM.NumLLVMBytesOutput 4945580 4945580 0 0.0%
SILModule.NumSILGenFunctions 4178 4178 0 0.0%
SILModule.NumSILOptFunctions 7987 7987 0 0.0%
Sema.NumConformancesDeserialized 67380 67380 0 0.0%
Sema.NumLazyGenericEnvironmentsLoaded 5350 5350 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in ReactiveCocoa (12)
name old new delta delta_pct
AST.NumLoadedModules 3536 3536 0 0.0%
AST.NumUsedConformances 700 700 0 0.0%
IRModule.NumIRBasicBlocks 10868 10868 0 0.0%
IRModule.NumIRFunctions 6914 6914 0 0.0%
IRModule.NumIRGlobals 9656 9656 0 0.0%
IRModule.NumIRInsts 98701 98701 0 0.0%
IRModule.NumIRValueSymbols 14568 14568 0 0.0%
LLVM.NumLLVMBytesOutput 6509812 6509812 0 0.0%
SILModule.NumSILGenFunctions 2892 2892 0 0.0%
SILModule.NumSILOptFunctions 4289 4289 0 0.0%
Sema.NumConformancesDeserialized 52560 52560 0 0.0%
Sema.NumLazyGenericEnvironmentsLoaded 10104 10104 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in ReactiveSwift (21)
name old new delta delta_pct
AST.NumLoadedModules 880 880 0 0.0%
AST.NumUsedConformances 724 724 0 0.0%
IRModule.NumIRBasicBlocks 19130 19130 0 0.0%
IRModule.NumIRFunctions 10541 10541 0 0.0%
IRModule.NumIRGlobals 12434 12434 0 0.0%
IRModule.NumIRInsts 314500 314500 0 0.0%
IRModule.NumIRValueSymbols 19287 19287 0 0.0%
LLVM.NumLLVMBytesOutput 8308272 8308272 0 0.0%
SILModule.NumSILGenFunctions 4813 4813 0 0.0%
SILModule.NumSILOptFunctions 7139 7139 0 0.0%
Sema.NumConformancesDeserialized 48604 48604 0 0.0%
Sema.NumConstraintScopes 37766 37766 0 0.0%
Sema.NumDeclsDeserialized 303981 303981 0 0.0%
Sema.NumDeclsValidated 42648 42648 0 0.0%
Sema.NumFunctionsTypechecked 4398 4398 0 0.0%
Sema.NumGenericSignatureBuilders 10680 10680 0 0.0%
Sema.NumLazyGenericEnvironments 53734 53734 0 0.0%
Sema.NumLazyGenericEnvironmentsLoaded 7420 7420 0 0.0%
Sema.NumLazyIterableDeclContexts 36322 36322 0 0.0%
Sema.NumTypesDeserialized 255107 255105 -2 -0.0%
Sema.NumTypesValidated 81156 81156 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in Result (19)
name old new delta delta_pct
AST.NumLoadedModules 108 108 0 0.0%
AST.NumUsedConformances 62 62 0 0.0%
IRModule.NumIRBasicBlocks 1272 1272 0 0.0%
IRModule.NumIRFunctions 632 632 0 0.0%
IRModule.NumIRGlobals 758 758 0 0.0%
IRModule.NumIRInsts 16546 16546 0 0.0%
IRModule.NumIRValueSymbols 1172 1172 0 0.0%
LLVM.NumLLVMBytesOutput 399740 399740 0 0.0%
SILModule.NumSILGenFunctions 314 314 0 0.0%
SILModule.NumSILOptFunctions 558 558 0 0.0%
Sema.NumConformancesDeserialized 1928 1928 0 0.0%
Sema.NumConstraintScopes 3738 3738 0 0.0%
Sema.NumDeclsValidated 1538 1538 0 0.0%
Sema.NumFunctionsTypechecked 298 298 0 0.0%
Sema.NumGenericSignatureBuilders 468 468 0 0.0%
Sema.NumLazyGenericEnvironments 4852 4852 0 0.0%
Sema.NumLazyGenericEnvironmentsLoaded 486 486 0 0.0%
Sema.NumTypesValidated 1184 1184 0 0.0%
Sema.NumTypesDeserialized 22112 22110 -2 -0.01%

PR vs. head, changed timers (debug)

Regressed (0)
Improved (0)
Unchanged (abs(delta) < 0.01% or 1000000usec) (9)
Unchanged (abs(delta) < 0.01% or 1000000usec) in Alamofire (1)
name old new delta delta_pct
time.swift-driver.Alamofire-all-x86_64_apple_macosx10.10-o-Onone.wall 5831943 5656996 -174947 -3.0%
Unchanged (abs(delta) < 0.01% or 1000000usec) in Kingfisher (2)
name old new delta delta_pct
time.swift-driver.Kingfisher-all-armv7_apple_ios8.0-o-Onone.wall 5183479 5008187 -175292 -3.38%
time.swift-driver.Kingfisher-all-arm64_apple_ios8.0-o-Onone.wall 4980162 4800900 -179262 -3.6%
Unchanged (abs(delta) < 0.01% or 1000000usec) in ReactiveCocoa (2)
name old new delta delta_pct
time.swift-driver.ReactiveCocoa-all-armv7_apple_ios8.0-o-Onone.wall 3671628 3458895 -212733 -5.79%
time.swift-driver.ReactiveCocoa-all-arm64_apple_ios8.0-o-Onone.wall 3720747 3480361 -240386 -6.46%
Unchanged (abs(delta) < 0.01% or 1000000usec) in ReactiveSwift (2)
name old new delta delta_pct
time.swift-driver.ReactiveSwift-all-arm64_apple_ios8.0-o-Onone.wall 3687995 3389772 -298223 -8.09%
time.swift-driver.ReactiveSwift-all-armv7_apple_ios8.0-o-Onone.wall 3771894 3444961 -326933 -8.67%
Unchanged (abs(delta) < 0.01% or 1000000usec) in Result (2)
name old new delta delta_pct
time.swift-driver.Result-all-armv7_apple_ios8.0-o-Onone.wall 1552279 1543231 -9048 -0.58%
time.swift-driver.Result-all-arm64_apple_ios8.0-o-Onone.wall 1550168 1523054 -27114 -1.75%

PR vs. baseline (debug)

PR vs. baseline, changed counters (debug)

Regressed (23)
Regressed in Alamofire (6)
name old new delta delta_pct
Sema.NumConformancesDeserialized 31066 35093 4027 12.96% ⛔
SILModule.NumSILOptFunctions 3908 4207 299 7.65% ⛔
Sema.NumDeclsDeserialized 193026 198809 5783 3.0% ⛔
Sema.NumLazyGenericEnvironments 29740 30620 880 2.96% ⛔
LLVM.NumLLVMBytesOutput 2995540 3021356 25816 0.86% ⛔
Sema.NumTypesDeserialized 158862 158963 101 0.06% ⛔
Regressed in Kingfisher (4)
name old new delta delta_pct
SILModule.NumSILOptFunctions 7512 7987 475 6.32% ⛔
LLVM.NumLLVMBytesOutput 4701704 4945580 243876 5.19% ⛔
Sema.NumLazyGenericEnvironments 65900 67466 1566 2.38% ⛔
Sema.NumDeclsDeserialized 406573 412342 5769 1.42% ⛔
Regressed in ReactiveCocoa (7)
name old new delta delta_pct
LLVM.NumLLVMBytesOutput 4775608 6509812 1734204 36.31% ⛔
Sema.NumConstraintScopes 42990 56898 13908 32.35% ⛔
Sema.NumLazyGenericEnvironments 90692 103994 13302 14.67% ⛔
Sema.NumDeclsDeserialized 494670 542063 47393 9.58% ⛔
SILModule.NumSILOptFunctions 4068 4289 221 5.43% ⛔
Sema.NumTypesDeserialized 447750 467520 19770 4.42% ⛔
IRModule.NumIRGlobals 9536 9656 120 1.26% ⛔
Regressed in ReactiveSwift (6)
name old new delta delta_pct
Sema.NumLazyGenericEnvironments 50740 53734 2994 5.9% ⛔
Sema.NumDeclsDeserialized 291790 303981 12191 4.18% ⛔
LLVM.NumLLVMBytesOutput 8049848 8308272 258424 3.21% ⛔
SILModule.NumSILOptFunctions 6970 7139 169 2.42% ⛔
Sema.NumTypesDeserialized 253286 255105 1819 0.72% ⛔
IRModule.NumIRGlobals 12388 12434 46 0.37% ⛔
Improved (65)
Improved in Alamofire (16)
name old new delta delta_pct
SILModule.NumSILGenFunctions 2463 2458 -5 -0.2% ✅
AST.NumUsedConformances 435 432 -3 -0.69% ✅
IRModule.NumIRGlobals 4765 4701 -64 -1.34% ✅
Sema.NumFunctionsTypechecked 5545 5454 -91 -1.64% ✅
Sema.NumLazyIterableDeclContexts 21455 20991 -464 -2.16% ✅
IRModule.NumIRValueSymbols 8767 8430 -337 -3.84% ✅
IRModule.NumIRFunctions 5357 5110 -247 -4.61% ✅
Sema.NumConstraintScopes 43672 41279 -2393 -5.48% ✅
Sema.NumLazyGenericEnvironmentsLoaded 2641 2493 -148 -5.6% ✅
AST.NumImportedExternalDefinitions 8501 7982 -519 -6.11% ✅
IRModule.NumIRInsts 145724 132791 -12933 -8.87% ✅
IRModule.NumIRBasicBlocks 15117 13594 -1523 -10.07% ✅
AST.NumTotalClangImportedEntities 27881 24822 -3059 -10.97% ✅
Sema.NumTypesValidated 18298 14335 -3963 -21.66% ✅
Sema.NumDeclsValidated 61341 38769 -22572 -36.8% ✅
Sema.NumGenericSignatureBuilders 13996 3909 -10087 -72.07% ✅
Improved in Kingfisher (18)
name old new delta delta_pct
SILModule.NumSILGenFunctions 4186 4178 -8 -0.19% ✅
IRModule.NumIRGlobals 9117 9063 -54 -0.59% ✅
AST.NumUsedConformances 858 850 -8 -0.93% ✅
Sema.NumTypesDeserialized 344515 338154 -6361 -1.85% ✅
Sema.NumLazyGenericEnvironmentsLoaded 5480 5350 -130 -2.37% ✅
Sema.NumLazyIterableDeclContexts 54859 53361 -1498 -2.73% ✅
IRModule.NumIRValueSymbols 14986 14452 -534 -3.56% ✅
Sema.NumConformancesDeserialized 70852 67380 -3472 -4.9% ✅
IRModule.NumIRInsts 194978 184365 -10613 -5.44% ✅
IRModule.NumIRFunctions 8204 7752 -452 -5.51% ✅
IRModule.NumIRBasicBlocks 18956 17779 -1177 -6.21% ✅
Sema.NumFunctionsTypechecked 17534 16432 -1102 -6.28% ✅
AST.NumImportedExternalDefinitions 28988 26636 -2352 -8.11% ✅
AST.NumTotalClangImportedEntities 75188 66052 -9136 -12.15% ✅
Sema.NumTypesValidated 27944 21406 -6538 -23.4% ✅
Sema.NumDeclsValidated 125016 83194 -41822 -33.45% ✅
Sema.NumConstraintScopes 581970 316772 -265198 -45.57% ✅
Sema.NumGenericSignatureBuilders 33750 11052 -22698 -67.25% ✅
Improved in ReactiveCocoa (15)
name old new delta delta_pct
SILModule.NumSILGenFunctions 2904 2892 -12 -0.41% ✅
AST.NumUsedConformances 704 700 -4 -0.57% ✅
Sema.NumLazyGenericEnvironmentsLoaded 10174 10104 -70 -0.69% ✅
IRModule.NumIRValueSymbols 14686 14568 -118 -0.8% ✅
AST.NumTotalClangImportedEntities 101754 100836 -918 -0.9% ✅
Sema.NumLazyIterableDeclContexts 105954 104302 -1652 -1.56% ✅
Sema.NumFunctionsTypechecked 18516 18198 -318 -1.72% ✅
AST.NumImportedExternalDefinitions 34112 33382 -730 -2.14% ✅
IRModule.NumIRFunctions 7080 6914 -166 -2.34% ✅
IRModule.NumIRInsts 102753 98701 -4052 -3.94% ✅
IRModule.NumIRBasicBlocks 11870 10868 -1002 -8.44% ✅
Sema.NumConformancesDeserialized 57916 52560 -5356 -9.25% ✅
Sema.NumTypesValidated 49050 40968 -8082 -16.48% ✅
Sema.NumDeclsValidated 106644 81118 -25526 -23.94% ✅
Sema.NumGenericSignatureBuilders 49468 22226 -27242 -55.07% ✅
Improved in ReactiveSwift (16)
name old new delta delta_pct
SILModule.NumSILGenFunctions 4833 4813 -20 -0.41% ✅
AST.NumUsedConformances 730 724 -6 -0.82% ✅
IRModule.NumIRValueSymbols 19619 19287 -332 -1.69% ✅
Sema.NumConformancesDeserialized 49822 48604 -1218 -2.44% ✅
IRModule.NumIRFunctions 10863 10541 -322 -2.96% ✅
Sema.NumLazyGenericEnvironmentsLoaded 7646 7420 -226 -2.96% ✅
Sema.NumFunctionsTypechecked 4538 4398 -140 -3.09% ✅
Sema.NumLazyIterableDeclContexts 37546 36322 -1224 -3.26% ✅
IRModule.NumIRInsts 332161 314500 -17661 -5.32% ✅
Sema.NumConstraintScopes 41650 37766 -3884 -9.33% ✅
IRModule.NumIRBasicBlocks 21814 19130 -2684 -12.3% ✅
AST.NumImportedExternalDefinitions 6434 5566 -868 -13.49% ✅
Sema.NumTypesValidated 100770 81156 -19614 -19.46% ✅
AST.NumTotalClangImportedEntities 24796 18652 -6144 -24.78% ✅
Sema.NumDeclsValidated 75348 42648 -32700 -43.4% ✅
Sema.NumGenericSignatureBuilders 31134 10680 -20454 -65.7% ✅
Unchanged (abs(delta) < 0.01% or 100000usec) (4)
Unchanged (abs(delta) < 0.01% or 100000usec) in Alamofire (1)
name old new delta delta_pct
AST.NumLoadedModules 522 522 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in Kingfisher (1)
name old new delta delta_pct
AST.NumLoadedModules 1323 1323 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in ReactiveCocoa (1)
name old new delta delta_pct
AST.NumLoadedModules 3536 3536 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in ReactiveSwift (1)
name old new delta delta_pct
AST.NumLoadedModules 880 880 0 0.0%

PR vs. baseline, changed timers (debug)

Regressed (0)
Improved (0)
Unchanged (abs(delta) < 0.01% or 1000000usec) (0)

Release

PR vs. head (release)

PR vs. head, changed counters (release)

Regressed (0)
Improved (14)
Improved in Kingfisher (6)
name old new delta delta_pct
Sema.NumLazyIterableDeclContexts 3535 3533 -2 -0.06% ✅
AST.NumTotalClangImportedEntities 9850 9816 -34 -0.35% ✅
Sema.NumDeclsValidated 14592 14532 -60 -0.41% ✅
Sema.NumFunctionsTypechecked 2878 2848 -30 -1.04% ✅
AST.NumImportedExternalDefinitions 3406 3368 -38 -1.12% ✅
Sema.NumGenericSignatureBuilders 1101 1085 -16 -1.45% ✅
Improved in ReactiveCocoa (8)
name old new delta delta_pct
Sema.NumTypesDeserialized 38841 38813 -28 -0.07% ✅
Sema.NumDeclsDeserialized 41910 41876 -34 -0.08% ✅
Sema.NumFunctionsTypechecked 2484 2482 -2 -0.08% ✅
Sema.NumDeclsValidated 11068 11058 -10 -0.09% ✅
Sema.NumGenericSignatureBuilders 1280 1278 -2 -0.16% ✅
AST.NumImportedExternalDefinitions 3138 3132 -6 -0.19% ✅
Sema.NumLazyGenericEnvironments 6198 6182 -16 -0.26% ✅
AST.NumTotalClangImportedEntities 7480 7434 -46 -0.61% ✅
Unchanged (abs(delta) < 0.01% or 100000usec) (101)
Unchanged (abs(delta) < 0.01% or 100000usec) in Alamofire (23)
name old new delta delta_pct
AST.NumImportedExternalDefinitions 881 881 0 0.0%
AST.NumLoadedModules 28 28 0 0.0%
AST.NumTotalClangImportedEntities 3234 3234 0 0.0%
AST.NumUsedConformances 432 432 0 0.0%
IRModule.NumIRBasicBlocks 15502 15502 0 0.0%
IRModule.NumIRFunctions 3579 3579 0 0.0%
IRModule.NumIRGlobals 4449 4449 0 0.0%
IRModule.NumIRInsts 113088 113088 0 0.0%
IRModule.NumIRValueSymbols 6898 6898 0 0.0%
LLVM.NumLLVMBytesOutput 3302772 3302772 0 0.0%
SILModule.NumSILGenFunctions 1860 1860 0 0.0%
SILModule.NumSILOptFunctions 3073 3073 0 0.0%
Sema.NumConformancesDeserialized 14472 14472 0 0.0%
Sema.NumConstraintScopes 36446 36446 0 0.0%
Sema.NumDeclsDeserialized 24138 24138 0 0.0%
Sema.NumDeclsValidated 6892 6892 0 0.0%
Sema.NumFunctionsTypechecked 1104 1104 0 0.0%
Sema.NumGenericSignatureBuilders 416 416 0 0.0%
Sema.NumLazyGenericEnvironments 2784 2784 0 0.0%
Sema.NumLazyGenericEnvironmentsLoaded 364 364 0 0.0%
Sema.NumLazyIterableDeclContexts 1660 1660 0 0.0%
Sema.NumTypesDeserialized 22904 22903 -1 -0.0%
Sema.NumTypesValidated 1592 1592 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in Kingfisher (17)
name old new delta delta_pct
AST.NumLoadedModules 61 61 0 0.0%
AST.NumUsedConformances 850 850 0 0.0%
IRModule.NumIRBasicBlocks 22501 22501 0 0.0%
IRModule.NumIRFunctions 5795 5795 0 0.0%
IRModule.NumIRGlobals 8574 8574 0 0.0%
IRModule.NumIRInsts 166293 166293 0 0.0%
IRModule.NumIRValueSymbols 12767 12767 0 0.0%
LLVM.NumLLVMBytesOutput 5865324 5865324 0 0.0%
SILModule.NumSILGenFunctions 3056 3056 0 0.0%
SILModule.NumSILOptFunctions 5842 5842 0 0.0%
Sema.NumConformancesDeserialized 29184 29184 0 0.0%
Sema.NumDeclsDeserialized 48343 48343 0 0.0%
Sema.NumLazyGenericEnvironments 4992 4992 0 0.0%
Sema.NumLazyGenericEnvironmentsLoaded 826 826 0 0.0%
Sema.NumTypesDeserialized 45237 45237 0 0.0%
Sema.NumTypesValidated 2740 2740 0 0.0%
Sema.NumConstraintScopes 301126 301082 -44 -0.01%
Unchanged (abs(delta) < 0.01% or 100000usec) in ReactiveCocoa (15)
name old new delta delta_pct
AST.NumLoadedModules 66 66 0 0.0%
AST.NumUsedConformances 700 700 0 0.0%
IRModule.NumIRBasicBlocks 8787 8787 0 0.0%
IRModule.NumIRFunctions 4876 4876 0 0.0%
IRModule.NumIRGlobals 8491 8491 0 0.0%
IRModule.NumIRInsts 66215 66215 0 0.0%
IRModule.NumIRValueSymbols 12101 12101 0 0.0%
LLVM.NumLLVMBytesOutput 8779696 8779696 0 0.0%
SILModule.NumSILGenFunctions 1913 1913 0 0.0%
SILModule.NumSILOptFunctions 3083 3083 0 0.0%
Sema.NumConformancesDeserialized 19416 19416 0 0.0%
Sema.NumLazyGenericEnvironmentsLoaded 702 702 0 0.0%
Sema.NumLazyIterableDeclContexts 3784 3784 0 0.0%
Sema.NumTypesValidated 2372 2372 0 0.0%
Sema.NumConstraintScopes 38104 38102 -2 -0.01%
Unchanged (abs(delta) < 0.01% or 100000usec) in ReactiveSwift (23)
name old new delta delta_pct
AST.NumImportedExternalDefinitions 512 512 0 0.0%
AST.NumLoadedModules 38 38 0 0.0%
AST.NumTotalClangImportedEntities 2102 2102 0 0.0%
AST.NumUsedConformances 730 730 0 0.0%
IRModule.NumIRBasicBlocks 21304 21304 0 0.0%
IRModule.NumIRFunctions 10078 10078 0 0.0%
IRModule.NumIRGlobals 11646 11646 0 0.0%
IRModule.NumIRInsts 256189 256189 0 0.0%
IRModule.NumIRValueSymbols 19422 19422 0 0.0%
LLVM.NumLLVMBytesOutput 9963476 9963476 0 0.0%
SILModule.NumSILGenFunctions 3735 3735 0 0.0%
SILModule.NumSILOptFunctions 6934 6934 0 0.0%
Sema.NumConformancesDeserialized 24812 24812 0 0.0%
Sema.NumConstraintScopes 34930 34930 0 0.0%
Sema.NumDeclsDeserialized 44008 44008 0 0.0%
Sema.NumDeclsValidated 9730 9730 0 0.0%
Sema.NumFunctionsTypechecked 1976 1976 0 0.0%
Sema.NumGenericSignatureBuilders 1515 1515 0 0.0%
Sema.NumLazyGenericEnvironments 5184 5184 0 0.0%
Sema.NumLazyGenericEnvironmentsLoaded 828 828 0 0.0%
Sema.NumLazyIterableDeclContexts 2881 2881 0 0.0%
Sema.NumTypesDeserialized 39538 39538 0 0.0%
Sema.NumTypesValidated 23594 23594 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in Result (23)
name old new delta delta_pct
AST.NumImportedExternalDefinitions 316 316 0 0.0%
AST.NumLoadedModules 34 34 0 0.0%
AST.NumTotalClangImportedEntities 1300 1300 0 0.0%
AST.NumUsedConformances 62 62 0 0.0%
IRModule.NumIRBasicBlocks 2048 2048 0 0.0%
IRModule.NumIRFunctions 623 623 0 0.0%
IRModule.NumIRGlobals 687 687 0 0.0%
IRModule.NumIRInsts 20376 20376 0 0.0%
IRModule.NumIRValueSymbols 1194 1194 0 0.0%
LLVM.NumLLVMBytesOutput 482728 482728 0 0.0%
SILModule.NumSILGenFunctions 292 292 0 0.0%
SILModule.NumSILOptFunctions 813 813 0 0.0%
Sema.NumConformancesDeserialized 3922 3922 0 0.0%
Sema.NumConstraintScopes 3736 3736 0 0.0%
Sema.NumDeclsDeserialized 23858 23858 0 0.0%
Sema.NumDeclsValidated 1470 1470 0 0.0%
Sema.NumFunctionsTypechecked 296 296 0 0.0%
Sema.NumGenericSignatureBuilders 368 368 0 0.0%
Sema.NumLazyGenericEnvironments 4112 4112 0 0.0%
Sema.NumLazyGenericEnvironmentsLoaded 338 338 0 0.0%
Sema.NumLazyIterableDeclContexts 1976 1976 0 0.0%
Sema.NumTypesDeserialized 20510 20510 0 0.0%
Sema.NumTypesValidated 990 990 0 0.0%

PR vs. head, changed timers (release)

Regressed (0)
Improved (0)
Unchanged (abs(delta) < 0.01% or 1000000usec) (9)
Unchanged (abs(delta) < 0.01% or 1000000usec) in Alamofire (1)
name old new delta delta_pct
time.swift-driver.Alamofire-all-x86_64_apple_macosx10.10-o-O.wall 10982890 10903920 -78970 -0.72%
Unchanged (abs(delta) < 0.01% or 1000000usec) in Kingfisher (2)
name old new delta delta_pct
time.swift-driver.Kingfisher-all-armv7_apple_ios8.0-o-O.wall 11465160 11405080 -60080 -0.52%
time.swift-driver.Kingfisher-all-arm64_apple_ios8.0-o-O.wall 11251670 11129470 -122200 -1.09%
Unchanged (abs(delta) < 0.01% or 1000000usec) in ReactiveCocoa (2)
name old new delta delta_pct
time.swift-driver.ReactiveCocoa-all-armv7_apple_ios8.0-o-O.wall 5188199 5140467 -47732 -0.92%
time.swift-driver.ReactiveCocoa-all-arm64_apple_ios8.0-o-O.wall 5219765 5167860 -51905 -0.99%
Unchanged (abs(delta) < 0.01% or 1000000usec) in ReactiveSwift (2)
name old new delta delta_pct
time.swift-driver.ReactiveSwift-all-armv7_apple_ios8.0-o-O.wall 11070860 10988070 -82790 -0.75%
time.swift-driver.ReactiveSwift-all-arm64_apple_ios8.0-o-O.wall 10869730 10615170 -254560 -2.34%
Unchanged (abs(delta) < 0.01% or 1000000usec) in Result (2)
name old new delta delta_pct
time.swift-driver.Result-all-arm64_apple_ios8.0-o-O.wall 2840067 2824997 -15070 -0.53%
time.swift-driver.Result-all-armv7_apple_ios8.0-o-O.wall 2893081 2876181 -16900 -0.58%

PR vs. baseline (release)

PR vs. baseline, changed counters (release)

Regressed (14)
Regressed in Alamofire (3)
name old new delta delta_pct
AST.NumTotalClangImportedEntities 2920 3234 314 10.75% ⛔
LLVM.NumLLVMBytesOutput 3172156 3302772 130616 4.12% ⛔
SILModule.NumSILOptFunctions 2991 3073 82 2.74% ⛔
Regressed in Kingfisher (3)
name old new delta delta_pct
AST.NumTotalClangImportedEntities 9086 9816 730 8.03% ⛔
LLVM.NumLLVMBytesOutput 5462712 5865324 402612 7.37% ⛔
SILModule.NumSILOptFunctions 5723 5842 119 2.08% ⛔
Regressed in ReactiveCocoa (5)
name old new delta delta_pct
LLVM.NumLLVMBytesOutput 5480320 8779696 3299376 60.2% ⛔
Sema.NumConstraintScopes 23810 38102 14292 60.03% ⛔
SILModule.NumSILOptFunctions 2915 3083 168 5.76% ⛔
AST.NumTotalClangImportedEntities 7270 7434 164 2.26% ⛔
IRModule.NumIRGlobals 8486 8491 5 0.06% ⛔
Regressed in ReactiveSwift (3)
name old new delta delta_pct
LLVM.NumLLVMBytesOutput 9452416 9963476 511060 5.41% ⛔
SILModule.NumSILOptFunctions 6852 6934 82 1.2% ⛔
IRModule.NumIRGlobals 11628 11646 18 0.15% ⛔
Improved (69)
Improved in Alamofire (17)
name old new delta delta_pct
SILModule.NumSILGenFunctions 1861 1860 -1 -0.05% ✅
AST.NumUsedConformances 435 432 -3 -0.69% ✅
Sema.NumLazyGenericEnvironments 2814 2784 -30 -1.07% ✅
IRModule.NumIRGlobals 4521 4449 -72 -1.59% ✅
Sema.NumDeclsDeserialized 24875 24138 -737 -2.96% ✅
Sema.NumLazyIterableDeclContexts 1716 1660 -56 -3.26% ✅
Sema.NumTypesDeserialized 23832 22903 -929 -3.9% ✅
IRModule.NumIRValueSymbols 7218 6898 -320 -4.43% ✅
Sema.NumLazyGenericEnvironmentsLoaded 383 364 -19 -4.96% ✅
Sema.NumConstraintScopes 38683 36446 -2237 -5.78% ✅
IRModule.NumIRFunctions 3819 3579 -240 -6.28% ✅
IRModule.NumIRBasicBlocks 16869 15502 -1367 -8.1% ✅
IRModule.NumIRInsts 123248 113088 -10160 -8.24% ✅
Sema.NumConformancesDeserialized 16433 14472 -1961 -11.93% ✅
Sema.NumTypesValidated 1977 1592 -385 -19.47% ✅
Sema.NumDeclsValidated 17283 6892 -10391 -60.12% ✅
Sema.NumGenericSignatureBuilders 1595 416 -1179 -73.92% ✅
Improved in Kingfisher (16)
name old new delta delta_pct
IRModule.NumIRGlobals 8627 8574 -53 -0.61% ✅
AST.NumUsedConformances 858 850 -8 -0.93% ✅
Sema.NumDeclsDeserialized 48980 48343 -637 -1.3% ✅
Sema.NumTypesDeserialized 46208 45237 -971 -2.1% ✅
Sema.NumLazyIterableDeclContexts 3642 3533 -109 -2.99% ✅
Sema.NumLazyGenericEnvironments 5174 4992 -182 -3.52% ✅
IRModule.NumIRValueSymbols 13308 12767 -541 -4.07% ✅
Sema.NumConformancesDeserialized 30795 29184 -1611 -5.23% ✅
Sema.NumLazyGenericEnvironmentsLoaded 876 826 -50 -5.71% ✅
IRModule.NumIRFunctions 6265 5795 -470 -7.5% ✅
IRModule.NumIRBasicBlocks 25356 22501 -2855 -11.26% ✅
IRModule.NumIRInsts 189828 166293 -23535 -12.4% ✅
Sema.NumTypesValidated 3794 2740 -1054 -27.78% ✅
Sema.NumConstraintScopes 564928 301082 -263846 -46.7% ✅
Sema.NumDeclsValidated 35702 14532 -21170 -59.3% ✅
Sema.NumGenericSignatureBuilders 3925 1085 -2840 -72.36% ✅
Improved in ReactiveCocoa (17)
name old new delta delta_pct
Sema.NumFunctionsTypechecked 2484 2482 -2 -0.08% ✅
AST.NumImportedExternalDefinitions 3138 3132 -6 -0.19% ✅
SILModule.NumSILGenFunctions 1917 1913 -4 -0.21% ✅
Sema.NumLazyGenericEnvironments 6210 6182 -28 -0.45% ✅
AST.NumUsedConformances 704 700 -4 -0.57% ✅
IRModule.NumIRValueSymbols 12322 12101 -221 -1.79% ✅
Sema.NumDeclsDeserialized 42739 41876 -863 -2.02% ✅
Sema.NumTypesDeserialized 39750 38813 -937 -2.36% ✅
Sema.NumLazyIterableDeclContexts 3880 3784 -96 -2.47% ✅
Sema.NumLazyGenericEnvironmentsLoaded 728 702 -26 -3.57% ✅
IRModule.NumIRFunctions 5090 4876 -214 -4.2% ✅
IRModule.NumIRInsts 69895 66215 -3680 -5.27% ✅
IRModule.NumIRBasicBlocks 9437 8787 -650 -6.89% ✅
Sema.NumConformancesDeserialized 20926 19416 -1510 -7.22% ✅
Sema.NumTypesValidated 4072 2372 -1700 -41.75% ✅
Sema.NumDeclsValidated 20206 11058 -9148 -45.27% ✅
Sema.NumGenericSignatureBuilders 3612 1278 -2334 -64.62% ✅
Improved in ReactiveSwift (19)
name old new delta delta_pct
Sema.NumLazyGenericEnvironments 5196 5184 -12 -0.23% ✅
AST.NumUsedConformances 732 730 -2 -0.27% ✅
SILModule.NumSILGenFunctions 3755 3735 -20 -0.53% ✅
Sema.NumFunctionsTypechecked 1990 1976 -14 -0.7% ✅
Sema.NumDeclsDeserialized 44930 44008 -922 -2.05% ✅
IRModule.NumIRValueSymbols 19993 19422 -571 -2.86% ✅
Sema.NumLazyIterableDeclContexts 2982 2881 -101 -3.39% ✅
Sema.NumTypesDeserialized 40957 39538 -1419 -3.46% ✅
IRModule.NumIRFunctions 10605 10078 -527 -4.97% ✅
IRModule.NumIRInsts 271570 256189 -15381 -5.66% ✅
Sema.NumLazyGenericEnvironmentsLoaded 890 828 -62 -6.97% ✅
Sema.NumConformancesDeserialized 26845 24812 -2033 -7.57% ✅
Sema.NumConstraintScopes 38598 34930 -3668 -9.5% ✅
Sema.NumTypesValidated 26352 23594 -2758 -10.47% ✅
IRModule.NumIRBasicBlocks 23918 21304 -2614 -10.93% ✅
AST.NumImportedExternalDefinitions 592 512 -80 -13.51% ✅
AST.NumTotalClangImportedEntities 2670 2102 -568 -21.27% ✅
Sema.NumGenericSignatureBuilders 4390 1515 -2875 -65.49% ✅
Sema.NumDeclsValidated 28656 9730 -18926 -66.05% ✅
Unchanged (abs(delta) < 0.01% or 100000usec) (9)
Unchanged (abs(delta) < 0.01% or 100000usec) in Alamofire (3)
name old new delta delta_pct
AST.NumImportedExternalDefinitions 881 881 0 0.0%
AST.NumLoadedModules 28 28 0 0.0%
Sema.NumFunctionsTypechecked 1104 1104 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in Kingfisher (4)
name old new delta delta_pct
AST.NumImportedExternalDefinitions 3368 3368 0 0.0%
AST.NumLoadedModules 61 61 0 0.0%
SILModule.NumSILGenFunctions 3056 3056 0 0.0%
Sema.NumFunctionsTypechecked 2848 2848 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in ReactiveCocoa (1)
name old new delta delta_pct
AST.NumLoadedModules 66 66 0 0.0%
Unchanged (abs(delta) < 0.01% or 100000usec) in ReactiveSwift (1)
name old new delta delta_pct
AST.NumLoadedModules 38 38 0 0.0%

PR vs. baseline, changed timers (release)

Regressed (0)
Improved (0)
Unchanged (abs(delta) < 0.01% or 1000000usec) (0)
Last baseline commit on smoketest-master-debug.csv
commit 051207462e73c88493bbf2e49795efb88cb6c1ec
Author: Graydon Hoare 
Date:   Tue Oct 10 12:33:02 2017 -0700

    Update smoketest baselines for Swift version 4.0.1-dev (LLVM 2dedb62a0b, Clang ab7472e733, Swift 866e511daa)

Last baseline commit on smoketest-master-release.csv

commit 051207462e73c88493bbf2e49795efb88cb6c1ec
Author: Graydon Hoare 
Date:   Tue Oct 10 12:33:02 2017 -0700

    Update smoketest baselines for Swift version 4.0.1-dev (LLVM 2dedb62a0b, Clang ab7472e733, Swift 866e511daa)


@graydon graydon merged commit 30b6fdc into swiftlang:master Oct 24, 2017
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.

5 participants