Skip to content

Protocol witness thunks don't need public linkage #8387

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

slavapestov
Copy link
Contributor

@slavapestov slavapestov commented Mar 28, 2017

Follow-up to #8422. Giving the thunks public linkage is unnecessary, so we make them shared (if the witness table is going to be serialized) or private (otherwise).

This exposes a flaw in how we map AST-level accessibility to symbol visibility. We seem to allow protocol conformances that we really should reject. I added a workaround but we should consider making the relevant case an error in Swift 4 mode, since it's going to be an issue for ABI resilience and TBDGen.

@slavapestov slavapestov changed the title Protocol witness thunks don't need public linkage [WIP] Protocol witness thunks don't need public linkage Mar 28, 2017
@slavapestov slavapestov force-pushed the protocol-witness-thunk-linkage branch from 6483b2f to f8ca963 Compare March 30, 2017 07:18
@@ -0,0 +1,42 @@
// RUN: %target-swift-frontend -Xllvm -sil-full-demangle -emit-silgen %s | %FileCheck %s

public protocol P {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@jrose-apple @huonw I invite you to marvel at the subtle complexity and delicious texture of this test case.

@slavapestov
Copy link
Contributor Author

@swift-ci Please test

@slavapestov slavapestov changed the title [WIP] Protocol witness thunks don't need public linkage Protocol witness thunks don't need public linkage Mar 30, 2017
@slavapestov
Copy link
Contributor Author

@jrose-apple The thing I don't get is that removing 'public' from 'publicRequirement()' causes Sema to reject the conformance, but SILGen just ignores it anyway because R is 'fileprivate'.

I think is a consequence of how in SE-0025 (?) we decided that making things more public than the scope that contains them should be allowed, but ignored. I strongly feel this was a mistake.

@swift-ci
Copy link
Contributor

Build failed
Jenkins build - Swift Test Linux Platform
Git Commit - f8ca963f928426ad4e892010c4cc4e6b99147677
Test requested by - @slavapestov

@swift-ci
Copy link
Contributor

Build failed
Jenkins build - Swift Test OS X Platform
Git Commit - f8ca963f928426ad4e892010c4cc4e6b99147677
Test requested by - @slavapestov

The existence of a shared_external function in itself is not
an error; it just means we deserialized a witness table or
vtable but did not need to deserialize a thunk.

However, a direct reference to such a function is an error,
because we should have deserialized the body in that case.

This fixes a crasher, but the SIL crashers are kind of silly
because the SIL parser does not try at all not to crash on
invalid input.
@slavapestov slavapestov force-pushed the protocol-witness-thunk-linkage branch from f8ca963 to dbdd0f0 Compare March 30, 2017 07:45
@slavapestov
Copy link
Contributor Author

@swift-ci Please test

@slavapestov
Copy link
Contributor Author

@swift-ci Please benchmark

@slavapestov
Copy link
Contributor Author

@swift-ci Please test

@swift-ci
Copy link
Contributor

Build failed
Jenkins build - Swift Test Linux Platform
Git Commit - f8ca963f928426ad4e892010c4cc4e6b99147677
Test requested by - @slavapestov

@swift-ci
Copy link
Contributor

Build failed
Jenkins build - Swift Test OS X Platform
Git Commit - f8ca963f928426ad4e892010c4cc4e6b99147677
Test requested by - @slavapestov

@slavapestov
Copy link
Contributor Author

@swift-ci Please benchmark

@swift-ci
Copy link
Contributor

Build failed
Jenkins build - Swift Test OS X Platform
Git Commit - dbdd0f0b47a3f6421bbd1b8b931dd356eea3b188
Test requested by - @slavapestov

@swift-ci
Copy link
Contributor

Build comment file:

Build failed before running benchmark.


We used to give witness thunks public linkage if the
conforming type and the protocol are public.

This is completely unnecessary. If the conformance is
fragile, the thunk should be [shared] [serialized],
allowing the thunk to be serialized into callers after
devirtualization.

Otherwise for private protocols or resilient modules,
witness thunks can just always be private.

This should reduce the size of compiled binaries.

There are two other mildly interesting consequences:

1) In the bridged cast tests, we now inline the witness
   thunks from the bridgeable conformances, which removes
   one level of indirection.

2) This uncovered a flaw in our accessibility checking
   model. Usually, we reject a witness that is less
   visible than the protocol; however, we fail to
   reject it in the case that it comes from an
   extension.

   This is because members of an extension can be
   declared 'public' even if the extended type is not
   public, and it appears that in this case the 'public'
   keyword has no effect.

   I would prefer it if a) 'public' generated a warning
   here, and b) the conformance also generated a warning.

   In Swift 4 mode, we could then make this kind of
   sillyness into an error. But for now, live with the
   broken behavior, and add a test to exercise it to ensure
   we don't crash.

   There are other places where this "allow public but
   ignore it, kinda, except respect it in some places"
   behavior causes problems. I don't know if it was intentional
   or just emergent behavior from general messiness in Sema.

3) In the TBD code, there is one less 'failure' because now
   that witness thunks are no longer public, TBDGen does not
   need to reason about them (except for the case swiftlang#2 above,
   which will probably require a similar workaround in TBDGen
   as what I put into SILGen).
@slavapestov slavapestov force-pushed the protocol-witness-thunk-linkage branch from dbdd0f0 to 6a83e73 Compare March 30, 2017 10:54
@slavapestov
Copy link
Contributor Author

@swift-ci Please test

1 similar comment
@slavapestov
Copy link
Contributor Author

@swift-ci Please test

@slavapestov
Copy link
Contributor Author

@swift-ci Please benchmark

1 similar comment
@slavapestov
Copy link
Contributor Author

@swift-ci Please benchmark

@jrose-apple
Copy link
Contributor

I think your analysis is correct. SE-0025 says this does not get a warning, and then something must be checking getFormalAccess where it should be looking at getFormalAccessScope. (The former really needs a rename.)

@swift-ci
Copy link
Contributor

Build comment file:

Optimized (O)

Regression (5)
TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
ObjectiveCBridgeStubFromNSString 934 1071 +14.7% 0.87x
ExistentialTestArrayShift_IntValueBuffer2 3505 3882 +10.8% 0.90x
ExistentialTestArrayShift_ClassValueBuffer2 3502 3882 +10.8% 0.90x
ExistentialTestTwoMethodCalls_ClassValueBuffer4 33753 37369 +10.7% 0.90x
ExistentialTestOneMethodCall_ClassValueBuffer4 16692 18184 +8.9% 0.92x
Improvement (41)
TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
ExistentialTestArrayShift_IntValueBuffer4 3503 3312 -5.5% 1.06x
ExistentialTestArrayShift_IntValueBuffer1 3503 3311 -5.5% 1.06x
ExistentialTestArrayShift_IntValueBuffer0 3497 3312 -5.3% 1.06x
StringMatch 37213 34985 -6.0% 1.06x
ExistentialTestArrayShift_ClassValueBuffer4 3503 3310 -5.5% 1.06x
ExistentialTestArrayShift_ClassValueBuffer1 3503 3309 -5.5% 1.06x
ExistentialTestMutating_ClassValueBuffer2 19200 18188 -5.3% 1.06x
ExistentialTestMutating_ClassValueBuffer1 19199 18191 -5.2% 1.06x
ExistentialTestTwoMethodCalls_IntValueBuffer3 28793 27277 -5.3% 1.06x
ExistentialTestMutating_ClassValueBuffer3 19200 18191 -5.3% 1.06x
ExistentialTestPassExistentialTwoMethodCalls_IntValueBuffer3 103084 96991 -5.9% 1.06x
ExistentialTestArrayOneMethodCall_IntValueBuffer0 5527 5147 -6.9% 1.07x
DropLastArray 32 30 -6.2% 1.07x
NopDeinit 22912 21361 -6.8% 1.07x
ExistentialTestArrayOneMethodCall_IntValueBuffer1 5579 5149 -7.7% 1.08x
CStringLongAscii 16498 15211 -7.8% 1.08x
ExistentialTestArrayShift_IntValueBuffer3 4076 3727 -8.6% 1.09x
ExistentialTestArrayTwoMethodCalls_IntValueBuffer1 7475 6850 -8.4% 1.09x
ExistentialTestArrayShift_ClassValueBuffer3 4076 3724 -8.6% 1.09x
ObjectiveCBridgeStubNSDateRefAccess 345 317 -8.1% 1.09x
ExistentialTestArrayTwoMethodCalls_IntValueBuffer3 7856 7113 -9.5% 1.10x
ExistentialTestMutatingAndNonMutating_IntValueBuffer2 50008 45464 -9.1% 1.10x
ExistentialTestPassExistentialTwoMethodCalls_IntValueBuffer1 100031 91110 -8.9% 1.10x
ExistentialTestMutatingAndNonMutating_IntValueBuffer0 46977 42433 -9.7% 1.11x
ExistentialTestMutating_IntValueBuffer0 15154 13637 -10.0% 1.11x
ExistentialTestArrayOneMethodCall_IntValueBuffer3 5907 5286 -10.5% 1.12x
ExistentialTestOneMethodCall_IntValueBuffer1 15231 13638 -10.5% 1.12x
OpenClose 54 48 -11.1% 1.12x
ExistentialTestMutating_ClassValueBuffer4 45536 40644 -10.7% 1.12x
ExistentialTestOneMethodCall_IntValueBuffer2 15501 13666 -11.8% 1.13x
ExistentialTestPassExistentialOneMethodCall_IntValueBuffer3 79976 71054 -11.2% 1.13x
ExistentialTestMutatingAndNonMutating_IntValueBuffer3 53044 47022 -11.3% 1.13x
ExistentialTestOneMethodCall_IntValueBuffer3 15355 13639 -11.2% 1.13x
ExistentialTestMutatingAndNonMutating_IntValueBuffer1 48494 42430 -12.5% 1.14x
ExistentialTestTwoMethodCalls_ClassValueBuffer3 31826 27277 -14.3% 1.17x
ExistentialTestTwoMethodCalls_ClassValueBuffer1 31825 27278 -14.3% 1.17x
ExistentialTestOneMethodCall_IntValueBuffer0 16027 13639 -14.9% 1.18x
ExistentialTestTwoMethodCalls_IntValueBuffer1 30778 25763 -16.3% 1.19x
ExistentialTestOneMethodCall_ClassValueBuffer1 16670 13638 -18.2% 1.22x
ExistentialTestOneMethodCall_ClassValueBuffer3 16669 13639 -18.2% 1.22x
ProtocolDispatch 3030 2424 -20.0% 1.25x
No Changes (245)
TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
ExistentialTestArrayTwoMethodCalls_IntValueBuffer0 7479 7095 -5.1% 1.05x
ObjectiveCBridgeStubFromNSDateRef 3807 3642 -4.3% 1.05x
ExistentialTestPassExistentialOneMethodCall_IntValueBuffer0 74387 70595 -5.1% 1.05x
PolymorphicCalls 22 21 -4.5% 1.05x
ProtocolDispatch2 168 160 -4.8% 1.05x
StringHasSuffix 710 673 -5.2% 1.05x(?)
ExistentialTestTwoMethodCalls_IntValueBuffer2 28794 27394 -4.9% 1.05x
ExistentialTestTwoMethodCalls_IntValueBuffer0 29666 28420 -4.2% 1.04x
ExistentialTestPassExistentialTwoMethodCalls_IntValueBuffer0 100019 96010 -4.0% 1.04x
ExistentialTestPassExistentialTwoMethodCalls_IntValueBuffer4 251566 244407 -2.9% 1.03x
ExistentialTestPassExistentialOneMethodCall_IntValueBuffer1 73193 71260 -2.6% 1.03x
IterateData 2753 2667 -3.1% 1.03x
NSDictionaryCastToSwift 5405 5264 -2.6% 1.03x(?)
ObserverForwarderStruct 1141 1109 -2.8% 1.03x
ObjectiveCBridgeStubNSDateMutationRef 12438 12091 -2.8% 1.03x(?)
SetIntersect_OfObjects 1734 1705 -1.7% 1.02x(?)
Join 489 478 -2.2% 1.02x
ExistentialTestMutating_IntValueBuffer2 18710 18417 -1.6% 1.02x
ExistentialTestPassExistentialOneMethodCall_IntValueBuffer2 75770 73963 -2.4% 1.02x
ObjectiveCBridgeToNSDictionary 59970 58927 -1.7% 1.02x(?)
ArrayAppendSequence 995 976 -1.9% 1.02x
DeadArray 184 181 -1.6% 1.02x
ObjectiveCBridgeStubFromArrayOfNSString 31570 30992 -1.8% 1.02x(?)
Phonebook 7454 7297 -2.1% 1.02x
SetExclusiveOr_OfObjects 7930 7861 -0.9% 1.01x(?)
StackPromo 22587 22469 -0.5% 1.01x
ObjectiveCBridgeFromNSDictionaryAnyObject 121036 119281 -1.4% 1.01x(?)
ExistentialTestMutatingAndNonMutating_ClassValueBuffer3 281855 280338 -0.5% 1.01x
ExistentialTestMutatingAndNonMutating_ClassValueBuffer2 204579 203062 -0.7% 1.01x
StringInterpolation 9345 9244 -1.1% 1.01x(?)
CharacterLiteralsLarge 12294 12228 -0.5% 1.01x(?)
ObserverClosure 2216 2204 -0.5% 1.01x(?)
AnyHashableWithAClass 68197 67325 -1.3% 1.01x
ObjectiveCBridgeFromNSSetAnyObject 64152 63816 -0.5% 1.01x(?)
Dictionary3 597 591 -1.0% 1.01x(?)
PopFrontUnsafePointer 9134 9086 -0.5% 1.01x(?)
ExistentialTestMutating_IntValueBuffer3 21604 21337 -1.2% 1.01x(?)
DictionaryRemoveOfObjects 22445 22248 -0.9% 1.01x
ObjectiveCBridgeStubURLAppendPath 214085 211699 -1.1% 1.01x(?)
ObjectiveCBridgeStubDataAppend 3713 3688 -0.7% 1.01x(?)
ExistentialTestPassExistentialTwoMethodCalls_ClassValueBuffer1 253543 250024 -1.4% 1.01x
StringBuilder 1359 1349 -0.7% 1.01x(?)
DictionaryRemove 3158 3120 -1.2% 1.01x(?)
LinkedList 7107 7045 -0.9% 1.01x(?)
StrToInt 6236 6150 -1.4% 1.01x
290 16679587 16572236 -0.6% 1.01x
ObjectiveCBridgeStubNSDataAppend 2290 2276 -0.6% 1.01x(?)
Dictionary2OfObjects 3641 3622 -0.5% 1.01x(?)
DropLastSequence 4629 4637 +0.2% 1.00x(?)
ArraySubscript 1515 1522 +0.5% 1.00x(?)
DictionarySwapOfObjects 6877 6868 -0.1% 1.00x(?)
MapReduceShortString 18 18 +0.0% 1.00x
PopFrontArray 1118 1115 -0.3% 1.00x(?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 44745 44630 -0.3% 1.00x(?)
ClassArrayGetter 13 13 +0.0% 1.00x
Array2D 2033 2039 +0.3% 1.00x(?)
Histogram 243 242 -0.4% 1.00x
ExistentialTestArrayTwoMethodCalls_ClassValueBuffer4 16124 16173 +0.3% 1.00x(?)
ExistentialTestArrayTwoMethodCalls_ClassValueBuffer3 36539 36525 -0.0% 1.00x(?)
ExistentialTestArrayTwoMethodCalls_ClassValueBuffer1 17170 17174 +0.0% 1.00x(?)
DictionaryBridge 2622 2630 +0.3% 1.00x(?)
StringEdits 518107 519033 +0.2% 1.00x(?)
ExistentialTestArrayOneMethodCall_IntValueBuffer4 14392 14376 -0.1% 1.00x(?)
ArrayAppendAscii 19931 19921 -0.1% 1.00x(?)
ExistentialTestMutatingAndNonMutating_ClassValueBuffer1 121234 121230 -0.0% 1.00x(?)
MonteCarloPi 44997 44847 -0.3% 1.00x(?)
StringWithCString 329415 329368 -0.0% 1.00x(?)
SortLettersInPlace 1149 1145 -0.3% 1.00x(?)
DictionarySwap 373 373 +0.0% 1.00x
ReversedDictionary 125 125 +0.0% 1.00x
ArrayAppendToFromGeneric 595 595 +0.0% 1.00x
ArrayAppendReserved 531 533 +0.4% 1.00x(?)
ExistentialTestArrayTwoMethodCalls_IntValueBuffer4 15974 15928 -0.3% 1.00x(?)
ExistentialTestArrayTwoMethodCalls_IntValueBuffer2 7474 7481 +0.1% 1.00x(?)
MonteCarloE 10636 10617 -0.2% 1.00x(?)
ExistentialTestMutatingAndNonMutating_ClassValueBuffer4 142450 142448 -0.0% 1.00x(?)
Dictionary3OfObjects 1055 1051 -0.4% 1.00x(?)
ExistentialTestArrayConditionalShift_ClassValueBuffer2 90705 90702 -0.0% 1.00x(?)
ExistentialTestArrayConditionalShift_IntValueBuffer0 30716 30789 +0.2% 1.00x(?)
ExistentialTestArrayConditionalShift_ClassValueBuffer4 61433 61534 +0.2% 1.00x(?)
ExistentialTestArrayConditionalShift_IntValueBuffer2 31616 31571 -0.1% 1.00x(?)
ExistentialTestArrayConditionalShift_IntValueBuffer4 60172 60202 +0.1% 1.00x(?)
StringHasPrefix 608 608 +0.0% 1.00x
ByteSwap 0 0 +0.0% 1.00x
ArrayAppendGenericStructs 1220 1222 +0.2% 1.00x(?)
SuperChars 251286 251191 -0.0% 1.00x(?)
ArrayAppendLazyMap 913 911 -0.2% 1.00x(?)
ArrayPlusEqualFiveElementCollection 51693 51715 +0.0% 1.00x(?)
XorLoop 353 353 +0.0% 1.00x
SortStringsUnicode 7579 7598 +0.2% 1.00x(?)
CharacterLiteralsSmall 804 803 -0.1% 1.00x(?)
LazilyFilteredRange 7753 7753 +0.0% 1.00x
ExistentialTestArrayConditionalShift_IntValueBuffer1 30809 30915 +0.3% 1.00x
ObjectiveCBridgeStubToNSString 1508 1511 +0.2% 1.00x(?)
ArrayPlusEqualSingleElementCollection 49037 49281 +0.5% 1.00x(?)
ArrayAppendStrings 13537 13521 -0.1% 1.00x(?)
ExistentialTestOneMethodCall_IntValueBuffer4 16746 16669 -0.5% 1.00x
StaticArray 156 156 +0.0% 1.00x
ObjectAllocation 179 179 +0.0% 1.00x
ObserverUnappliedMethod 2711 2701 -0.4% 1.00x(?)
StringHasSuffixUnicode 60928 61184 +0.4% 1.00x(?)
ArrayLiteral 1210 1210 +0.0% 1.00x
ArrayPlusEqualArrayOfInt 595 595 +0.0% 1.00x
ExistentialTestArrayConditionalShift_ClassValueBuffer1 60817 60817 +0.0% 1.00x
StringBuilderLong 938 940 +0.2% 1.00x(?)
Dictionary2 2125 2124 -0.1% 1.00x(?)
StrComplexWalk 2873 2878 +0.2% 1.00x(?)
ExistentialTestArrayMutating_ClassValueBuffer2 14181 14189 +0.1% 1.00x(?)
ExistentialTestArrayMutating_ClassValueBuffer3 14181 14194 +0.1% 1.00x(?)
ExistentialTestArrayMutating_ClassValueBuffer1 14180 14187 +0.1% 1.00x(?)
ArrayOfRef 3871 3876 +0.1% 1.00x(?)
ExistentialTestArrayMutating_ClassValueBuffer4 16909 16901 -0.1% 1.00x(?)
ObjectiveCBridgeStubURLAppendPathRef 215152 214917 -0.1% 1.00x(?)
NSError 347 347 +0.0% 1.00x
HashTest 1738 1731 -0.4% 1.00x(?)
DictionaryOfObjects 2567 2562 -0.2% 1.00x(?)
ObjectiveCBridgeStubToNSDateRef 3383 3383 +0.0% 1.00x
StringEqualPointerComparison 7246 7274 +0.4% 1.00x(?)
MapReduceAnyCollectionShort 2168 2173 +0.2% 1.00x(?)
StringAdder 0 0 +0.0% 1.00x
Calculator 34 34 +0.0% 1.00x
ArrayAppendFromGeneric 595 595 +0.0% 1.00x
ExistentialTestArrayConditionalShift_ClassValueBuffer3 121036 121039 +0.0% 1.00x(?)
MapReduceShort 1935 1938 +0.2% 1.00x(?)
ObjectiveCBridgeStubDateMutation 272 272 +0.0% 1.00x
DictionaryLiteral 1468 1470 +0.1% 1.00x(?)
ArrayOfGenericPOD 219 219 +0.0% 1.00x
UTF8Decode 273 273 +0.0% 1.00x
MapReduceLazySequence 90 90 +0.0% 1.00x
ExistentialTestPassExistentialTwoMethodCalls_ClassValueBuffer3 551031 548963 -0.4% 1.00x(?)
LazilyFilteredArrays 71160 71151 -0.0% 1.00x(?)
ExistentialTestPassExistentialTwoMethodCalls_ClassValueBuffer4 244075 243982 -0.0% 1.00x(?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 98257 98499 +0.2% 1.00x(?)
SetUnion_OfObjects 6369 6343 -0.4% 1.00x(?)
SetIsSubsetOf 288 288 +0.0% 1.00x
ObjectiveCBridgeStubToArrayOfNSString 27800 27922 +0.4% 1.00x(?)
CStringShortAscii 6284 6269 -0.2% 1.00x(?)
ObjectiveCBridgeFromNSArrayAnyObject 23809 23709 -0.4% 1.00x(?)
MapReduceClassShort 4546 4548 +0.0% 1.00x(?)
ExistentialTestArrayTwoMethodCalls_ClassValueBuffer2 26684 26683 -0.0% 1.00x(?)
ObjectiveCBridgeFromNSSetAnyObjectToString 80578 80738 +0.2% 1.00x(?)
GlobalClass 0 0 +0.0% 1.00x
ExistentialTestMutating_IntValueBuffer1 16670 16631 -0.2% 1.00x(?)
ArrayInClass 61 61 +0.0% 1.00x
ArrayOfGenericRef 3989 3986 -0.1% 1.00x(?)
ObjectiveCBridgeFromNSString 1443 1442 -0.1% 1.00x(?)
ExistentialTestTwoMethodCalls_IntValueBuffer4 35781 35791 +0.0% 1.00x(?)
ObjectiveCBridgeStubDateAccess 181 181 +0.0% 1.00x
Sim2DArray 276 276 +0.0% 1.00x
SetExclusiveOr 2589 2592 +0.1% 1.00x(?)
ArrayAppendRepeatCol 837 836 -0.1% 1.00x(?)
ExistentialTestArrayOneMethodCall_ClassValueBuffer4 14576 14553 -0.2% 1.00x(?)
ExistentialTestArrayOneMethodCall_ClassValueBuffer1 14659 14638 -0.1% 1.00x(?)
ExistentialTestArrayOneMethodCall_ClassValueBuffer3 35016 35014 -0.0% 1.00x(?)
ExistentialTestArrayOneMethodCall_ClassValueBuffer2 24937 24937 +0.0% 1.00x
ExistentialTestArrayMutating_IntValueBuffer4 18259 18257 -0.0% 1.00x(?)
ExistentialTestArrayMutating_IntValueBuffer3 15722 15721 -0.0% 1.00x(?)
ExistentialTestArrayMutating_IntValueBuffer2 14185 14185 +0.0% 1.00x
ExistentialTestArrayMutating_IntValueBuffer1 14753 14752 -0.0% 1.00x(?)
ExistentialTestArrayMutating_IntValueBuffer0 14564 14565 +0.0% 1.00x(?)
ExistentialTestArrayConditionalShift_IntValueBuffer3 32315 32457 +0.4% 1.00x(?)
ArrayAppendToGeneric 595 595 +0.0% 1.00x
Walsh 357 357 +0.0% 1.00x
SetIsSubsetOf_OfObjects 360 359 -0.3% 1.00x
HashQuadratic 6313903 6290009 -0.4% 1.00x(?)
ExistentialTestMutatingAndNonMutating_IntValueBuffer4 155810 155867 +0.0% 1.00x(?)
SuffixCountableRange 28 28 +0.0% 1.00x
MapReduceAnyCollection 302 303 +0.3% 1.00x(?)
RGBHistogramOfObjects 24017 23985 -0.1% 1.00x(?)
ArrayAppendArrayOfInt 595 595 +0.0% 1.00x
ArrayOfPOD 166 166 +0.0% 1.00x
Chars 1459 1465 +0.4% 1.00x(?)
ExistentialTestPassExistentialOneMethodCall_ClassValueBuffer4 216711 216610 -0.1% 1.00x(?)
ExistentialTestPassExistentialOneMethodCall_ClassValueBuffer3 534712 534601 -0.0% 1.00x(?)
ExistentialTestPassExistentialOneMethodCall_ClassValueBuffer2 365751 365737 -0.0% 1.00x(?)
ExistentialTestPassExistentialOneMethodCall_ClassValueBuffer1 225139 225145 +0.0% 1.00x(?)
MapReduceLazyCollection 15 15 +0.0% 1.00x
ReversedArray 49 49 +0.0% 1.00x
CStringLongNonAscii 4346 4345 -0.0% 1.00x(?)
BitCount 1 1 +0.0% 1.00x
AngryPhonebook 2889 2898 +0.3% 1.00x(?)
SevenBoom 1459 1460 +0.1% 1.00x(?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 41068 41022 -0.1% 1.00x(?)
ExistentialTestOneMethodCall_ClassValueBuffer2 15153 15155 +0.0% 1.00x(?)
DropLastCountableRange 28 28 +0.0% 1.00x
SuffixSequence 4957 4955 -0.0% 1.00x(?)
StringWalk 5834 5834 +0.0% 1.00x
ArrayValueProp 6 6 +0.0% 1.00x
SuffixArray 30 30 +0.0% 1.00x
TypeFlood 0 0 +0.0% 1.00x
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 71846 72040 +0.3% 1.00x(?)
MapReduceClass 3090 3092 +0.1% 1.00x(?)
Memset 234 234 +0.0% 1.00x
ExistentialTestPassExistentialTwoMethodCalls_IntValueBuffer2 100376 99894 -0.5% 1.00x(?)
ArrayValueProp4 6 6 +0.0% 1.00x
TwoSum 1247 1251 +0.3% 1.00x(?)
ExistentialTestPassExistentialOneMethodCall_IntValueBuffer4 224293 224276 -0.0% 1.00x(?)
ArrayValueProp2 6 6 +0.0% 1.00x
ArrayValueProp3 6 6 +0.0% 1.00x
ObserverPartiallyAppliedMethod 3758 3754 -0.1% 1.00x(?)
ObjectiveCBridgeToNSString 1267 1276 +0.7% 0.99x(?)
RecursiveOwnedParameter 2321 2339 +0.8% 0.99x
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 5015 5042 +0.5% 0.99x(?)
ExistentialTestArrayOneMethodCall_IntValueBuffer2 5527 5610 +1.5% 0.99x(?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 4530 4567 +0.8% 0.99x(?)
ObjectiveCBridgeFromNSStringForced 2390 2409 +0.8% 0.99x(?)
Prims 762 771 +1.2% 0.99x(?)
StringUTF16Builder 2180 2213 +1.5% 0.99x(?)
ObjectiveCBridgeStubToNSDate 14374 14549 +1.2% 0.99x(?)
ObjectiveCBridgeStubFromNSStringRef 179 180 +0.6% 0.99x(?)
SortSortedStrings 836 841 +0.6% 0.99x
ErrorHandling 2911 2930 +0.7% 0.99x(?)
ArrayAppend 772 776 +0.5% 0.99x(?)
ArrayAppendOptionals 1224 1232 +0.7% 0.99x(?)
ObjectiveCBridgeToNSArray 28250 28536 +1.0% 0.99x(?)
CaptureProp 4600 4643 +0.9% 0.99x
ObjectiveCBridgeStubToNSStringRef 109 110 +0.9% 0.99x(?)
MapReduce 344 347 +0.9% 0.99x(?)
ArrayAppendUTF16 41492 41853 +0.9% 0.99x(?)
Hanoi 3390 3428 +1.1% 0.99x(?)
Dictionary 796 804 +1.0% 0.99x(?)
ObjectiveCBridgeToNSSet 36320 36634 +0.9% 0.99x(?)
ReversedBidirectional 49752 50063 +0.6% 0.99x
NSStringConversion 763 771 +1.1% 0.99x(?)
ObjectiveCBridgeFromNSSetAnyObjectForced 4208 4241 +0.8% 0.99x(?)
RC4 156 158 +1.3% 0.99x(?)
DropLastAnySequence 6334 6466 +2.1% 0.98x
SortStrings 1654 1694 +2.4% 0.98x(?)
MapReduceLazyCollectionShort 43 44 +2.3% 0.98x(?)
ArrayAppendLatin1 44619 45500 +2.0% 0.98x
PopFrontArrayGeneric 1088 1114 +2.4% 0.98x(?)
ExistentialTestMutating_IntValueBuffer4 51559 52401 +1.6% 0.98x(?)
SuffixAnySequence 6339 6480 +2.2% 0.98x(?)
ExistentialTestPassExistentialTwoMethodCalls_ClassValueBuffer2 368760 376836 +2.2% 0.98x
SetIntersect 327 332 +1.5% 0.98x(?)
ExistentialTestTwoMethodCalls_ClassValueBuffer2 30308 31019 +2.4% 0.98x
RGBHistogram 2648 2692 +1.7% 0.98x(?)
SetUnion 2112 2146 +1.6% 0.98x(?)
ObjectiveCBridgeStubFromNSDate 3560 3639 +2.2% 0.98x(?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 98926 101761 +2.9% 0.97x(?)
MapReduceString 73 75 +2.7% 0.97x
RangeAssignment 304 312 +2.6% 0.97x(?)
Integrate 262 273 +4.2% 0.96x
StringHasPrefixUnicode 13914 14428 +3.7% 0.96x(?)
MapReduceSequence 525 553 +5.3% 0.95x
**Unoptimized (Onone)**
Regression (2)
TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
ObjectiveCBridgeStubFromNSString 954 1102 +15.5% 0.87x
OpenClose 433 491 +13.4% 0.88x(?)
Improvement (0)
No Changes (289)
TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
HashQuadratic 52362469 50100399 -4.3% 1.05x
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 7645 7381 -3.5% 1.04x(?)
ExistentialTestArrayMutating_IntValueBuffer3 123264 118163 -4.1% 1.04x(?)
TypeFlood 169 162 -4.1% 1.04x(?)
SortStrings 2705 2639 -2.4% 1.03x
ObjectiveCBridgeFromNSArrayAnyObjectForced 8028 7830 -2.5% 1.03x
ExistentialTestOneMethodCall_IntValueBuffer4 43990 42773 -2.8% 1.03x(?)
ExistentialTestMutatingAndNonMutating_IntValueBuffer0 89309 87912 -1.6% 1.02x(?)
290 96436797 94211846 -2.3% 1.02x
SetIntersect 10874 10672 -1.9% 1.02x
StringAdder 51 50 -2.0% 1.02x
ObjectiveCBridgeFromNSSetAnyObjectForced 7224 7112 -1.6% 1.02x(?)
ObjectiveCBridgeStubFromArrayOfNSString 31806 31155 -2.0% 1.02x(?)
ArrayAppendRepeatCol 207348 206255 -0.5% 1.01x(?)
StringUTF16Builder 3773 3737 -0.9% 1.01x(?)
MapReduceString 2250 2237 -0.6% 1.01x
StringWithCString 343619 341895 -0.5% 1.01x
ArrayAppendOptionals 1304 1295 -0.7% 1.01x(?)
ArrayPlusEqualFiveElementCollection 280140 277496 -0.9% 1.01x(?)
SortStringsUnicode 8804 8726 -0.9% 1.01x
ObjectiveCBridgeStubNSDateMutationRef 15284 15116 -1.1% 1.01x(?)
ProtocolDispatch 7065 7020 -0.6% 1.01x(?)
ObjectAllocation 633 628 -0.8% 1.01x(?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 107046 105632 -1.3% 1.01x(?)
MapReduce 36549 36243 -0.8% 1.01x
SetIsSubsetOf 1640 1627 -0.8% 1.01x(?)
SortLettersInPlace 2725 2703 -0.8% 1.01x(?)
ExistentialTestPassExistentialOneMethodCall_IntValueBuffer1 137093 135902 -0.9% 1.01x(?)
ArrayAppendUTF16 103990 103303 -0.7% 1.01x
ObserverClosure 6870 6825 -0.7% 1.01x(?)
ObjectiveCBridgeFromNSArrayAnyObject 25838 25591 -1.0% 1.01x(?)
CaptureProp 103249 101899 -1.3% 1.01x
SetExclusiveOr 20938 20696 -1.2% 1.01x(?)
ExistentialTestMutatingAndNonMutating_IntValueBuffer4 419481 416431 -0.7% 1.01x
SuffixCountableRange 144 143 -0.7% 1.01x(?)
StringMatch 87835 87381 -0.5% 1.01x(?)
ObjectiveCBridgeFromNSSetAnyObjectToString 87520 86364 -1.3% 1.01x(?)
ArrayLiteral 1474 1457 -1.1% 1.01x(?)
ObjectiveCBridgeStubNSDataAppend 2686 2666 -0.7% 1.01x(?)
SetUnion 11893 11833 -0.5% 1.01x(?)
ObjectiveCBridgeStubToNSDateRef 3390 3350 -1.2% 1.01x(?)
StrToInt 7598 7517 -1.1% 1.01x
CStringLongNonAscii 4460 4415 -1.0% 1.01x
MapReduceClass 41794 41528 -0.6% 1.01x(?)
DropLastSequence 42507 42397 -0.3% 1.00x(?)
ExistentialTestTwoMethodCalls_IntValueBuffer0 75530 75545 +0.0% 1.00x(?)
ArraySubscript 4379 4375 -0.1% 1.00x(?)
SetExclusiveOr_OfObjects 41119 41215 +0.2% 1.00x(?)
ObjectiveCBridgeToNSString 1305 1302 -0.2% 1.00x
DictionarySwapOfObjects 19553 19511 -0.2% 1.00x(?)
StackPromo 98556 98764 +0.2% 1.00x(?)
RecursiveOwnedParameter 9414 9412 -0.0% 1.00x(?)
Integrate 395 395 +0.0% 1.00x
ExistentialTestArrayShift_IntValueBuffer4 176397 176272 -0.1% 1.00x(?)
ExistentialTestArrayShift_IntValueBuffer3 179506 179542 +0.0% 1.00x(?)
ExistentialTestArrayShift_IntValueBuffer2 178065 178243 +0.1% 1.00x
ExistentialTestArrayShift_IntValueBuffer1 178883 178737 -0.1% 1.00x
ClassArrayGetter 930 930 +0.0% 1.00x
Array2D 614679 614295 -0.1% 1.00x(?)
Histogram 8573 8604 +0.4% 1.00x(?)
ExistentialTestArrayTwoMethodCalls_ClassValueBuffer4 238141 238108 -0.0% 1.00x(?)
ExistentialTestArrayTwoMethodCalls_ClassValueBuffer3 264181 263995 -0.1% 1.00x(?)
ExistentialTestArrayTwoMethodCalls_ClassValueBuffer2 232143 232013 -0.1% 1.00x(?)
ExistentialTestArrayTwoMethodCalls_ClassValueBuffer1 202654 202565 -0.0% 1.00x(?)
DictionaryBridge 2682 2694 +0.5% 1.00x(?)
ProtocolDispatch2 492 492 +0.0% 1.00x
ExistentialTestArrayOneMethodCall_IntValueBuffer4 134047 134096 +0.0% 1.00x(?)
ExistentialTestArrayOneMethodCall_IntValueBuffer0 127715 127868 +0.1% 1.00x(?)
ExistentialTestArrayOneMethodCall_IntValueBuffer1 128242 128425 +0.1% 1.00x(?)
ExistentialTestArrayOneMethodCall_IntValueBuffer2 129011 128491 -0.4% 1.00x(?)
ExistentialTestArrayOneMethodCall_IntValueBuffer3 129005 129117 +0.1% 1.00x(?)
ObjectiveCBridgeFromNSStringForced 2754 2755 +0.0% 1.00x(?)
ArrayAppendAscii 82474 82432 -0.1% 1.00x(?)
DictionarySwap 5450 5471 +0.4% 1.00x(?)
ReversedDictionary 24742 24779 +0.1% 1.00x(?)
ArrayAppendToFromGeneric 655 656 +0.1% 1.00x(?)
ExistentialTestMutatingAndNonMutating_ClassValueBuffer3 807392 809577 +0.3% 1.00x
ExistentialTestMutatingAndNonMutating_ClassValueBuffer2 662162 663778 +0.2% 1.00x
ExistentialTestArrayTwoMethodCalls_IntValueBuffer2 132944 132672 -0.2% 1.00x
ExistentialTestArrayTwoMethodCalls_IntValueBuffer3 133560 133954 +0.3% 1.00x(?)
ExistentialTestArrayTwoMethodCalls_IntValueBuffer0 132282 131929 -0.3% 1.00x(?)
ExistentialTestArrayTwoMethodCalls_IntValueBuffer1 132765 132188 -0.4% 1.00x
Dictionary3OfObjects 2300 2305 +0.2% 1.00x(?)
ExistentialTestArrayConditionalShift_ClassValueBuffer3 428495 428120 -0.1% 1.00x(?)
ExistentialTestArrayConditionalShift_ClassValueBuffer2 384379 383601 -0.2% 1.00x(?)
ExistentialTestArrayConditionalShift_IntValueBuffer0 287137 288241 +0.4% 1.00x(?)
ExistentialTestArrayConditionalShift_ClassValueBuffer4 357835 357769 -0.0% 1.00x(?)
ExistentialTestArrayConditionalShift_IntValueBuffer2 288244 288816 +0.2% 1.00x(?)
RangeAssignment 5577 5589 +0.2% 1.00x(?)
ExistentialTestArrayConditionalShift_IntValueBuffer4 315129 315402 +0.1% 1.00x(?)
ExistentialTestMutatingAndNonMutating_ClassValueBuffer4 677515 675631 -0.3% 1.00x(?)
StrComplexWalk 8550 8573 +0.3% 1.00x(?)
ByteSwap 10 10 +0.0% 1.00x
SuperChars 273994 274347 +0.1% 1.00x(?)
ArrayAppendLazyMap 223747 223512 -0.1% 1.00x(?)
XorLoop 22805 22805 +0.0% 1.00x
ExistentialTestArrayTwoMethodCalls_IntValueBuffer4 141863 141833 -0.0% 1.00x(?)
SetIntersect_OfObjects 11194 11219 +0.2% 1.00x(?)
CharacterLiteralsSmall 1030 1030 +0.0% 1.00x
ExistentialTestArrayConditionalShift_IntValueBuffer1 289055 289680 +0.2% 1.00x
ExistentialTestPassExistentialTwoMethodCalls_ClassValueBuffer1 1334535 1333697 -0.1% 1.00x(?)
ArrayPlusEqualSingleElementCollection 272342 271636 -0.3% 1.00x(?)
ArrayAppendStrings 13714 13709 -0.0% 1.00x(?)
ExistentialTestOneMethodCall_IntValueBuffer1 40919 40920 +0.0% 1.00x(?)
ExistentialTestOneMethodCall_IntValueBuffer2 42435 42430 -0.0% 1.00x(?)
StaticArray 4574 4581 +0.1% 1.00x
ObserverUnappliedMethod 8541 8568 +0.3% 1.00x(?)
SortSortedStrings 1407 1409 +0.1% 1.00x(?)
MapReduceClassShort 51057 50992 -0.1% 1.00x(?)
AnyHashableWithAClass 87483 87188 -0.3% 1.00x(?)
ArrayAppendLatin1 103922 103774 -0.1% 1.00x(?)
CStringLongAscii 17045 17007 -0.2% 1.00x
CharacterLiteralsLarge 14199 14226 +0.2% 1.00x(?)
ExistentialTestArrayConditionalShift_ClassValueBuffer1 343965 343735 -0.1% 1.00x
Dictionary3 1435 1442 +0.5% 1.00x
ExistentialTestArrayMutating_ClassValueBuffer2 122419 122273 -0.1% 1.00x
ExistentialTestArrayMutating_ClassValueBuffer3 122485 122363 -0.1% 1.00x(?)
ExistentialTestArrayMutating_ClassValueBuffer1 122441 122252 -0.1% 1.00x
ErrorHandling 3917 3919 +0.1% 1.00x(?)
ArrayOfRef 8593 8601 +0.1% 1.00x(?)
ExistentialTestArrayMutating_ClassValueBuffer4 123907 123973 +0.1% 1.00x(?)
ObjectiveCBridgeStubURLAppendPathRef 218075 218433 +0.2% 1.00x(?)
ObjectiveCBridgeStubDateMutation 515 515 +0.0% 1.00x
DropLastArray 2124 2131 +0.3% 1.00x
HashTest 6013 6033 +0.3% 1.00x(?)
DictionaryOfObjects 4796 4799 +0.1% 1.00x(?)
ExistentialTestOneMethodCall_ClassValueBuffer2 300053 300054 +0.0% 1.00x(?)
PopFrontUnsafePointer 178326 178318 -0.0% 1.00x(?)
StringEqualPointerComparison 9577 9617 +0.4% 1.00x(?)
ExistentialTestMutating_IntValueBuffer3 230988 230881 -0.1% 1.00x(?)
ExistentialTestMutating_IntValueBuffer2 162445 162566 +0.1% 1.00x(?)
ExistentialTestMutating_IntValueBuffer1 98477 98530 +0.1% 1.00x(?)
MapReduceAnyCollectionShort 47027 46831 -0.4% 1.00x(?)
RC4 7417 7405 -0.2% 1.00x(?)
ExistentialTestMutating_IntValueBuffer4 328002 327977 -0.0% 1.00x(?)
ObjectiveCBridgeStubToNSStringRef 149 149 +0.0% 1.00x
Calculator 1064 1065 +0.1% 1.00x(?)
ArrayAppendFromGeneric 656 657 +0.1% 1.00x(?)
ExistentialTestMutatingAndNonMutating_IntValueBuffer3 289387 289141 -0.1% 1.00x(?)
ExistentialTestMutatingAndNonMutating_IntValueBuffer1 145082 144792 -0.2% 1.00x
ExistentialTestPassExistentialOneMethodCall_IntValueBuffer2 133938 133810 -0.1% 1.00x(?)
ExistentialTestPassExistentialOneMethodCall_IntValueBuffer3 135957 136379 +0.3% 1.00x(?)
MapReduceSequence 41352 41489 +0.3% 1.00x(?)
MapReduceShort 46622 46636 +0.0% 1.00x(?)
ReversedBidirectional 141679 141543 -0.1% 1.00x(?)
DictionaryLiteral 13210 13217 +0.1% 1.00x(?)
Hanoi 16777 16804 +0.2% 1.00x(?)
DictionaryRemoveOfObjects 53026 52854 -0.3% 1.00x(?)
UTF8Decode 37010 36991 -0.1% 1.00x(?)
Join 1346 1347 +0.1% 1.00x(?)
ExistentialTestPassExistentialTwoMethodCalls_ClassValueBuffer3 2201994 2201501 -0.0% 1.00x(?)
ExistentialTestPassExistentialTwoMethodCalls_ClassValueBuffer2 1752763 1748365 -0.2% 1.00x
LazilyFilteredArrays 2716463 2729452 +0.5% 1.00x(?)
ExistentialTestPassExistentialTwoMethodCalls_ClassValueBuffer4 1925434 1927187 +0.1% 1.00x
ArrayPlusEqualArrayOfInt 656 656 +0.0% 1.00x
ExistentialTestArrayShift_ClassValueBuffer4 176391 176293 -0.1% 1.00x(?)
SetUnion_OfObjects 29914 29901 -0.0% 1.00x(?)
ExistentialTestArrayShift_ClassValueBuffer2 178020 178143 +0.1% 1.00x(?)
ExistentialTestArrayShift_ClassValueBuffer3 179534 179445 -0.1% 1.00x(?)
ExistentialTestArrayShift_ClassValueBuffer1 178876 178738 -0.1% 1.00x(?)
NopDeinit 46998 46783 -0.5% 1.00x
CStringShortAscii 9025 9010 -0.2% 1.00x(?)
SuffixArray 2123 2130 +0.3% 1.00x
ExistentialTestMutating_IntValueBuffer0 42687 42487 -0.5% 1.00x(?)
ExistentialTestArrayShift_IntValueBuffer0 178160 177397 -0.4% 1.00x
ExistentialTestMutating_ClassValueBuffer4 244077 244223 +0.1% 1.00x(?)
RGBHistogramOfObjects 85973 85905 -0.1% 1.00x(?)
GlobalClass 0 0 +0.0% 1.00x
ObjectiveCBridgeStubNSDateRefAccess 1209 1209 +0.0% 1.00x
StringBuilder 2850 2850 +0.0% 1.00x
ArrayInClass 4551 4551 +0.0% 1.00x
ArrayOfGenericRef 9971 9932 -0.4% 1.00x(?)
Phonebook 21790 21683 -0.5% 1.00x
PolymorphicCalls 788 788 +0.0% 1.00x
ExistentialTestTwoMethodCalls_IntValueBuffer2 82653 82658 +0.0% 1.00x(?)
ExistentialTestTwoMethodCalls_IntValueBuffer3 92327 92280 -0.1% 1.00x(?)
PopFrontArray 10866 10884 +0.2% 1.00x(?)
ExistentialTestTwoMethodCalls_IntValueBuffer1 72779 72786 +0.0% 1.00x(?)
ExistentialTestTwoMethodCalls_ClassValueBuffer3 866702 865350 -0.2% 1.00x
MapReduceShortString 237 236 -0.4% 1.00x(?)
ExistentialTestTwoMethodCalls_ClassValueBuffer1 554856 555230 +0.1% 1.00x
MonteCarloPi 53649 53636 -0.0% 1.00x(?)
ExistentialTestTwoMethodCalls_ClassValueBuffer4 880854 880633 -0.0% 1.00x(?)
ExistentialTestArrayOneMethodCall_ClassValueBuffer4 175841 175807 -0.0% 1.00x(?)
ExistentialTestArrayOneMethodCall_ClassValueBuffer1 159803 159753 -0.0% 1.00x(?)
ExistentialTestArrayOneMethodCall_ClassValueBuffer3 203003 202774 -0.1% 1.00x(?)
ExistentialTestArrayOneMethodCall_ClassValueBuffer2 178667 178439 -0.1% 1.00x(?)
ExistentialTestArrayMutating_IntValueBuffer4 130935 130870 -0.1% 1.00x(?)
ExistentialTestArrayMutating_IntValueBuffer2 111088 110957 -0.1% 1.00x
ExistentialTestArrayMutating_IntValueBuffer1 105786 105588 -0.2% 1.00x
ExistentialTestArrayMutating_IntValueBuffer0 100972 100824 -0.1% 1.00x(?)
ArrayAppendToGeneric 657 657 +0.0% 1.00x
Walsh 11908 11901 -0.1% 1.00x(?)
SetIsSubsetOf_OfObjects 1599 1601 +0.1% 1.00x(?)
LinkedList 33249 33235 -0.0% 1.00x(?)
ReversedArray 588 588 +0.0% 1.00x
ExistentialTestMutatingAndNonMutating_IntValueBuffer2 212365 212339 -0.0% 1.00x(?)
MapReduceAnyCollection 36360 36262 -0.3% 1.00x
ObjectiveCBridgeStubToNSString 1547 1542 -0.3% 1.00x(?)
StringEdits 872197 868925 -0.4% 1.00x(?)
ExistentialTestPassExistentialTwoMethodCalls_IntValueBuffer3 239008 238655 -0.1% 1.00x(?)
ExistentialTestTwoMethodCalls_ClassValueBuffer2 703278 703447 +0.0% 1.00x(?)
ArrayAppendArrayOfInt 653 654 +0.1% 1.00x(?)
ObjectiveCBridgeStubFromNSStringRef 209 210 +0.5% 1.00x(?)
ExistentialTestPassExistentialOneMethodCall_ClassValueBuffer4 932314 932355 +0.0% 1.00x(?)
ExistentialTestPassExistentialOneMethodCall_ClassValueBuffer3 1251981 1249660 -0.2% 1.00x
ExistentialTestPassExistentialOneMethodCall_ClassValueBuffer2 942655 942113 -0.1% 1.00x
ExistentialTestPassExistentialOneMethodCall_ClassValueBuffer1 662816 663347 +0.1% 1.00x(?)
ObjectiveCBridgeStubFromNSDateRef 3910 3904 -0.1% 1.00x
ObserverForwarderStruct 4767 4773 +0.1% 1.00x(?)
MonteCarloE 82939 82906 -0.0% 1.00x(?)
BitCount 102 102 +0.0% 1.00x
ExistentialTestOneMethodCall_ClassValueBuffer4 368203 368343 +0.0% 1.00x(?)
SevenBoom 1597 1600 +0.2% 1.00x(?)
ExistentialTestOneMethodCall_ClassValueBuffer1 220100 220067 -0.0% 1.00x(?)
ExistentialTestOneMethodCall_ClassValueBuffer3 375812 375803 -0.0% 1.00x(?)
ExistentialTestArrayConditionalShift_IntValueBuffer3 289476 289924 +0.1% 1.00x(?)
DropLastCountableRange 143 143 +0.0% 1.00x
SuffixSequence 40615 40752 +0.3% 1.00x(?)
ArrayOfPOD 1832 1832 +0.0% 1.00x
ArrayValueProp4 3331 3325 -0.2% 1.00x(?)
ArrayValueProp 2981 2970 -0.4% 1.00x
ExistentialTestPassExistentialOneMethodCall_IntValueBuffer0 134013 133792 -0.2% 1.00x(?)
ExistentialTestPassExistentialTwoMethodCalls_IntValueBuffer4 389365 390036 +0.2% 1.00x(?)
Memset 44845 44838 -0.0% 1.00x(?)
ExistentialTestPassExistentialTwoMethodCalls_IntValueBuffer0 202372 201766 -0.3% 1.00x(?)
ExistentialTestPassExistentialTwoMethodCalls_IntValueBuffer1 196744 196507 -0.1% 1.00x(?)
ExistentialTestPassExistentialTwoMethodCalls_IntValueBuffer2 219257 219238 -0.0% 1.00x(?)
Dictionary2OfObjects 6200 6212 +0.2% 1.00x(?)
ObjectiveCBridgeStubDateAccess 1047 1049 +0.2% 1.00x(?)
ArrayValueProp2 3776 3768 -0.2% 1.00x(?)
ArrayValueProp3 3383 3383 +0.0% 1.00x
Sim2DArray 29622 29624 +0.0% 1.00x(?)
ObserverPartiallyAppliedMethod 8252 8234 -0.2% 1.00x(?)
ExistentialTestTwoMethodCalls_IntValueBuffer4 109357 109389 +0.0% 1.00x(?)
ObjectiveCBridgeFromNSDictionaryAnyObject 120864 122383 +1.3% 0.99x(?)
DropLastAnySequence 6383 6471 +1.4% 0.99x(?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 45865 46264 +0.9% 0.99x(?)
Prims 8886 8984 +1.1% 0.99x(?)
MapReduceLazyCollectionShort 43165 43743 +1.3% 0.99x
ArrayAppendGenericStructs 1285 1295 +0.8% 0.99x(?)
ObjectiveCBridgeStubToNSDate 15471 15701 +1.5% 0.99x(?)
StringInterpolation 14687 14799 +0.8% 0.99x(?)
LazilyFilteredRange 1271069 1277760 +0.5% 0.99x(?)
ObjectiveCBridgeFromNSSetAnyObject 67193 67552 +0.5% 0.99x(?)
StringBuilderLong 1136 1153 +1.5% 0.99x
Dictionary2 3819 3845 +0.7% 0.99x(?)
StringHasPrefix 1596 1610 +0.9% 0.99x(?)
ObjectiveCBridgeToNSArray 28404 28764 +1.3% 0.99x(?)
NSError 711 719 +1.1% 0.99x(?)
SuffixAnySequence 6400 6480 +1.2% 0.99x(?)
MapReduceLazySequence 27086 27425 +1.2% 0.99x
Dictionary 1826 1840 +0.8% 0.99x
ExistentialTestMutating_ClassValueBuffer2 219416 220979 +0.7% 0.99x
ExistentialTestMutating_ClassValueBuffer3 220964 223231 +1.0% 0.99x(?)
ExistentialTestMutating_ClassValueBuffer1 220924 223271 +1.1% 0.99x(?)
NSDictionaryCastToSwift 6387 6423 +0.6% 0.99x(?)
StringHasSuffixUnicode 62362 63181 +1.3% 0.99x
DictionaryRemove 18782 19065 +1.5% 0.99x(?)
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 75412 76384 +1.3% 0.99x(?)
MapReduceLazyCollection 32590 33043 +1.4% 0.99x
Chars 7970 8073 +1.3% 0.99x
RGBHistogram 31695 31926 +0.7% 0.99x
DeadArray 123625 125082 +1.2% 0.99x(?)
AngryPhonebook 3186 3213 +0.8% 0.99x(?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 42189 42569 +0.9% 0.99x(?)
StringWalk 21225 21484 +1.2% 0.99x
ObjectiveCBridgeFromNSString 4033 4077 +1.1% 0.99x
TwoSum 4677 4706 +0.6% 0.99x(?)
ObjectiveCBridgeStubFromNSDate 3788 3814 +0.7% 0.99x(?)
PopFrontArrayGeneric 8097 8235 +1.7% 0.98x
IterateData 11170 11361 +1.7% 0.98x(?)
ObjectiveCBridgeStubURLAppendPath 216710 220976 +2.0% 0.98x(?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 100641 102546 +1.9% 0.98x(?)
StringHasSuffix 1545 1577 +2.1% 0.98x
ObjectiveCBridgeToNSDictionary 59061 59990 +1.6% 0.98x(?)
StringHasPrefixUnicode 15806 16100 +1.9% 0.98x
ArrayAppendSequence 72223 73375 +1.6% 0.98x(?)
ExistentialTestOneMethodCall_IntValueBuffer0 42409 43938 +3.6% 0.97x
ExistentialTestOneMethodCall_IntValueBuffer3 42313 43471 +2.7% 0.97x(?)
ArrayAppend 3688 3796 +2.9% 0.97x
ExistentialTestPassExistentialOneMethodCall_IntValueBuffer4 274935 284803 +3.6% 0.97x
ObjectiveCBridgeStubToArrayOfNSString 27964 28823 +3.1% 0.97x(?)
ArrayAppendReserved 3311 3429 +3.6% 0.97x
ExistentialTestMutatingAndNonMutating_ClassValueBuffer1 504461 527163 +4.5% 0.96x(?)
ObjectiveCBridgeToNSSet 36628 38097 +4.0% 0.96x(?)
NSStringConversion 1287 1335 +3.7% 0.96x
ArrayOfGenericPOD 3077 3247 +5.5% 0.95x
ObjectiveCBridgeStubDataAppend 3862 4074 +5.5% 0.95x
**Hardware Overview** Model Name: Mac mini Model Identifier: Macmini7,1 Processor Name: Intel Core i5 Processor Speed: 2.8 GHz Number of Processors: 1 Total Number of Cores: 2 L2 Cache (per Core): 256 KB L3 Cache: 3 MB Memory: 16 GB

@jrose-apple
Copy link
Contributor

Wow, those are some amazing wins and confusing losses.

@slavapestov
Copy link
Contributor Author

I don't understand the results. There wasn't supposed to be a change.

@slavapestov
Copy link
Contributor Author

@swift-ci Please benchmark

@jrose-apple
Copy link
Contributor

Cost of interposable symbols, perhaps? Some things might be direct jumps instead of indirect now. But I don't know how things could get worse.

@swift-ci
Copy link
Contributor

Build comment file:

Optimized (O)

Regression (5)
TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
ExistentialTestTwoMethodCalls_ClassValueBuffer4 33754 39151 +16.0% 0.86x
ObjectiveCBridgeStubFromNSString 932 1071 +14.9% 0.87x
ExistentialTestArrayShift_IntValueBuffer2 3505 3882 +10.8% 0.90x
ExistentialTestArrayShift_ClassValueBuffer2 3501 3882 +10.9% 0.90x
ExistentialTestOneMethodCall_ClassValueBuffer4 16686 18185 +9.0% 0.92x
Improvement (42)
TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
ExistentialTestArrayShift_IntValueBuffer4 3504 3312 -5.5% 1.06x
ExistentialTestArrayShift_IntValueBuffer1 3502 3311 -5.5% 1.06x
ExistentialTestArrayShift_IntValueBuffer0 3497 3311 -5.3% 1.06x
StringMatch 37209 34992 -6.0% 1.06x
ExistentialTestPassExistentialOneMethodCall_IntValueBuffer0 74955 70471 -6.0% 1.06x
ExistentialTestArrayShift_ClassValueBuffer4 3503 3309 -5.5% 1.06x
ExistentialTestArrayShift_ClassValueBuffer1 3503 3309 -5.5% 1.06x
ExistentialTestMutating_ClassValueBuffer2 19199 18188 -5.3% 1.06x
ExistentialTestMutating_ClassValueBuffer1 19199 18192 -5.2% 1.06x
ExistentialTestTwoMethodCalls_IntValueBuffer3 28792 27278 -5.3% 1.06x
ExistentialTestMutating_ClassValueBuffer3 19200 18187 -5.3% 1.06x
ExistentialTestPassExistentialTwoMethodCalls_IntValueBuffer3 103090 96987 -5.9% 1.06x
ExistentialTestArrayOneMethodCall_IntValueBuffer0 5527 5146 -6.9% 1.07x
DropLastArray 32 30 -6.2% 1.07x
NopDeinit 22911 21371 -6.7% 1.07x
ExistentialTestArrayShift_IntValueBuffer3 4076 3728 -8.5% 1.09x
ExistentialTestArrayOneMethodCall_IntValueBuffer1 5612 5149 -8.2% 1.09x
ExistentialTestArrayTwoMethodCalls_IntValueBuffer1 7476 6863 -8.2% 1.09x
ExistentialTestArrayShift_ClassValueBuffer3 4076 3723 -8.7% 1.09x
CStringLongAscii 16470 15159 -8.0% 1.09x
ObjectiveCBridgeStubNSDateRefAccess 344 317 -7.8% 1.09x
ExistentialTestArrayTwoMethodCalls_IntValueBuffer3 7856 7112 -9.5% 1.10x
ExistentialTestMutatingAndNonMutating_IntValueBuffer2 50010 45466 -9.1% 1.10x
ExistentialTestPassExistentialTwoMethodCalls_IntValueBuffer1 100025 91057 -9.0% 1.10x
ExistentialTestOneMethodCall_IntValueBuffer2 15209 13657 -10.2% 1.11x
ExistentialTestMutatingAndNonMutating_IntValueBuffer0 46981 42431 -9.7% 1.11x
ExistentialTestMutating_IntValueBuffer0 15155 13638 -10.0% 1.11x
ExistentialTestOneMethodCall_IntValueBuffer3 15206 13639 -10.3% 1.11x
ExistentialTestOneMethodCall_IntValueBuffer1 15219 13638 -10.4% 1.12x
OpenClose 54 48 -11.1% 1.12x
ExistentialTestMutating_ClassValueBuffer4 45531 40615 -10.8% 1.12x
ExistentialTestArrayOneMethodCall_IntValueBuffer3 5907 5244 -11.2% 1.13x
ExistentialTestPassExistentialOneMethodCall_IntValueBuffer3 80088 71064 -11.3% 1.13x
ExistentialTestMutatingAndNonMutating_IntValueBuffer3 53041 47022 -11.3% 1.13x
ExistentialTestMutatingAndNonMutating_IntValueBuffer1 48492 42430 -12.5% 1.14x
ExistentialTestOneMethodCall_IntValueBuffer0 15891 13639 -14.2% 1.17x
ExistentialTestTwoMethodCalls_ClassValueBuffer3 31823 27277 -14.3% 1.17x
ExistentialTestTwoMethodCalls_ClassValueBuffer1 31825 27278 -14.3% 1.17x
ExistentialTestTwoMethodCalls_IntValueBuffer1 30725 25821 -16.0% 1.19x
ExistentialTestOneMethodCall_ClassValueBuffer1 16670 13639 -18.2% 1.22x
ExistentialTestOneMethodCall_ClassValueBuffer3 16670 13639 -18.2% 1.22x
ProtocolDispatch 3030 2424 -20.0% 1.25x
No Changes (244)
TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
ExistentialTestArrayTwoMethodCalls_IntValueBuffer0 7479 7094 -5.2% 1.05x
ObjectiveCBridgeStubFromNSDateRef 3795 3631 -4.3% 1.05x
PolymorphicCalls 22 21 -4.5% 1.05x
StringHasSuffix 712 677 -4.9% 1.05x(?)
ExistentialTestTwoMethodCalls_IntValueBuffer2 28793 27446 -4.7% 1.05x
ExistentialTestPassExistentialOneMethodCall_IntValueBuffer1 73915 71264 -3.6% 1.04x
ProtocolDispatch2 168 161 -4.2% 1.04x
ExistentialTestTwoMethodCalls_IntValueBuffer0 29566 28342 -4.1% 1.04x
ExistentialTestPassExistentialTwoMethodCalls_IntValueBuffer0 100021 96055 -4.0% 1.04x
ExistentialTestPassExistentialTwoMethodCalls_IntValueBuffer4 251560 244556 -2.8% 1.03x
IterateData 2752 2663 -3.2% 1.03x
ObjectiveCBridgeToNSDictionary 60512 58680 -3.0% 1.03x(?)
ObserverForwarderStruct 1143 1109 -3.0% 1.03x
SuffixArray 31 30 -3.2% 1.03x
SetIntersect_OfObjects 1734 1705 -1.7% 1.02x(?)
Join 489 478 -2.2% 1.02x
ExistentialTestMutating_IntValueBuffer2 18725 18417 -1.6% 1.02x
ExistentialTestPassExistentialOneMethodCall_IntValueBuffer2 75760 74042 -2.3% 1.02x
DictionaryRemove 3150 3102 -1.5% 1.02x(?)
ArrayAppendSequence 996 976 -2.0% 1.02x
ObjectiveCBridgeStubNSDataAppend 2289 2255 -1.5% 1.02x(?)
Phonebook 7447 7295 -2.0% 1.02x(?)
ObserverUnappliedMethod 2715 2700 -0.6% 1.01x(?)
SetExclusiveOr_OfObjects 7943 7865 -1.0% 1.01x(?)
ExistentialTestMutatingAndNonMutating_ClassValueBuffer3 281864 280340 -0.5% 1.01x
ExistentialTestMutatingAndNonMutating_ClassValueBuffer2 204582 203052 -0.8% 1.01x
DictionarySwapOfObjects 6927 6853 -1.1% 1.01x(?)
StringInterpolation 9337 9268 -0.7% 1.01x(?)
AnyHashableWithAClass 68202 67312 -1.3% 1.01x(?)
Dictionary3 596 592 -0.7% 1.01x(?)
PopFrontUnsafePointer 9135 9087 -0.5% 1.01x
ExistentialTestMutating_IntValueBuffer3 21590 21310 -1.3% 1.01x
DictionaryRemoveOfObjects 22439 22257 -0.8% 1.01x(?)
ExistentialTestPassExistentialTwoMethodCalls_ClassValueBuffer1 253568 250042 -1.4% 1.01x
NSDictionaryCastToSwift 5333 5295 -0.7% 1.01x(?)
StrToInt 6235 6150 -1.4% 1.01x
290 16673676 16551845 -0.7% 1.01x
DeadArray 183 181 -1.1% 1.01x
ObjectiveCBridgeStubFromArrayOfNSString 31562 31236 -1.0% 1.01x(?)
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 72201 71287 -1.3% 1.01x(?)
DropLastSequence 4638 4630 -0.2% 1.00x(?)
ArraySubscript 1520 1524 +0.3% 1.00x(?)
ObjectiveCBridgeToNSString 1270 1275 +0.4% 1.00x(?)
MonteCarloPi 45004 44849 -0.3% 1.00x
MapReduceShortString 18 18 +0.0% 1.00x
StackPromo 22480 22469 -0.1% 1.00x(?)
PopFrontArray 1118 1116 -0.2% 1.00x(?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 100582 101023 +0.4% 1.00x(?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 44865 44748 -0.3% 1.00x(?)
ClassArrayGetter 13 13 +0.0% 1.00x
Array2D 2036 2039 +0.1% 1.00x(?)
Histogram 243 242 -0.4% 1.00x
ExistentialTestArrayTwoMethodCalls_ClassValueBuffer4 16231 16171 -0.4% 1.00x(?)
ExistentialTestArrayTwoMethodCalls_ClassValueBuffer3 36537 36525 -0.0% 1.00x(?)
ExistentialTestArrayTwoMethodCalls_ClassValueBuffer1 17169 17174 +0.0% 1.00x(?)
DictionaryBridge 2621 2630 +0.3% 1.00x(?)
StringEdits 517941 518954 +0.2% 1.00x(?)
ExistentialTestArrayOneMethodCall_IntValueBuffer4 14369 14377 +0.1% 1.00x(?)
ArrayAppendAscii 19925 19923 -0.0% 1.00x(?)
ExistentialTestMutatingAndNonMutating_ClassValueBuffer1 121237 121225 -0.0% 1.00x(?)
StringWithCString 329389 329377 -0.0% 1.00x(?)
SortLettersInPlace 1147 1144 -0.3% 1.00x(?)
DictionarySwap 372 372 +0.0% 1.00x
ReversedDictionary 125 125 +0.0% 1.00x
ArrayAppendToFromGeneric 596 595 -0.2% 1.00x(?)
ObjectiveCBridgeFromNSDictionaryAnyObject 119397 119258 -0.1% 1.00x(?)
ExistentialTestArrayTwoMethodCalls_IntValueBuffer4 15972 15928 -0.3% 1.00x(?)
ExistentialTestArrayTwoMethodCalls_IntValueBuffer2 7474 7483 +0.1% 1.00x(?)
MonteCarloE 10631 10621 -0.1% 1.00x(?)
ExistentialTestMutatingAndNonMutating_ClassValueBuffer4 142450 142453 +0.0% 1.00x(?)
Dictionary3OfObjects 1054 1051 -0.3% 1.00x(?)
ExistentialTestArrayConditionalShift_ClassValueBuffer2 90705 90717 +0.0% 1.00x(?)
ExistentialTestArrayConditionalShift_IntValueBuffer0 30707 30769 +0.2% 1.00x(?)
ExistentialTestArrayConditionalShift_IntValueBuffer1 30808 30913 +0.3% 1.00x
ExistentialTestArrayConditionalShift_IntValueBuffer2 31615 31571 -0.1% 1.00x(?)
ExistentialTestArrayConditionalShift_IntValueBuffer3 32314 32454 +0.4% 1.00x(?)
ExistentialTestArrayConditionalShift_IntValueBuffer4 60161 60205 +0.1% 1.00x(?)
MapReduceLazyCollectionShort 44 44 +0.0% 1.00x
StringHasPrefix 608 608 +0.0% 1.00x
ByteSwap 0 0 +0.0% 1.00x
ArrayAppendGenericStructs 1223 1218 -0.4% 1.00x(?)
SuperChars 251457 251160 -0.1% 1.00x(?)
ArrayAppendLazyMap 914 912 -0.2% 1.00x(?)
ArrayPlusEqualFiveElementCollection 51592 51842 +0.5% 1.00x(?)
XorLoop 353 353 +0.0% 1.00x
SortStringsUnicode 7581 7596 +0.2% 1.00x(?)
ObserverClosure 2216 2210 -0.3% 1.00x(?)
CharacterLiteralsSmall 804 804 +0.0% 1.00x
LazilyFilteredRange 7752 7753 +0.0% 1.00x(?)
ExistentialTestArrayConditionalShift_ClassValueBuffer4 61460 61493 +0.1% 1.00x(?)
ObjectiveCBridgeStubToNSString 1510 1511 +0.1% 1.00x(?)
ArrayAppendStrings 13616 13551 -0.5% 1.00x(?)
ExistentialTestOneMethodCall_IntValueBuffer4 16691 16669 -0.1% 1.00x(?)
StaticArray 156 156 +0.0% 1.00x
ObjectAllocation 179 179 +0.0% 1.00x
TypeFlood 0 0 +0.0% 1.00x
SortSortedStrings 836 838 +0.2% 1.00x(?)
StringHasSuffixUnicode 60916 61187 +0.4% 1.00x(?)
ObjectiveCBridgeFromNSSetAnyObject 64053 64061 +0.0% 1.00x(?)
AngryPhonebook 2891 2894 +0.1% 1.00x(?)
CharacterLiteralsLarge 12282 12222 -0.5% 1.00x(?)
ExistentialTestArrayConditionalShift_ClassValueBuffer1 60824 60833 +0.0% 1.00x(?)
StringBuilderLong 938 940 +0.2% 1.00x(?)
Dictionary2 2127 2123 -0.2% 1.00x(?)
StrComplexWalk 2872 2878 +0.2% 1.00x(?)
ExistentialTestArrayMutating_ClassValueBuffer2 14180 14189 +0.1% 1.00x(?)
ExistentialTestArrayMutating_ClassValueBuffer3 14180 14193 +0.1% 1.00x(?)
ExistentialTestArrayMutating_ClassValueBuffer1 14180 14187 +0.1% 1.00x(?)
ArrayOfRef 3866 3863 -0.1% 1.00x(?)
ExistentialTestArrayMutating_ClassValueBuffer4 16912 16902 -0.1% 1.00x(?)
ArrayAppend 775 774 -0.1% 1.00x(?)
ObjectiveCBridgeStubDateMutation 272 272 +0.0% 1.00x
NSError 346 347 +0.3% 1.00x(?)
HashTest 1737 1730 -0.4% 1.00x(?)
DictionaryOfObjects 2570 2560 -0.4% 1.00x(?)
ObjectiveCBridgeStubToNSDateRef 3397 3396 -0.0% 1.00x(?)
PopFrontArrayGeneric 1112 1115 +0.3% 1.00x(?)
StringEqualPointerComparison 7246 7274 +0.4% 1.00x(?)
CaptureProp 4599 4611 +0.3% 1.00x(?)
MapReduceAnyCollectionShort 2170 2173 +0.1% 1.00x(?)
StringAdder 0 0 +0.0% 1.00x
Calculator 34 34 +0.0% 1.00x
ArrayAppendFromGeneric 596 595 -0.2% 1.00x(?)
ArrayAppendOptionals 1220 1223 +0.2% 1.00x(?)
ExistentialTestArrayConditionalShift_ClassValueBuffer3 121033 121044 +0.0% 1.00x(?)
MapReduceShort 1937 1935 -0.1% 1.00x(?)
ExistentialTestPassExistentialOneMethodCall_IntValueBuffer4 224278 224276 -0.0% 1.00x(?)
DictionaryLiteral 1468 1468 +0.0% 1.00x
ArrayOfGenericPOD 219 219 +0.0% 1.00x
UTF8Decode 273 273 +0.0% 1.00x
MapReduceLazySequence 90 90 +0.0% 1.00x
ExistentialTestPassExistentialTwoMethodCalls_ClassValueBuffer3 550960 548568 -0.4% 1.00x(?)
LazilyFilteredArrays 71289 71228 -0.1% 1.00x(?)
ExistentialTestPassExistentialTwoMethodCalls_ClassValueBuffer4 244063 243991 -0.0% 1.00x(?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 98153 98633 +0.5% 1.00x(?)
SetUnion_OfObjects 6380 6354 -0.4% 1.00x(?)
SetIsSubsetOf 288 288 +0.0% 1.00x
CStringShortAscii 6283 6267 -0.2% 1.00x(?)
ObjectiveCBridgeFromNSArrayAnyObject 23755 23693 -0.3% 1.00x(?)
ObjectiveCBridgeStubDataAppend 3677 3688 +0.3% 1.00x(?)
MapReduceClassShort 4541 4537 -0.1% 1.00x(?)
ExistentialTestArrayTwoMethodCalls_ClassValueBuffer2 26690 26683 -0.0% 1.00x(?)
ObjectiveCBridgeFromNSSetAnyObjectToString 80566 80561 -0.0% 1.00x(?)
StringBuilder 1359 1358 -0.1% 1.00x(?)
ExistentialTestMutating_IntValueBuffer1 16671 16630 -0.2% 1.00x(?)
ArrayInClass 61 61 +0.0% 1.00x
ArrayOfGenericRef 3988 3995 +0.2% 1.00x(?)
ObjectiveCBridgeFromNSString 1443 1442 -0.1% 1.00x(?)
ExistentialTestTwoMethodCalls_IntValueBuffer4 35781 35820 +0.1% 1.00x(?)
ObjectiveCBridgeStubDateAccess 181 181 +0.0% 1.00x
Sim2DArray 276 276 +0.0% 1.00x
SetExclusiveOr 2592 2594 +0.1% 1.00x(?)
ArrayAppendRepeatCol 837 836 -0.1% 1.00x(?)
ExistentialTestArrayOneMethodCall_ClassValueBuffer4 14573 14554 -0.1% 1.00x(?)
ExistentialTestArrayOneMethodCall_ClassValueBuffer1 14659 14663 +0.0% 1.00x(?)
ExistentialTestArrayOneMethodCall_ClassValueBuffer3 35016 35015 -0.0% 1.00x(?)
ExistentialTestArrayOneMethodCall_ClassValueBuffer2 24938 24937 -0.0% 1.00x(?)
ExistentialTestArrayMutating_IntValueBuffer4 18259 18258 -0.0% 1.00x(?)
ExistentialTestArrayMutating_IntValueBuffer3 15723 15721 -0.0% 1.00x(?)
ExistentialTestArrayMutating_IntValueBuffer2 14185 14186 +0.0% 1.00x(?)
ExistentialTestArrayMutating_IntValueBuffer1 14753 14753 +0.0% 1.00x
ExistentialTestArrayMutating_IntValueBuffer0 14564 14565 +0.0% 1.00x(?)
GlobalClass 0 0 +0.0% 1.00x
ArrayAppendToGeneric 596 596 +0.0% 1.00x
Walsh 357 356 -0.3% 1.00x(?)
SetIsSubsetOf_OfObjects 360 359 -0.3% 1.00x(?)
HashQuadratic 6288123 6287991 -0.0% 1.00x(?)
ExistentialTestMutatingAndNonMutating_IntValueBuffer4 155758 155833 +0.1% 1.00x(?)
ArrayAppendReserved 533 533 +0.0% 1.00x
LinkedList 7107 7101 -0.1% 1.00x(?)
SuffixCountableRange 28 28 +0.0% 1.00x
MapReduceAnyCollection 302 302 +0.0% 1.00x
MapReduce 342 343 +0.3% 1.00x(?)
ReversedBidirectional 49869 50029 +0.3% 1.00x(?)
RGBHistogramOfObjects 24031 23955 -0.3% 1.00x(?)
MapReduceLazyCollection 15 15 +0.0% 1.00x
ObjectiveCBridgeFromNSSetAnyObjectForced 4216 4234 +0.4% 1.00x(?)
ArrayAppendArrayOfInt 595 595 +0.0% 1.00x
ObjectiveCBridgeStubFromNSStringRef 180 180 +0.0% 1.00x
Chars 1459 1465 +0.4% 1.00x(?)
ExistentialTestPassExistentialOneMethodCall_ClassValueBuffer4 216697 216616 -0.0% 1.00x(?)
ExistentialTestPassExistentialOneMethodCall_ClassValueBuffer3 534700 534704 +0.0% 1.00x(?)
ExistentialTestPassExistentialOneMethodCall_ClassValueBuffer2 365553 365728 +0.1% 1.00x(?)
ExistentialTestPassExistentialOneMethodCall_ClassValueBuffer1 225146 225145 -0.0% 1.00x(?)
RGBHistogram 2657 2645 -0.5% 1.00x(?)
ReversedArray 49 49 +0.0% 1.00x
CStringLongNonAscii 4354 4340 -0.3% 1.00x(?)
BitCount 1 1 +0.0% 1.00x
ArrayPlusEqualArrayOfInt 595 595 +0.0% 1.00x
SevenBoom 1457 1461 +0.3% 1.00x(?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 41306 41219 -0.2% 1.00x(?)
ExistentialTestOneMethodCall_ClassValueBuffer2 15155 15154 -0.0% 1.00x(?)
DropLastCountableRange 28 28 +0.0% 1.00x
SuffixSequence 4961 4954 -0.1% 1.00x(?)
ArrayOfPOD 166 166 +0.0% 1.00x
StringWalk 5834 5834 +0.0% 1.00x
ArrayValueProp 6 6 +0.0% 1.00x
MapReduceClass 3087 3089 +0.1% 1.00x(?)
Memset 234 234 +0.0% 1.00x
ExistentialTestPassExistentialTwoMethodCalls_IntValueBuffer2 100373 99933 -0.4% 1.00x(?)
Dictionary2OfObjects 3647 3632 -0.4% 1.00x(?)
ArrayValueProp4 6 6 +0.0% 1.00x
TwoSum 1251 1252 +0.1% 1.00x(?)
ArrayValueProp2 6 6 +0.0% 1.00x
ArrayValueProp3 6 6 +0.0% 1.00x
ObserverPartiallyAppliedMethod 3759 3762 +0.1% 1.00x(?)
RecursiveOwnedParameter 2323 2340 +0.7% 0.99x
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 5012 5057 +0.9% 0.99x(?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 4530 4568 +0.8% 0.99x(?)
ObjectiveCBridgeFromNSStringForced 2391 2409 +0.8% 0.99x(?)
StringUTF16Builder 2192 2210 +0.8% 0.99x(?)
ArrayPlusEqualSingleElementCollection 48967 49302 +0.7% 0.99x(?)
ErrorHandling 2887 2906 +0.7% 0.99x(?)
ObjectiveCBridgeStubURLAppendPathRef 212877 214802 +0.9% 0.99x(?)
ExistentialTestMutating_IntValueBuffer4 51557 52300 +1.4% 0.99x
ObjectiveCBridgeStubToNSStringRef 109 110 +0.9% 0.99x(?)
ArrayAppendUTF16 41484 41848 +0.9% 0.99x(?)
Hanoi 3381 3425 +1.3% 0.99x(?)
Dictionary 797 803 +0.8% 0.99x(?)
ObjectiveCBridgeStubToArrayOfNSString 27863 28266 +1.4% 0.99x(?)
SetIntersect 328 332 +1.2% 0.99x(?)
NSStringConversion 764 772 +1.1% 0.99x(?)
SetUnion 2114 2134 +0.9% 0.99x(?)
ArrayLiteral 1207 1214 +0.6% 0.99x(?)
RC4 156 158 +1.3% 0.99x
DropLastAnySequence 6334 6467 +2.1% 0.98x
SortStrings 1653 1694 +2.5% 0.98x
ExistentialTestArrayOneMethodCall_IntValueBuffer2 5528 5621 +1.7% 0.98x
ObjectiveCBridgeStubToNSDate 14292 14543 +1.8% 0.98x(?)
RangeAssignment 304 310 +2.0% 0.98x(?)
ArrayAppendLatin1 44619 45498 +2.0% 0.98x(?)
ObjectiveCBridgeStubURLAppendPath 210761 214328 +1.7% 0.98x(?)
SuffixAnySequence 6338 6480 +2.2% 0.98x
ExistentialTestPassExistentialTwoMethodCalls_ClassValueBuffer2 369035 376835 +2.1% 0.98x
ObjectiveCBridgeToNSSet 36491 37369 +2.4% 0.98x(?)
ObjectiveCBridgeStubNSDateMutationRef 12428 12716 +2.3% 0.98x(?)
ObjectiveCBridgeStubFromNSDate 3559 3639 +2.2% 0.98x
Prims 762 783 +2.8% 0.97x(?)
MapReduceString 73 75 +2.7% 0.97x
ObjectiveCBridgeToNSArray 27749 28497 +2.7% 0.97x(?)
ExistentialTestTwoMethodCalls_ClassValueBuffer2 30308 31153 +2.8% 0.97x
Integrate 262 273 +4.2% 0.96x(?)
MapReduceSequence 528 552 +4.5% 0.96x
StringHasPrefixUnicode 13914 14421 +3.6% 0.96x
**Unoptimized (Onone)**
Regression (1)
TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
ObjectiveCBridgeStubFromNSString 958 1101 +14.9% 0.87x
Improvement (0)
No Changes (290)
TEST OLD_MIN NEW_MIN DELTA (%) SPEEDUP
HashQuadratic 52369774 50092005 -4.3% 1.05x
ExistentialTestOneMethodCall_IntValueBuffer3 43289 41301 -4.6% 1.05x(?)
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 7633 7351 -3.7% 1.04x(?)
ObjectiveCBridgeStubToNSDate 15680 15289 -2.5% 1.03x(?)
AnyHashableWithAClass 87470 84912 -2.9% 1.03x(?)
ObjectiveCBridgeStubNSDateMutationRef 15749 15361 -2.5% 1.03x(?)
ObjectiveCBridgeFromNSArrayAnyObject 26057 25342 -2.7% 1.03x(?)
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 77490 75216 -2.9% 1.03x(?)
RC4 7623 7447 -2.3% 1.02x
ArrayAppendGenericStructs 1319 1295 -1.8% 1.02x(?)
StringAdder 51 50 -2.0% 1.02x
SortStrings 2704 2640 -2.4% 1.02x
290 96394911 94125292 -2.4% 1.02x
ObjectiveCBridgeToNSDictionary 60458 59516 -1.6% 1.02x(?)
ErrorHandling 3949 3890 -1.5% 1.02x(?)
ObjectiveCBridgeStubNSDataAppend 2684 2644 -1.5% 1.02x(?)
MapReduceShortString 237 234 -1.3% 1.01x(?)
ExistentialTestOneMethodCall_ClassValueBuffer4 370418 368194 -0.6% 1.01x(?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 46066 45822 -0.5% 1.01x(?)
Array2D 614694 609566 -0.8% 1.01x(?)
MapReduceString 2252 2233 -0.8% 1.01x
StringWithCString 343590 341851 -0.5% 1.01x
ProtocolDispatch 7109 7022 -1.2% 1.01x(?)
MapReduce 36461 36278 -0.5% 1.01x(?)
SetIsSubsetOf 1639 1628 -0.7% 1.01x
ExistentialTestArrayTwoMethodCalls_IntValueBuffer1 132823 132156 -0.5% 1.01x
ExistentialTestPassExistentialOneMethodCall_IntValueBuffer4 275563 273852 -0.6% 1.01x(?)
ArrayAppendUTF16 103911 103244 -0.6% 1.01x
SetIntersect 10878 10760 -1.1% 1.01x
SortStringsUnicode 8795 8731 -0.7% 1.01x
CaptureProp 103225 101889 -1.3% 1.01x
SetExclusiveOr 20945 20682 -1.3% 1.01x(?)
ExistentialTestMutatingAndNonMutating_IntValueBuffer4 419286 416365 -0.7% 1.01x
ReversedBidirectional 142363 141198 -0.8% 1.01x(?)
ObjectiveCBridgeFromNSSetAnyObjectForced 7206 7100 -1.5% 1.01x
StrToInt 7585 7499 -1.1% 1.01x
CStringLongNonAscii 4457 4418 -0.9% 1.01x
ArrayValueProp 2981 2953 -0.9% 1.01x
DropLastSequence 42530 42407 -0.3% 1.00x(?)
ArraySubscript 4361 4367 +0.1% 1.00x(?)
SetExclusiveOr_OfObjects 41148 41219 +0.2% 1.00x(?)
ObjectiveCBridgeToNSString 1304 1302 -0.1% 1.00x
DictionarySwapOfObjects 19569 19509 -0.3% 1.00x(?)
PopFrontArray 10871 10874 +0.0% 1.00x(?)
ExistentialTestTwoMethodCalls_ClassValueBuffer3 866783 865448 -0.1% 1.00x
RecursiveOwnedParameter 9413 9413 +0.0% 1.00x
Integrate 395 395 +0.0% 1.00x
ExistentialTestArrayShift_IntValueBuffer4 176358 176281 -0.0% 1.00x(?)
ExistentialTestArrayShift_IntValueBuffer3 179554 179546 -0.0% 1.00x(?)
ExistentialTestArrayShift_IntValueBuffer2 178105 178261 +0.1% 1.00x(?)
ExistentialTestArrayShift_IntValueBuffer1 178895 178775 -0.1% 1.00x(?)
ClassArrayGetter 930 930 +0.0% 1.00x
ExistentialTestArrayTwoMethodCalls_ClassValueBuffer4 238159 238124 -0.0% 1.00x(?)
ExistentialTestArrayTwoMethodCalls_ClassValueBuffer3 264205 264038 -0.1% 1.00x(?)
ExistentialTestArrayTwoMethodCalls_ClassValueBuffer2 232159 232018 -0.1% 1.00x(?)
ExistentialTestArrayTwoMethodCalls_ClassValueBuffer1 202634 202536 -0.1% 1.00x(?)
ProtocolDispatch2 492 492 +0.0% 1.00x
ExistentialTestMutatingAndNonMutating_ClassValueBuffer2 662305 664010 +0.3% 1.00x
ExistentialTestArrayOneMethodCall_IntValueBuffer4 134079 134166 +0.1% 1.00x
ArrayAppendAscii 82489 82391 -0.1% 1.00x(?)
ExistentialTestArrayOneMethodCall_IntValueBuffer0 127747 127858 +0.1% 1.00x(?)
ExistentialTestArrayOneMethodCall_IntValueBuffer1 128171 128446 +0.2% 1.00x
ExistentialTestArrayOneMethodCall_IntValueBuffer2 129068 128523 -0.4% 1.00x(?)
ObjectiveCBridgeFromNSStringForced 2754 2756 +0.1% 1.00x(?)
Prims 8922 8962 +0.5% 1.00x(?)
SortLettersInPlace 2698 2696 -0.1% 1.00x(?)
DictionarySwap 5448 5472 +0.4% 1.00x(?)
ReversedDictionary 24739 24748 +0.0% 1.00x(?)
ArrayAppendToFromGeneric 656 656 +0.0% 1.00x
ExistentialTestMutatingAndNonMutating_ClassValueBuffer3 807250 809026 +0.2% 1.00x
ObjectiveCBridgeFromNSDictionaryAnyObject 120637 121235 +0.5% 1.00x(?)
ExistentialTestArrayTwoMethodCalls_IntValueBuffer4 141918 141913 -0.0% 1.00x(?)
ExistentialTestArrayTwoMethodCalls_IntValueBuffer2 132906 132650 -0.2% 1.00x(?)
ExistentialTestArrayTwoMethodCalls_IntValueBuffer3 133955 134049 +0.1% 1.00x(?)
ExistentialTestArrayTwoMethodCalls_IntValueBuffer0 132259 131872 -0.3% 1.00x
ExistentialTestMutatingAndNonMutating_ClassValueBuffer4 677868 677347 -0.1% 1.00x(?)
Dictionary3OfObjects 2303 2309 +0.3% 1.00x(?)
StringUTF16Builder 3709 3713 +0.1% 1.00x(?)
ExistentialTestArrayConditionalShift_ClassValueBuffer2 384357 383526 -0.2% 1.00x
ExistentialTestArrayConditionalShift_IntValueBuffer0 287199 288301 +0.4% 1.00x(?)
ExistentialTestArrayConditionalShift_ClassValueBuffer4 358133 357814 -0.1% 1.00x(?)
ExistentialTestArrayConditionalShift_IntValueBuffer2 288288 288814 +0.2% 1.00x
RangeAssignment 5579 5585 +0.1% 1.00x(?)
ExistentialTestArrayConditionalShift_IntValueBuffer4 315115 315339 +0.1% 1.00x(?)
StringHasPrefix 1580 1584 +0.2% 1.00x(?)
ByteSwap 10 10 +0.0% 1.00x
SuperChars 274112 273898 -0.1% 1.00x(?)
ArrayAppendLazyMap 223703 223528 -0.1% 1.00x(?)
ArrayPlusEqualFiveElementCollection 277286 276837 -0.2% 1.00x(?)
ExistentialTestArrayConditionalShift_ClassValueBuffer3 428465 427969 -0.1% 1.00x(?)
XorLoop 22807 22806 -0.0% 1.00x(?)
ExistentialTestMutatingAndNonMutating_ClassValueBuffer1 526861 527194 +0.1% 1.00x
StringInterpolation 14714 14779 +0.4% 1.00x
ObserverClosure 6835 6840 +0.1% 1.00x(?)
SetIntersect_OfObjects 11193 11216 +0.2% 1.00x(?)
CharacterLiteralsSmall 1030 1030 +0.0% 1.00x
ExistentialTestArrayConditionalShift_IntValueBuffer1 289274 289682 +0.1% 1.00x
ExistentialTestPassExistentialTwoMethodCalls_ClassValueBuffer1 1334633 1333524 -0.1% 1.00x(?)
ArrayPlusEqualSingleElementCollection 272071 272531 +0.2% 1.00x(?)
ArrayAppendStrings 13698 13720 +0.2% 1.00x(?)
ExistentialTestOneMethodCall_IntValueBuffer1 40921 40931 +0.0% 1.00x(?)
ExistentialTestOneMethodCall_IntValueBuffer2 42432 42439 +0.0% 1.00x(?)
StaticArray 4573 4583 +0.2% 1.00x
ObjectAllocation 634 632 -0.3% 1.00x(?)
SortSortedStrings 1410 1409 -0.1% 1.00x(?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 104691 104246 -0.4% 1.00x(?)
MapReduceClassShort 51228 51055 -0.3% 1.00x(?)
ObjectiveCBridgeFromNSSetAnyObject 67715 67725 +0.0% 1.00x(?)
ArrayLiteral 1474 1474 +0.0% 1.00x
ArrayAppendLatin1 103927 103725 -0.2% 1.00x(?)
CStringLongAscii 17041 17008 -0.2% 1.00x(?)
CharacterLiteralsLarge 14167 14214 +0.3% 1.00x(?)
ExistentialTestArrayConditionalShift_ClassValueBuffer1 344024 343737 -0.1% 1.00x
Dictionary3 1437 1440 +0.2% 1.00x(?)
Dictionary2 3822 3841 +0.5% 1.00x(?)
StrComplexWalk 8563 8561 -0.0% 1.00x(?)
ExistentialTestArrayMutating_ClassValueBuffer2 122428 122266 -0.1% 1.00x
ExistentialTestArrayMutating_ClassValueBuffer1 122469 122266 -0.2% 1.00x
Join 1347 1344 -0.2% 1.00x
ArrayOfRef 8603 8607 +0.1% 1.00x(?)
ObjectiveCBridgeStubDateMutation 515 515 +0.0% 1.00x
DropLastArray 2124 2131 +0.3% 1.00x(?)
OpenClose 481 481 +0.0% 1.00x
HashTest 6000 6026 +0.4% 1.00x(?)
DictionaryOfObjects 4798 4798 +0.0% 1.00x
PopFrontUnsafePointer 178329 178328 -0.0% 1.00x(?)
StringEqualPointerComparison 9576 9617 +0.4% 1.00x(?)
ExistentialTestMutating_IntValueBuffer3 231084 231380 +0.1% 1.00x(?)
ExistentialTestMutating_IntValueBuffer2 162606 162436 -0.1% 1.00x(?)
ExistentialTestMutating_IntValueBuffer1 98524 98544 +0.0% 1.00x(?)
MapReduceAnyCollectionShort 46798 46822 +0.1% 1.00x(?)
ExistentialTestMutating_IntValueBuffer4 328235 328094 -0.0% 1.00x(?)
ObjectiveCBridgeStubToNSStringRef 149 149 +0.0% 1.00x
Calculator 1064 1066 +0.2% 1.00x
ArrayAppendFromGeneric 656 656 +0.0% 1.00x
StringMatch 87720 87477 -0.3% 1.00x(?)
ExistentialTestMutatingAndNonMutating_IntValueBuffer0 89342 89296 -0.1% 1.00x(?)
ExistentialTestMutatingAndNonMutating_IntValueBuffer1 145078 144950 -0.1% 1.00x(?)
ExistentialTestPassExistentialOneMethodCall_IntValueBuffer2 133519 133888 +0.3% 1.00x(?)
ExistentialTestPassExistentialOneMethodCall_IntValueBuffer3 135711 135408 -0.2% 1.00x(?)
MapReduceSequence 41346 41217 -0.3% 1.00x(?)
ExistentialTestPassExistentialOneMethodCall_IntValueBuffer1 137213 137158 -0.0% 1.00x(?)
MapReduceShort 46667 46763 +0.2% 1.00x(?)
DictionaryLiteral 13218 13213 -0.0% 1.00x(?)
Hanoi 16744 16815 +0.4% 1.00x(?)
DictionaryRemoveOfObjects 53106 53057 -0.1% 1.00x(?)
UTF8Decode 37008 36999 -0.0% 1.00x(?)
ObjectiveCBridgeStubURLAppendPath 218062 219085 +0.5% 1.00x(?)
ExistentialTestPassExistentialTwoMethodCalls_ClassValueBuffer3 2201997 2201537 -0.0% 1.00x(?)
ExistentialTestPassExistentialTwoMethodCalls_ClassValueBuffer2 1752621 1749234 -0.2% 1.00x
LazilyFilteredArrays 2716981 2725545 +0.3% 1.00x
ExistentialTestPassExistentialTwoMethodCalls_ClassValueBuffer4 1925832 1927392 +0.1% 1.00x(?)
ExistentialTestArrayShift_ClassValueBuffer4 176386 176298 -0.1% 1.00x(?)
SetUnion_OfObjects 29821 29951 +0.4% 1.00x(?)
ExistentialTestArrayShift_ClassValueBuffer2 178053 178115 +0.0% 1.00x(?)
ExistentialTestArrayShift_ClassValueBuffer3 179489 179550 +0.0% 1.00x(?)
ExistentialTestArrayShift_ClassValueBuffer1 178888 178722 -0.1% 1.00x(?)
NopDeinit 46982 46785 -0.4% 1.00x
CStringShortAscii 9026 9024 -0.0% 1.00x(?)
SuffixArray 2124 2131 +0.3% 1.00x
ExistentialTestMutating_IntValueBuffer0 42513 42443 -0.2% 1.00x(?)
ExistentialTestArrayShift_IntValueBuffer0 177729 177396 -0.2% 1.00x
ExistentialTestMutating_ClassValueBuffer4 244096 244258 +0.1% 1.00x(?)
NSDictionaryCastToSwift 6420 6431 +0.2% 1.00x(?)
GlobalClass 0 0 +0.0% 1.00x
ArrayAppendOptionals 1307 1305 -0.1% 1.00x(?)
StringBuilder 2844 2855 +0.4% 1.00x(?)
ArrayInClass 4552 4551 -0.0% 1.00x(?)
ArrayOfGenericRef 9938 9941 +0.0% 1.00x(?)
Phonebook 21791 21704 -0.4% 1.00x(?)
PolymorphicCalls 791 788 -0.4% 1.00x(?)
ExistentialTestTwoMethodCalls_IntValueBuffer2 82545 82590 +0.1% 1.00x(?)
ExistentialTestTwoMethodCalls_IntValueBuffer3 92429 92087 -0.4% 1.00x(?)
ExistentialTestTwoMethodCalls_IntValueBuffer0 75505 75566 +0.1% 1.00x(?)
ExistentialTestTwoMethodCalls_IntValueBuffer1 72788 72779 -0.0% 1.00x(?)
ArrayAppendRepeatCol 207202 206250 -0.5% 1.00x
ExistentialTestTwoMethodCalls_ClassValueBuffer2 703666 703375 -0.0% 1.00x(?)
ExistentialTestTwoMethodCalls_ClassValueBuffer1 554840 555061 +0.0% 1.00x(?)
MonteCarloPi 53635 53634 -0.0% 1.00x(?)
ExistentialTestTwoMethodCalls_ClassValueBuffer4 880870 880002 -0.1% 1.00x(?)
ExistentialTestArrayMutating_ClassValueBuffer4 123911 124035 +0.1% 1.00x
ExistentialTestArrayOneMethodCall_ClassValueBuffer4 175793 175837 +0.0% 1.00x(?)
ExistentialTestArrayOneMethodCall_ClassValueBuffer1 159821 159812 -0.0% 1.00x(?)
ExistentialTestArrayOneMethodCall_ClassValueBuffer3 203012 202809 -0.1% 1.00x(?)
ExistentialTestArrayOneMethodCall_ClassValueBuffer2 178678 178480 -0.1% 1.00x(?)
ExistentialTestArrayMutating_IntValueBuffer4 130487 130903 +0.3% 1.00x(?)
ExistentialTestArrayMutating_IntValueBuffer3 118233 118118 -0.1% 1.00x(?)
ExistentialTestArrayMutating_IntValueBuffer2 111112 110958 -0.1% 1.00x
ExistentialTestArrayMutating_IntValueBuffer1 105746 105589 -0.1% 1.00x(?)
ExistentialTestArrayMutating_IntValueBuffer0 100999 100821 -0.2% 1.00x(?)
ArrayAppendToGeneric 657 657 +0.0% 1.00x
Walsh 11942 11949 +0.1% 1.00x(?)
SetIsSubsetOf_OfObjects 1600 1601 +0.1% 1.00x(?)
ExistentialTestOneMethodCall_ClassValueBuffer2 300077 300039 -0.0% 1.00x(?)
LinkedList 33245 33249 +0.0% 1.00x(?)
ReversedArray 588 588 +0.0% 1.00x
ExistentialTestMutatingAndNonMutating_IntValueBuffer2 212361 212319 -0.0% 1.00x(?)
MapReduceAnyCollection 36363 36250 -0.3% 1.00x(?)
ExistentialTestMutatingAndNonMutating_IntValueBuffer3 289161 289259 +0.0% 1.00x(?)
RGBHistogramOfObjects 85944 86078 +0.2% 1.00x(?)
ObjectiveCBridgeStubToNSString 1546 1542 -0.3% 1.00x(?)
StringEdits 871127 870170 -0.1% 1.00x(?)
ExistentialTestPassExistentialTwoMethodCalls_IntValueBuffer3 238551 239025 +0.2% 1.00x(?)
ArrayAppendArrayOfInt 654 654 +0.0% 1.00x
ArrayOfPOD 1832 1832 +0.0% 1.00x
SetUnion 11874 11846 -0.2% 1.00x(?)
ExistentialTestPassExistentialOneMethodCall_ClassValueBuffer4 932487 932282 -0.0% 1.00x(?)
ExistentialTestPassExistentialOneMethodCall_ClassValueBuffer3 1251890 1249812 -0.2% 1.00x(?)
ExistentialTestPassExistentialOneMethodCall_ClassValueBuffer2 942675 942062 -0.1% 1.00x
ExistentialTestPassExistentialOneMethodCall_ClassValueBuffer1 663031 663389 +0.1% 1.00x
ObjectiveCBridgeStubFromNSDateRef 3900 3895 -0.1% 1.00x(?)
ObserverForwarderStruct 4788 4771 -0.4% 1.00x
ObjectiveCBridgeStubNSDateRefAccess 1207 1209 +0.2% 1.00x(?)
DeadArray 123697 123278 -0.3% 1.00x(?)
MonteCarloE 82904 83056 +0.2% 1.00x(?)
BitCount 102 102 +0.0% 1.00x
ArrayPlusEqualArrayOfInt 656 655 -0.1% 1.00x(?)
SevenBoom 1595 1602 +0.4% 1.00x(?)
ExistentialTestOneMethodCall_ClassValueBuffer1 220070 220087 +0.0% 1.00x(?)
ExistentialTestOneMethodCall_ClassValueBuffer3 375817 375822 +0.0% 1.00x(?)
ExistentialTestArrayConditionalShift_IntValueBuffer3 289464 289617 +0.1% 1.00x(?)
DropLastCountableRange 142 142 +0.0% 1.00x
SuffixSequence 40604 40744 +0.3% 1.00x(?)
ArrayValueProp4 3330 3319 -0.3% 1.00x
ExistentialTestPassExistentialOneMethodCall_IntValueBuffer0 133532 134094 +0.4% 1.00x(?)
MapReduceClass 41666 41563 -0.2% 1.00x
ExistentialTestPassExistentialTwoMethodCalls_IntValueBuffer4 389031 390532 +0.4% 1.00x(?)
Memset 44838 44852 +0.0% 1.00x(?)
ExistentialTestPassExistentialTwoMethodCalls_IntValueBuffer0 202402 201809 -0.3% 1.00x(?)
ExistentialTestPassExistentialTwoMethodCalls_IntValueBuffer1 196798 196388 -0.2% 1.00x(?)
ExistentialTestPassExistentialTwoMethodCalls_IntValueBuffer2 219220 219207 -0.0% 1.00x(?)
Dictionary2OfObjects 6210 6215 +0.1% 1.00x(?)
TwoSum 4662 4679 +0.4% 1.00x(?)
ObjectiveCBridgeStubDateAccess 1044 1047 +0.3% 1.00x(?)
ArrayValueProp2 3775 3774 -0.0% 1.00x(?)
ArrayValueProp3 3382 3383 +0.0% 1.00x(?)
Sim2DArray 29625 29628 +0.0% 1.00x(?)
ObserverPartiallyAppliedMethod 8264 8243 -0.2% 1.00x(?)
ExistentialTestTwoMethodCalls_IntValueBuffer4 109472 109398 -0.1% 1.00x(?)
StackPromo 98835 99340 +0.5% 0.99x(?)
Histogram 8558 8602 +0.5% 0.99x(?)
DictionaryBridge 2697 2718 +0.8% 0.99x(?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 7837 7897 +0.8% 0.99x(?)
MapReduceLazyCollectionShort 43086 43656 +1.3% 0.99x
LazilyFilteredRange 1269015 1275599 +0.5% 0.99x(?)
ExistentialTestOneMethodCall_IntValueBuffer0 41214 41547 +0.8% 0.99x(?)
ExistentialTestOneMethodCall_IntValueBuffer4 42535 42991 +1.1% 0.99x(?)
TypeFlood 165 166 +0.6% 0.99x(?)
DropLastAnySequence 6387 6469 +1.3% 0.99x
ObserverUnappliedMethod 8473 8561 +1.0% 0.99x(?)
ObjectiveCBridgeStubURLAppendPathRef 215372 217856 +1.1% 0.99x(?)
ObjectiveCBridgeToNSArray 28705 28870 +0.6% 0.99x(?)
NSError 710 716 +0.8% 0.99x(?)
ObjectiveCBridgeStubToNSDateRef 3377 3399 +0.7% 0.99x(?)
IterateData 11217 11373 +1.4% 0.99x(?)
SuffixAnySequence 6394 6482 +1.4% 0.99x
MapReduceLazySequence 27055 27429 +1.4% 0.99x
Dictionary 1826 1839 +0.7% 0.99x
ObjectiveCBridgeStubToArrayOfNSString 27539 27815 +1.0% 0.99x(?)
ExistentialTestMutating_ClassValueBuffer2 219515 220928 +0.6% 0.99x(?)
ExistentialTestMutating_ClassValueBuffer3 220995 223202 +1.0% 0.99x
ExistentialTestMutating_ClassValueBuffer1 220716 223375 +1.2% 0.99x(?)
ObjectiveCBridgeFromNSSetAnyObjectToString 85570 86048 +0.6% 0.99x(?)
StringHasSuffixUnicode 62378 63096 +1.1% 0.99x
DictionaryRemove 18789 19052 +1.4% 0.99x(?)
SuffixCountableRange 143 144 +0.7% 0.99x(?)
MapReduceLazyCollection 32595 33039 +1.4% 0.99x
Chars 7980 8050 +0.9% 0.99x(?)
RGBHistogram 31556 31853 +0.9% 0.99x(?)
AngryPhonebook 3187 3209 +0.7% 0.99x(?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 42363 42799 +1.0% 0.99x(?)
StringWalk 21190 21367 +0.8% 0.99x
ObjectiveCBridgeStubFromArrayOfNSString 31549 31955 +1.3% 0.99x(?)
ObjectiveCBridgeFromNSString 4030 4077 +1.2% 0.99x(?)
ObjectiveCBridgeStubFromNSDate 3776 3813 +1.0% 0.99x(?)
StringBuilderLong 1130 1152 +1.9% 0.98x(?)
ExistentialTestArrayOneMethodCall_IntValueBuffer3 128919 131434 +1.9% 0.98x
ObjectiveCBridgeStubFromNSStringRef 205 209 +1.9% 0.98x(?)
PopFrontArrayGeneric 8101 8245 +1.8% 0.98x
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 100837 102594 +1.7% 0.98x(?)
StringHasSuffix 1545 1577 +2.1% 0.98x
StringHasPrefixUnicode 15815 16106 +1.8% 0.98x
ArrayAppendSequence 72165 73388 +1.7% 0.98x
ArrayAppend 3687 3795 +2.9% 0.97x
ObjectiveCBridgeToNSSet 36444 37439 +2.7% 0.97x(?)
ArrayAppendReserved 3311 3429 +3.6% 0.97x
ExistentialTestArrayMutating_ClassValueBuffer3 122509 127837 +4.3% 0.96x(?)
ObjectiveCBridgeStubDataAppend 3874 4047 +4.5% 0.96x
NSStringConversion 1287 1335 +3.7% 0.96x
ArrayOfGenericPOD 3075 3247 +5.6% 0.95x
**Hardware Overview** Model Name: Mac mini Model Identifier: Macmini7,1 Processor Name: Intel Core i5 Processor Speed: 2.8 GHz Number of Processors: 1 Total Number of Cores: 2 L2 Cache (per Core): 256 KB L3 Cache: 3 MB Memory: 16 GB

@slavapestov
Copy link
Contributor Author

@jrose-apple Same result! I know @aschwaighofer is still iterating on performance of existentials, and 42 improvements seems like a decent outcome, so can we live with that one regression?

I'm glad I ran the benchmarks -- I was just expecting unexpected slowdowns or crashes.

@slavapestov slavapestov merged commit c17d649 into swiftlang:master Mar 31, 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.

3 participants