Skip to content

SILGen: Fix order of operations when a mutating existential method returns Self. #18937

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

Conversation

jckarter
Copy link
Contributor

The Self type doesn't get opened until immediately before the function call in a mutating method invocation on an existential, so we have to defer formation of the result buffer to that point. rdar://problem/43507711

@jckarter
Copy link
Contributor Author

@swift-ci Please test

Copy link
Contributor

@slavapestov slavapestov left a comment

Choose a reason for hiding this comment

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

I know this is WIP, just a few minor comments. @rjmccall will hopefully do a more in-depth review because the ResultPlan stuff was his design.

SmallVector<ArchetypeType *, 4> opened;
resultTy->getOpenedExistentials(opened);

SmallVector<Type, 4> types;
Copy link
Contributor

Choose a reason for hiding this comment

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

I would suggest factoring out the code for building this signature and layout into a new method

// We allocate the buffer as a box because the scope nesting won't clean
// this up with good stack discipline relative to any stack allocations that
// occur during argument emission. Escape analysis during mandatory passes
// ought to clean this up.
Copy link
Contributor

Choose a reason for hiding this comment

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

Would be good to add a test for that. However another approach would be to allocate a stack buffer of existential type and then open the existential late, using the same opened type as the result of the call. Would that make sense? Then at least you avoid the heap allocation if the value fits inline.

Copy link
Contributor

Choose a reason for hiding this comment

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

This is a case where we're always going to erase the existential after the call, right? Can we shift that erasure into the result plan so that we emit into the address produced by init_existential_addr? That would also let us actually do initialization into the context if possible.

Copy link
Contributor

Choose a reason for hiding this comment

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

Yeah, that’s basically what I’m suggesting.

@@ -484,6 +484,9 @@ class SILType {
/// Returns the underlying referent SILType of an @sil_unowned or @sil_weak
/// Type.
SILType getReferentType(SILModule &M) const;

/// Returns a SILType with any archetypes mapped out of context.
SILType mapTypeOutOfContext() const;
Copy link
Contributor

Choose a reason for hiding this comment

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

Do you mind splitting this off into a separate commit and doing a quick pass over mapTypeOutOfContext() calls throughout SIL to see if it can be used anywhere else?

@swift-ci
Copy link
Contributor

Build failed
Swift Test Linux Platform
Git Sha - 5d115fa7ae10cde1ee98cca5515141ddb1faf769

@swift-ci
Copy link
Contributor

Build failed
Swift Test OS X Platform
Git Sha - 5d115fa7ae10cde1ee98cca5515141ddb1faf769

@jckarter jckarter force-pushed the mutating-opened-existential-covariant-return branch from 5d115fa to 7102ef8 Compare August 25, 2018 01:43
@jckarter
Copy link
Contributor Author

@slavapestov @rjmccall Updated to also form the concrete value buffer for existentials late as well. That doesn't quite cover all the necessary cases, since if the existential is loadable (as when we're calling a method on an opaque protocol from a class-constrained refining existential) we won't pre-allocate the return buffer, and if there's a Self? return, we have to do an optional-to-optional conversion from Self to the existential. The special ResultPlan is still necessary, but the common existential case should at least not regress in efficiency.

@jckarter
Copy link
Contributor Author

@swift-ci Please test

@swift-ci
Copy link
Contributor

Build failed
Swift Test OS X Platform
Git Sha - 5d115fa7ae10cde1ee98cca5515141ddb1faf769

@swift-ci
Copy link
Contributor

Build failed
Swift Test Linux Platform
Git Sha - 5d115fa7ae10cde1ee98cca5515141ddb1faf769

@slavapestov
Copy link
Contributor

@jckarter An optional-of-opened-existential-to-optional-of-existential conversion could also theoretically be done in place -- emit the optional existential, project the optional payload and existential payload, and pass that as the out parameter. However it's understandable if you don't want to keep tweaking this.

@jckarter
Copy link
Contributor Author

I may be misunderstanding you, but Optional<T> can be larger than T, and in that case writing an Optional<T> into an existential buffer would clobber its metadata pointer.

I'm hoping for now to plug enough holes in the regressions here to give us time to figure out how to do the right thing here, opening the type early while still being able to guarantee invariants when the existential is opened for mutation.

@jckarter jckarter force-pushed the mutating-opened-existential-covariant-return branch from 7102ef8 to 78e533c Compare August 27, 2018 20:27
This does the same thing as taking the AST type and running it through mapTypeOutOfContext, but
saves call sites from having to do the unwrap-rewrap dance.
@jckarter jckarter force-pushed the mutating-opened-existential-covariant-return branch from 78e533c to 4ada498 Compare August 27, 2018 20:43
@jckarter jckarter changed the title [WIP] SILGen: Fix order of operations when a mutating existential method returns Self. SILGen: Fix order of operations when a mutating existential method returns Self. Aug 27, 2018
@jckarter
Copy link
Contributor Author

@slavapestov This look OK to commit now?

How would you feel about bringing this to the 4.2 branch? I'm a bit concerned about introducing new regressions with the changed order of operations in existential codegen; it ought to be benign and doesn't appear to impact any tests, but it's still a change.

@jckarter
Copy link
Contributor Author

@swift-ci Please test

@jckarter
Copy link
Contributor Author

@swift-ci Please test source compatibility

1 similar comment
@jckarter
Copy link
Contributor Author

@swift-ci Please test source compatibility

@jckarter
Copy link
Contributor Author

@swift-ci Please test

@jckarter
Copy link
Contributor Author

@swift-ci Please benchmark

1 similar comment
@jckarter
Copy link
Contributor Author

@swift-ci Please benchmark

@swift-ci
Copy link
Contributor

!!! Couldn't read commit file !!!

@jckarter
Copy link
Contributor Author

@swift-ci Please benchmark

@swift-ci
Copy link
Contributor

!!! Couldn't read commit file !!!

@jckarter
Copy link
Contributor Author

@swift-ci Please benchmark

@swift-ci
Copy link
Contributor

Build failed
Swift Test Linux Platform
Git Sha - 4ada498eed96d4b3644d13b12388ac9fdb7466cd

@jckarter jckarter force-pushed the mutating-opened-existential-covariant-return branch from 4ada498 to c32f5c8 Compare August 27, 2018 23:53
@jckarter
Copy link
Contributor Author

@swift-ci Please test

@jckarter
Copy link
Contributor Author

@swift-ci Please test source compatibility

1 similar comment
@jckarter
Copy link
Contributor Author

@swift-ci Please test source compatibility

@jckarter
Copy link
Contributor Author

@swift-ci Please benchmark

@swift-ci
Copy link
Contributor

Build failed
Swift Test OS X Platform
Git Sha - 4ada498eed96d4b3644d13b12388ac9fdb7466cd


// FIXME: the dynamic self capture here has to happen after existential
// opening as well.
//_ = y.covariantClosureArgAndReturn({ _ in 0 })
Copy link
Contributor

Choose a reason for hiding this comment

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

Is there a bug for this?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yep, I filed rdar://problem/43778354.

@swift-ci
Copy link
Contributor

Build failed
Swift Test Linux Platform
Git Sha - 4ada498eed96d4b3644d13b12388ac9fdb7466cd

@swift-ci
Copy link
Contributor

Build comment file:

Optimized (O)

Regression (3)
TEST OLD NEW DELTA SPEEDUP
StringEqualPointerComparison 314 343 +9.2% 0.92x
DataCopyBytes 489 529 +8.2% 0.92x (?)
DictionaryBridgeToObjC_Bridge 18 19 +5.6% 0.95x
Improvement (2)
TEST OLD NEW DELTA SPEEDUP
OpenClose 75 71 -5.3% 1.06x
StringHasPrefixAscii 2377 2261 -4.9% 1.05x
No Changes (469)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 3556 3567 +0.3% 1.00x (?)
AnyHashableWithAClass 89108 89039 -0.1% 1.00x (?)
Array2D 44355 44352 -0.0% 1.00x (?)
ArrayAppend 797 798 +0.1% 1.00x (?)
ArrayAppendArrayOfInt 798 791 -0.9% 1.01x (?)
ArrayAppendAscii 3935 3951 +0.4% 1.00x (?)
ArrayAppendAsciiSubstring 25271 25204 -0.3% 1.00x (?)
ArrayAppendFromGeneric 785 781 -0.5% 1.01x (?)
ArrayAppendGenericStructs 1399 1427 +2.0% 0.98x (?)
ArrayAppendLatin1 39518 39817 +0.8% 0.99x (?)
ArrayAppendLatin1Substring 139567 139848 +0.2% 1.00x (?)
ArrayAppendLazyMap 1335 1331 -0.3% 1.00x (?)
ArrayAppendOptionals 1401 1405 +0.3% 1.00x (?)
ArrayAppendRepeatCol 1338 1338 +0.0% 1.00x
ArrayAppendReserved 527 527 +0.0% 1.00x
ArrayAppendSequence 1118 1116 -0.2% 1.00x (?)
ArrayAppendStrings 6214 6220 +0.1% 1.00x (?)
ArrayAppendToFromGeneric 792 796 +0.5% 0.99x (?)
ArrayAppendToGeneric 783 800 +2.2% 0.98x (?)
ArrayAppendUTF16 40339 39959 -0.9% 1.01x
ArrayAppendUTF16Substring 138346 137990 -0.3% 1.00x (?)
ArrayInClass 85 85 +0.0% 1.00x
ArrayLiteral 0 0 +0.0% 1.00x
ArrayOfGenericPOD2 150 150 +0.0% 1.00x
ArrayOfGenericRef 4336 4336 +0.0% 1.00x
ArrayOfPOD 185 184 -0.5% 1.01x (?)
ArrayOfRef 4330 4329 -0.0% 1.00x (?)
ArrayPlusEqualArrayOfInt 783 785 +0.3% 1.00x (?)
ArrayPlusEqualFiveElementCollection 4174 4171 -0.1% 1.00x (?)
ArrayPlusEqualSingleElementCollection 793 797 +0.5% 0.99x (?)
ArrayPlusEqualThreeElements 1632 1630 -0.1% 1.00x (?)
ArraySubscript 1549 1546 -0.2% 1.00x (?)
ArrayValueProp 8 8 +0.0% 1.00x
ArrayValueProp2 8 8 +0.0% 1.00x
ArrayValueProp3 8 8 +0.0% 1.00x
ArrayValueProp4 8 8 +0.0% 1.00x
BinaryFloatingPointPropertiesBinade 31 31 +0.0% 1.00x
BinaryFloatingPointPropertiesNextUp 29 29 +0.0% 1.00x
BinaryFloatingPointPropertiesUlp 35 35 +0.0% 1.00x
BitCount 169 169 +0.0% 1.00x
ByteSwap 99 99 +0.0% 1.00x
COWArrayGuaranteedParameterOverhead 9904 9912 +0.1% 1.00x (?)
COWTree 3614 3602 -0.3% 1.00x (?)
CSVParsing2 1715 1717 +0.1% 1.00x (?)
CSVParsingAlt2 1770 1768 -0.1% 1.00x (?)
CSVParsingAltIndices2 826 824 -0.2% 1.00x (?)
CStringLongAscii 3285 3285 +0.0% 1.00x
CStringLongNonAscii 2157 2109 -2.2% 1.02x (?)
CStringShortAscii 3143 3162 +0.6% 0.99x (?)
Calculator 208 206 -1.0% 1.01x (?)
CaptureProp 4068 4066 -0.0% 1.00x (?)
ChainedFilterMap 1245 1245 +0.0% 1.00x
CharIndexing_ascii_unicodeScalars 17153 17150 -0.0% 1.00x (?)
CharIndexing_ascii_unicodeScalars_Backwards 16579 16580 +0.0% 1.00x (?)
CharIndexing_chinese_unicodeScalars 13122 13119 -0.0% 1.00x (?)
CharIndexing_chinese_unicodeScalars_Backwards 12558 12556 -0.0% 1.00x (?)
CharIndexing_japanese_unicodeScalars 20519 20512 -0.0% 1.00x (?)
CharIndexing_japanese_unicodeScalars_Backwards 19837 19844 +0.0% 1.00x (?)
CharIndexing_korean_unicodeScalars 16642 16638 -0.0% 1.00x (?)
CharIndexing_korean_unicodeScalars_Backwards 16073 16073 +0.0% 1.00x
CharIndexing_punctuatedJapanese_unicodeScalars 3100 3099 -0.0% 1.00x (?)
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 3007 3006 -0.0% 1.00x (?)
CharIndexing_punctuated_unicodeScalars 3881 3882 +0.0% 1.00x (?)
CharIndexing_punctuated_unicodeScalars_Backwards 3762 3761 -0.0% 1.00x (?)
CharIndexing_russian_unicodeScalars 14287 14286 -0.0% 1.00x (?)
CharIndexing_russian_unicodeScalars_Backwards 13813 13811 -0.0% 1.00x (?)
CharIndexing_tweet_unicodeScalars 33865 33749 -0.3% 1.00x (?)
CharIndexing_tweet_unicodeScalars_Backwards 32652 32645 -0.0% 1.00x (?)
CharIndexing_utf16_unicodeScalars 22941 22942 +0.0% 1.00x (?)
CharIndexing_utf16_unicodeScalars_Backwards 23371 23117 -1.1% 1.01x (?)
CharIteration_ascii_unicodeScalars 20194 20084 -0.5% 1.01x
CharIteration_ascii_unicodeScalars_Backwards 15842 15842 +0.0% 1.00x
CharIteration_chinese_unicodeScalars 15313 15186 -0.8% 1.01x
CharIteration_chinese_unicodeScalars_Backwards 11995 11994 -0.0% 1.00x (?)
CharIteration_japanese_unicodeScalars 24229 24106 -0.5% 1.01x (?)
CharIteration_japanese_unicodeScalars_Backwards 18972 18961 -0.1% 1.00x (?)
CharIteration_korean_unicodeScalars 19588 19487 -0.5% 1.01x (?)
CharIteration_korean_unicodeScalars_Backwards 15361 15361 +0.0% 1.00x
CharIteration_punctuatedJapanese_unicodeScalars 3650 3583 -1.8% 1.02x
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 2859 2859 +0.0% 1.00x
CharIteration_punctuated_unicodeScalars 4561 4491 -1.5% 1.02x
CharIteration_punctuated_unicodeScalars_Backwards 3581 3580 -0.0% 1.00x (?)
CharIteration_russian_unicodeScalars 16838 16697 -0.8% 1.01x
CharIteration_russian_unicodeScalars_Backwards 13198 13197 -0.0% 1.00x (?)
CharIteration_tweet_unicodeScalars 40171 39837 -0.8% 1.01x
CharIteration_tweet_unicodeScalars_Backwards 31301 31301 +0.0% 1.00x
CharIteration_utf16_unicodeScalars 27369 27372 +0.0% 1.00x (?)
CharIteration_utf16_unicodeScalars_Backwards 18402 18401 -0.0% 1.00x (?)
CharacterLiteralsLarge 5843 5798 -0.8% 1.01x (?)
CharacterLiteralsSmall 220 220 +0.0% 1.00x
CharacterPropertiesFetch 4479 4508 +0.6% 0.99x (?)
CharacterPropertiesPrecomputed 964 966 +0.2% 1.00x (?)
CharacterPropertiesStashed 1683 1686 +0.2% 1.00x (?)
CharacterPropertiesStashedMemo 1402 1410 +0.6% 0.99x (?)
Chars2 2623 2623 +0.0% 1.00x
ClassArrayGetter2 123 123 +0.0% 1.00x
Combos 493 490 -0.6% 1.01x (?)
DataAccessBytes 1144 1141 -0.3% 1.00x (?)
DataAppendArray 5484 5530 +0.8% 0.99x (?)
DataAppendBytes 5160 5137 -0.4% 1.00x (?)
DataAppendDataLargeToLarge 67303 67105 -0.3% 1.00x (?)
DataAppendDataLargeToMedium 35401 35088 -0.9% 1.01x (?)
DataAppendDataLargeToSmall 34338 34196 -0.4% 1.00x (?)
DataAppendDataMediumToLarge 37545 37857 +0.8% 0.99x (?)
DataAppendDataMediumToMedium 6577 6518 -0.9% 1.01x (?)
DataAppendDataMediumToSmall 5949 5834 -1.9% 1.02x (?)
DataAppendDataSmallToLarge 37164 37266 +0.3% 1.00x (?)
DataAppendDataSmallToMedium 6308 6149 -2.5% 1.03x (?)
DataAppendDataSmallToSmall 5671 5833 +2.9% 0.97x (?)
DataAppendSequence 20709 20912 +1.0% 0.99x (?)
DataCount 37 37 +0.0% 1.00x
DataMutateBytes 3865 3884 +0.5% 1.00x (?)
DataReplaceLarge 36726 36470 -0.7% 1.01x (?)
DataReplaceLargeBuffer 57875 57184 -1.2% 1.01x (?)
DataReplaceMedium 7976 7770 -2.6% 1.03x (?)
DataReplaceMediumBuffer 11456 11313 -1.2% 1.01x (?)
DataReplaceSmall 5627 5465 -2.9% 1.03x (?)
DataReplaceSmallBuffer 8810 8908 +1.1% 0.99x (?)
DataReset 2801 2807 +0.2% 1.00x (?)
DataSetCount 543 544 +0.2% 1.00x (?)
DataSubscript 220 220 +0.0% 1.00x
DictOfArraysToArrayOfDicts 787 791 +0.5% 0.99x (?)
Dictionary 498 499 +0.2% 1.00x (?)
Dictionary2 622 625 +0.5% 1.00x (?)
Dictionary2OfObjects 2062 2067 +0.2% 1.00x (?)
Dictionary3 216 213 -1.4% 1.01x (?)
Dictionary3OfObjects 707 708 +0.1% 1.00x (?)
Dictionary4 307 306 -0.3% 1.00x (?)
Dictionary4Legacy 683 682 -0.1% 1.00x (?)
Dictionary4OfObjects 419 417 -0.5% 1.00x (?)
Dictionary4OfObjectsLegacy 837 835 -0.2% 1.00x (?)
DictionaryBridge 1508 1506 -0.1% 1.00x (?)
DictionaryBridgeToObjC_Access 891 928 +4.2% 0.96x (?)
DictionaryBridgeToObjC_BulkAccess 161 161 +0.0% 1.00x
DictionaryCompactMapValuesOfCastValue 10790 10713 -0.7% 1.01x (?)
DictionaryCompactMapValuesOfNilValue 6439 6436 -0.0% 1.00x (?)
DictionaryCopy 98086 98125 +0.0% 1.00x (?)
DictionaryFilter 97730 97449 -0.3% 1.00x (?)
DictionaryGroup 199 199 +0.0% 1.00x
DictionaryGroupOfObjects 2070 2078 +0.4% 1.00x (?)
DictionaryKeysContainsCocoa 40 40 +0.0% 1.00x
DictionaryKeysContainsNative 30 30 +0.0% 1.00x
DictionaryLiteral 1813 1817 +0.2% 1.00x (?)
DictionaryOfObjects 2356 2359 +0.1% 1.00x (?)
DictionaryRemove 5315 5268 -0.9% 1.01x (?)
DictionaryRemoveOfObjects 25070 24992 -0.3% 1.00x (?)
DictionarySubscriptDefaultMutation 242 242 +0.0% 1.00x
DictionarySubscriptDefaultMutationArray 582 582 +0.0% 1.00x
DictionarySubscriptDefaultMutationArrayOfObjects 3968 3971 +0.1% 1.00x (?)
DictionarySubscriptDefaultMutationOfObjects 1669 1676 +0.4% 1.00x (?)
DictionarySwap 940 940 +0.0% 1.00x
DictionarySwapAt 6262 6287 +0.4% 1.00x (?)
DictionarySwapAtOfObjects 51911 51865 -0.1% 1.00x (?)
DictionarySwapOfObjects 8585 8572 -0.2% 1.00x (?)
DoubleWidthDivision 0 0 +0.0% 1.00x
DropFirstAnyCollection 76 76 +0.0% 1.00x
DropFirstAnyCollectionLazy 64336 64287 -0.1% 1.00x (?)
DropFirstAnySeqCRangeIter 93 93 +0.0% 1.00x
DropFirstAnySeqCRangeIterLazy 93 93 +0.0% 1.00x
DropFirstAnySeqCntRange 71 71 +0.0% 1.00x
DropFirstAnySeqCntRangeLazy 71 71 +0.0% 1.00x
DropFirstAnySequence 1841 1841 +0.0% 1.00x
DropFirstAnySequenceLazy 1841 1841 +0.0% 1.00x
DropFirstArray 35 35 +0.0% 1.00x
DropFirstArrayLazy 35 35 +0.0% 1.00x
DropFirstCountableRange 29 29 +0.0% 1.00x
DropFirstCountableRangeLazy 29 29 +0.0% 1.00x
DropFirstSequence 2679 2679 +0.0% 1.00x
DropFirstSequenceLazy 2773 2773 +0.0% 1.00x
DropLastAnyCollection 28 28 +0.0% 1.00x
DropLastAnyCollectionLazy 21471 21460 -0.1% 1.00x (?)
DropLastAnySeqCRangeIter 3329 3311 -0.5% 1.01x (?)
DropLastAnySeqCRangeIterLazy 3326 3312 -0.4% 1.00x (?)
DropLastAnySeqCntRange 9 9 +0.0% 1.00x
DropLastAnySeqCntRangeLazy 9 9 +0.0% 1.00x
DropLastAnySequence 4968 4962 -0.1% 1.00x (?)
DropLastAnySequenceLazy 5075 5052 -0.5% 1.00x (?)
DropLastSequence 659 659 +0.0% 1.00x
DropLastSequenceLazy 659 658 -0.2% 1.00x (?)
DropWhileAnyCollection 100 100 +0.0% 1.00x
DropWhileAnyCollectionLazy 147 147 +0.0% 1.00x
DropWhileAnySeqCRangeIter 75 75 +0.0% 1.00x
DropWhileAnySeqCRangeIterLazy 147 147 +0.0% 1.00x
DropWhileAnySeqCntRange 95 95 +0.0% 1.00x
DropWhileAnySeqCntRangeLazy 147 147 +0.0% 1.00x
DropWhileAnySequence 1854 1854 +0.0% 1.00x
DropWhileAnySequenceLazy 1854 1854 +0.0% 1.00x
DropWhileArrayLazy 105 105 +0.0% 1.00x
DropWhileCountableRange 30 30 +0.0% 1.00x
DropWhileCountableRangeLazy 82 82 +0.0% 1.00x
DropWhileSequence 2208 2207 -0.0% 1.00x (?)
DropWhileSequenceLazy 105 105 +0.0% 1.00x
EqualStringSubstring 49 49 +0.0% 1.00x
EqualSubstringString 49 49 +0.0% 1.00x
EqualSubstringSubstring 48 49 +2.1% 0.98x
EqualSubstringSubstringGenericEquatable 48 49 +2.1% 0.98x
ErrorHandling 1184 1194 +0.8% 0.99x (?)
ExclusivityGlobal 5 5 +0.0% 1.00x
ExclusivityIndependent 2 2 +0.0% 1.00x
FatCompactMap 1246 1245 -0.1% 1.00x (?)
FilterEvenUsingReduce 1321 1324 +0.2% 1.00x (?)
FilterEvenUsingReduceInto 159 159 +0.0% 1.00x
FloatingPointPrinting_Double_description_small 21497 21496 -0.0% 1.00x (?)
FloatingPointPrinting_Double_description_uniform 21040 21055 +0.1% 1.00x (?)
FloatingPointPrinting_Double_interpolated 61407 61017 -0.6% 1.01x (?)
FloatingPointPrinting_Float80_description_small 28509 28482 -0.1% 1.00x (?)
FloatingPointPrinting_Float80_description_uniform 27768 27759 -0.0% 1.00x (?)
FloatingPointPrinting_Float80_interpolated 64138 64167 +0.0% 1.00x (?)
FloatingPointPrinting_Float_description_small 5756 5755 -0.0% 1.00x (?)
FloatingPointPrinting_Float_description_uniform 5703 5699 -0.1% 1.00x (?)
FloatingPointPrinting_Float_interpolated 38178 38043 -0.4% 1.00x (?)
FrequenciesUsingReduce 4707 4714 +0.1% 1.00x (?)
FrequenciesUsingReduceInto 1485 1475 -0.7% 1.01x (?)
Hanoi 2238 2238 +0.0% 1.00x
HashTest 924 928 +0.4% 1.00x (?)
Histogram 585 584 -0.2% 1.00x (?)
Integrate 335 335 +0.0% 1.00x
IterateData 1576 1575 -0.1% 1.00x (?)
Join 164 164 +0.0% 1.00x
LazilyFilteredArrayContains 33472 33469 -0.0% 1.00x (?)
LazilyFilteredArrays2 4562 4562 +0.0% 1.00x
LazilyFilteredRange 3661 3657 -0.1% 1.00x (?)
LessSubstringSubstring 48 48 +0.0% 1.00x
LessSubstringSubstringGenericComparable 48 48 +0.0% 1.00x
LinkedList 7539 7541 +0.0% 1.00x (?)
LuhnAlgoEager 439 433 -1.4% 1.01x (?)
LuhnAlgoLazy 435 435 +0.0% 1.00x
MapReduce 398 397 -0.3% 1.00x (?)
MapReduceAnyCollection 370 370 +0.0% 1.00x
MapReduceAnyCollectionShort 2008 2009 +0.0% 1.00x (?)
MapReduceClass 2982 2982 +0.0% 1.00x
MapReduceClassShort 4521 4518 -0.1% 1.00x (?)
MapReduceLazyCollection 13 13 +0.0% 1.00x
MapReduceLazyCollectionShort 31 31 +0.0% 1.00x
MapReduceLazySequence 86 86 +0.0% 1.00x
MapReduceSequence 467 467 +0.0% 1.00x
MapReduceShort 1970 1969 -0.1% 1.00x (?)
MapReduceShortString 20 20 +0.0% 1.00x
MapReduceString 45 45 +0.0% 1.00x
Memset 214 213 -0.5% 1.00x (?)
MonteCarloE 10502 10500 -0.0% 1.00x (?)
MonteCarloPi 42616 42617 +0.0% 1.00x (?)
NSDictionaryCastToSwift 7020 6996 -0.3% 1.00x (?)
NSError 163 164 +0.6% 0.99x (?)
NSStringConversion 668 681 +1.9% 0.98x
NibbleSort 3291 3291 +0.0% 1.00x
NopDeinit 32299 32320 +0.1% 1.00x (?)
ObjectAllocation 132 132 +0.0% 1.00x
ObjectiveCBridgeFromNSArrayAnyObject 24943 24569 -1.5% 1.02x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 4271 4285 +0.3% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 44731 45685 +2.1% 0.98x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 43182 42474 -1.6% 1.02x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 103720 105146 +1.4% 0.99x (?)
ObjectiveCBridgeFromNSSetAnyObject 46377 45406 -2.1% 1.02x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 3782 3774 -0.2% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectToString 66590 66782 +0.3% 1.00x (?)
ObjectiveCBridgeFromNSString 1204 1214 +0.8% 0.99x (?)
ObjectiveCBridgeFromNSStringForced 2454 2468 +0.6% 0.99x (?)
ObjectiveCBridgeStubDataAppend 6295 6188 -1.7% 1.02x (?)
ObjectiveCBridgeStubDateMutation 400 400 +0.0% 1.00x
ObjectiveCBridgeStubFromArrayOfNSString2 3305 3270 -1.1% 1.01x (?)
ObjectiveCBridgeStubFromNSString 1013 1040 +2.7% 0.97x (?)
ObjectiveCBridgeStubNSDataAppend 2505 2524 +0.8% 0.99x (?)
ObjectiveCBridgeStubToArrayOfNSString2 3931 3943 +0.3% 1.00x (?)
ObjectiveCBridgeStubToNSDate2 1560 1522 -2.4% 1.02x (?)
ObjectiveCBridgeStubToNSString 2339 2342 +0.1% 1.00x (?)
ObjectiveCBridgeStubToNSStringRef 121 121 +0.0% 1.00x
ObjectiveCBridgeStubURLAppendPath2 2755 2753 -0.1% 1.00x (?)
ObjectiveCBridgeStubURLAppendPathRef2 2717 2791 +2.7% 0.97x (?)
ObjectiveCBridgeToNSArray 14737 14729 -0.1% 1.00x (?)
ObjectiveCBridgeToNSDictionary 26684 26432 -0.9% 1.01x (?)
ObjectiveCBridgeToNSSet 17785 17786 +0.0% 1.00x (?)
ObjectiveCBridgeToNSString 458 458 +0.0% 1.00x
ObserverClosure 2174 2173 -0.0% 1.00x (?)
ObserverForwarderStruct 1170 1169 -0.1% 1.00x (?)
ObserverPartiallyAppliedMethod 3748 3747 -0.0% 1.00x (?)
ObserverUnappliedMethod 2454 2446 -0.3% 1.00x (?)
OpaqueConsumingUsers 4178 4179 +0.0% 1.00x (?)
Phonebook 7226 7224 -0.0% 1.00x (?)
PointerArithmetics 31484 31484 +0.0% 1.00x
PolymorphicCalls 25 25 +0.0% 1.00x
PopFrontArray 1852 1851 -0.1% 1.00x (?)
PopFrontArrayGeneric 1943 1943 +0.0% 1.00x
PopFrontUnsafePointer 8738 8965 +2.6% 0.97x (?)
PrefixAnyCollection 76 76 +0.0% 1.00x
PrefixAnyCollectionLazy 64313 64028 -0.4% 1.00x (?)
PrefixAnySeqCRangeIter 33 33 +0.0% 1.00x
PrefixAnySeqCRangeIterLazy 33 33 +0.0% 1.00x
PrefixAnySeqCntRange 71 71 +0.0% 1.00x
PrefixAnySeqCntRangeLazy 71 71 +0.0% 1.00x
PrefixAnySequence 1378 1377 -0.1% 1.00x (?)
PrefixAnySequenceLazy 1377 1378 +0.1% 1.00x (?)
PrefixArray 35 35 +0.0% 1.00x
PrefixArrayLazy 35 35 +0.0% 1.00x
PrefixCountableRange 29 29 +0.0% 1.00x
PrefixCountableRangeLazy 29 29 +0.0% 1.00x
PrefixSequence 2209 2209 +0.0% 1.00x
PrefixSequenceLazy 2274 2275 +0.0% 1.00x (?)
PrefixWhileAnyCollection 146 146 +0.0% 1.00x
PrefixWhileAnyCollectionLazy 89 89 +0.0% 1.00x
PrefixWhileAnySeqCRangeIter 366 366 +0.0% 1.00x
PrefixWhileAnySeqCRangeIterLazy 89 89 +0.0% 1.00x
PrefixWhileAnySequence 1502 1505 +0.2% 1.00x (?)
PrefixWhileAnySequenceLazy 1391 1391 +0.0% 1.00x
PrefixWhileArray 88 88 +0.0% 1.00x
PrefixWhileArrayLazy 70 70 +0.0% 1.00x
PrefixWhileSequence 326 326 +0.0% 1.00x
PrefixWhileSequenceLazy 52 52 +0.0% 1.00x
Prims 898 897 -0.1% 1.00x (?)
PrimsSplit 899 898 -0.1% 1.00x (?)
QueueConcrete 1135 1136 +0.1% 1.00x (?)
QueueGeneric 1127 1127 +0.0% 1.00x
RC4 155 155 +0.0% 1.00x
RGBHistogram 2391 2394 +0.1% 1.00x (?)
RGBHistogramOfObjects 19986 19988 +0.0% 1.00x (?)
Radix2CooleyTukey 12048 12148 +0.8% 0.99x (?)
Radix2CooleyTukeyf 8789 8836 +0.5% 0.99x (?)
RandomDoubleDef 26642 26592 -0.2% 1.00x (?)
RandomDoubleLCG 2176 2146 -1.4% 1.01x
RandomIntegersDef 24490 24481 -0.0% 1.00x (?)
RandomIntegersLCG 178 178 +0.0% 1.00x
RandomShuffleDef2 2575 2576 +0.0% 1.00x (?)
RandomShuffleLCG2 1815 1816 +0.1% 1.00x (?)
RangeAssignment 335 336 +0.3% 1.00x (?)
RangeIterationSigned 171 171 +0.0% 1.00x
RangeReplaceableCollectionPlusDefault 1038 1039 +0.1% 1.00x (?)
RecursiveOwnedParameter 115 115 +0.0% 1.00x
RemoveWhereFilterInts 44 44 +0.0% 1.00x
RemoveWhereFilterString 242 239 -1.2% 1.01x (?)
RemoveWhereFilterStrings 436 434 -0.5% 1.00x (?)
RemoveWhereMoveInts 15 15 +0.0% 1.00x
RemoveWhereMoveStrings 731 731 +0.0% 1.00x
RemoveWhereQuadraticInts 1281 1282 +0.1% 1.00x (?)
RemoveWhereQuadraticString 373 367 -1.6% 1.02x (?)
RemoveWhereQuadraticStrings 2749 2749 +0.0% 1.00x
RemoveWhereSwapInts 20 20 +0.0% 1.00x
RemoveWhereSwapStrings 897 897 +0.0% 1.00x
ReversedArray2 200 200 +0.0% 1.00x
ReversedBidirectional 13750 13706 -0.3% 1.00x (?)
ReversedDictionary2 317 318 +0.3% 1.00x (?)
RomanNumbers 78104 78057 -0.1% 1.00x (?)
SequenceAlgosAnySequence 12388 12357 -0.3% 1.00x (?)
SequenceAlgosArray 1574 1574 +0.0% 1.00x
SequenceAlgosContiguousArray 1564 1578 +0.9% 0.99x (?)
SequenceAlgosList 1349 1350 +0.1% 1.00x (?)
SequenceAlgosRange 2576 2575 -0.0% 1.00x (?)
SequenceAlgosUnfoldSequence 1105 1104 -0.1% 1.00x (?)
SetExclusiveOr 4858 4822 -0.7% 1.01x (?)
SetExclusiveOr_OfObjects 11199 11211 +0.1% 1.00x (?)
SetIntersect 596 597 +0.2% 1.00x (?)
SetIntersectionBox0 169 166 -1.8% 1.02x
SetIntersectionBox25 378 369 -2.4% 1.02x
SetIntersectionInt0 59 59 +0.0% 1.00x
SetIntersectionInt100 455 454 -0.2% 1.00x (?)
SetIntersectionInt25 156 156 +0.0% 1.00x
SetIntersectionInt50 254 253 -0.4% 1.00x (?)
SetIsSubsetBox0 350 349 -0.3% 1.00x (?)
SetIsSubsetBox25 176 177 +0.6% 0.99x (?)
SetIsSubsetInt0 232 232 +0.0% 1.00x
SetIsSubsetInt100 284 282 -0.7% 1.01x (?)
SetIsSubsetInt25 73 73 +0.0% 1.00x
SetIsSubsetInt50 144 144 +0.0% 1.00x
SetSubtractingBox0 176 168 -4.5% 1.05x
SetSubtractingBox25 374 366 -2.1% 1.02x
SetSubtractingInt0 69 69 +0.0% 1.00x
SetSubtractingInt100 241 245 +1.7% 0.98x (?)
SetSubtractingInt25 142 144 +1.4% 0.99x (?)
SetSubtractingInt50 179 180 +0.6% 0.99x (?)
SetSymmetricDifferenceBox0 1121 1122 +0.1% 1.00x (?)
SetSymmetricDifferenceBox25 739 738 -0.1% 1.00x (?)
SetSymmetricDifferenceInt0 484 483 -0.2% 1.00x (?)
SetSymmetricDifferenceInt100 305 310 +1.6% 0.98x
SetSymmetricDifferenceInt25 342 344 +0.6% 0.99x (?)
SetSymmetricDifferenceInt50 329 333 +1.2% 0.99x
SetUnion 4215 4207 -0.2% 1.00x (?)
SetUnionBox0 964 959 -0.5% 1.01x
SetUnionBox25 517 520 +0.6% 0.99x (?)
SetUnionInt0 421 418 -0.7% 1.01x (?)
SetUnionInt100 98 94 -4.1% 1.04x (?)
SetUnionInt25 245 245 +0.0% 1.00x
SetUnionInt50 203 203 +0.0% 1.00x
SetUnion_OfObjects 9619 9599 -0.2% 1.00x (?)
SevenBoom 841 850 +1.1% 0.99x (?)
Sim2DArray 312 312 +0.0% 1.00x
SortAdjacentIntPyramids 10242 10243 +0.0% 1.00x (?)
SortIntPyramid 8755 8751 -0.0% 1.00x (?)
SortLargeExistentials 5103 5100 -0.1% 1.00x (?)
SortLettersInPlace 933 933 +0.0% 1.00x
SortSortedStrings 712 713 +0.1% 1.00x (?)
SortStrings 1508 1516 +0.5% 0.99x
SortStringsUnicode 2060 2059 -0.0% 1.00x (?)
StackPromo 17090 17057 -0.2% 1.00x (?)
StaticArray 9 9 +0.0% 1.00x
StrComplexWalk 1781 1781 +0.0% 1.00x
StrToInt 3138 3155 +0.5% 0.99x (?)
StringAdder 548 554 +1.1% 0.99x
StringBuilder 490 490 +0.0% 1.00x
StringBuilderLong 1231 1216 -1.2% 1.01x (?)
StringBuilderSmallReservingCapacity 500 500 +0.0% 1.00x
StringBuilderWithLongSubstring 1416 1431 +1.1% 0.99x (?)
StringComparison_abnormal 790 786 -0.5% 1.01x (?)
StringComparison_ascii 1064 1068 +0.4% 1.00x (?)
StringComparison_emoji 859 852 -0.8% 1.01x (?)
StringComparison_fastPrenormal 844 844 +0.0% 1.00x
StringComparison_latin1 655 655 +0.0% 1.00x
StringComparison_longSharedPrefix 953 949 -0.4% 1.00x (?)
StringComparison_nonBMPSlowestPrenormal 1696 1686 -0.6% 1.01x (?)
StringComparison_slowerPrenormal 1800 1807 +0.4% 1.00x (?)
StringComparison_zalgo 112162 111663 -0.4% 1.00x (?)
StringEdits 167841 167816 -0.0% 1.00x (?)
StringEnumRawValueInitialization 877 880 +0.3% 1.00x (?)
StringFromLongWholeSubstring 21 21 +0.0% 1.00x
StringFromLongWholeSubstringGeneric 21 21 +0.0% 1.00x
StringHasPrefixUnicode 98186 98053 -0.1% 1.00x (?)
StringHasSuffixAscii 2318 2289 -1.3% 1.01x
StringHasSuffixUnicode 100420 100380 -0.0% 1.00x (?)
StringHashing_abnormal 1318 1313 -0.4% 1.00x (?)
StringHashing_ascii 35 35 +0.0% 1.00x
StringHashing_emoji 1843 1863 +1.1% 0.99x (?)
StringHashing_fastPrenormal 8254 8230 -0.3% 1.00x (?)
StringHashing_latin1 2539 2531 -0.3% 1.00x (?)
StringHashing_longSharedPrefix 7557 7549 -0.1% 1.00x (?)
StringHashing_nonBMPSlowestPrenormal 2003 2026 +1.1% 0.99x (?)
StringHashing_slowerPrenormal 2694 2687 -0.3% 1.00x (?)
StringHashing_zalgo 3436 3442 +0.2% 1.00x (?)
StringInterpolation 8776 8781 +0.1% 1.00x (?)
StringInterpolationManySmallSegments 17680 17732 +0.3% 1.00x (?)
StringInterpolationSmall 4044 4061 +0.4% 1.00x (?)
StringMatch 12184 12048 -1.1% 1.01x (?)
StringRemoveDupes 472 469 -0.6% 1.01x (?)
StringUTF16Builder 2523 2529 +0.2% 1.00x (?)
StringUTF16SubstringBuilder 5896 5843 -0.9% 1.01x (?)
StringWalk 1559 1559 +0.0% 1.00x
StringWithCString2 1691 1691 +0.0% 1.00x
StringWordBuilder 2251 2260 +0.4% 1.00x (?)
StringWordBuilderReservingCapacity 1630 1627 -0.2% 1.00x (?)
SubstringComparable 12 12 +0.0% 1.00x
SubstringEqualString 597 596 -0.2% 1.00x (?)
SubstringEquatable 1387 1386 -0.1% 1.00x (?)
SubstringFromLongString 10 10 +0.0% 1.00x
SubstringFromLongStringGeneric 74 74 +0.0% 1.00x
SuffixAnyCollection 28 28 +0.0% 1.00x
SuffixAnyCollectionLazy 21469 21417 -0.2% 1.00x (?)
SuffixAnySeqCRangeIter 3637 3626 -0.3% 1.00x (?)
SuffixAnySeqCRangeIterLazy 3633 3621 -0.3% 1.00x (?)
SuffixAnySeqCntRange 14 14 +0.0% 1.00x
SuffixAnySeqCntRangeLazy 14 14 +0.0% 1.00x
SuffixAnySequence 4965 4990 +0.5% 0.99x (?)
SuffixAnySequenceLazy 5070 5090 +0.4% 1.00x (?)
SuffixSequence 3635 3625 -0.3% 1.00x (?)
SuffixSequenceLazy 3632 3627 -0.1% 1.00x (?)
SumUsingReduce 101 101 +0.0% 1.00x
SumUsingReduceInto 101 101 +0.0% 1.00x
SuperChars 18980 19013 +0.2% 1.00x (?)
TwoSum 1348 1344 -0.3% 1.00x (?)
TypeFlood 0 0 +0.0% 1.00x
UTF8Decode 302 302 +0.0% 1.00x
UTF8Decode_InitDecoding 1339 1342 +0.2% 1.00x (?)
UTF8Decode_InitDecoding_ascii 653 652 -0.2% 1.00x (?)
UTF8Decode_InitFromBytes 1186 1189 +0.3% 1.00x (?)
UTF8Decode_InitFromBytes_ascii 473 493 +4.2% 0.96x (?)
UTF8Decode_InitFromData 1271 1276 +0.4% 1.00x (?)
UTF8Decode_InitFromData_ascii 672 703 +4.6% 0.96x (?)
Walsh 393 400 +1.8% 0.98x
WordCountHistogramASCII 6955 6966 +0.2% 1.00x (?)
WordCountHistogramUTF16 10131 10120 -0.1% 1.00x (?)
WordCountUniqueASCII 2083 2094 +0.5% 0.99x (?)
WordCountUniqueUTF16 4573 4540 -0.7% 1.01x (?)
XorLoop 394 388 -1.5% 1.02x (?)

Unoptimized (Onone)

Regression (12)
TEST OLD NEW DELTA SPEEDUP
DictionaryBridgeToObjC_Access 1409 1744 +23.8% 0.81x (?)
CharIndexing_punctuated_unicodeScalars_Backwards 87633 95599 +9.1% 0.92x
CharIndexing_chinese_unicodeScalars_Backwards 299717 326143 +8.8% 0.92x (?)
UTF8Decode_InitFromData_ascii 683 739 +8.2% 0.92x (?)
CharIndexing_russian_unicodeScalars_Backwards 332087 358592 +8.0% 0.93x (?)
CSVParsingAlt2 3055 3271 +7.1% 0.93x (?)
Combos 2457 2626 +6.9% 0.94x (?)
StrComplexWalk 6829 7266 +6.4% 0.94x
RandomDoubleDef 89895 95461 +6.2% 0.94x (?)
ArrayPlusEqualThreeElements 9403 9928 +5.6% 0.95x (?)
CharIndexing_japanese_unicodeScalars 375929 396837 +5.6% 0.95x (?)
StringBuilderSmallReservingCapacity 4977 5250 +5.5% 0.95x (?)
Improvement (8)
TEST OLD NEW DELTA SPEEDUP
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 51045 45518 -10.8% 1.12x
DataReplaceMediumBuffer 12741 11801 -7.4% 1.08x (?)
CharIndexing_utf16_unicodeScalars 305972 284558 -7.0% 1.08x (?)
CharIndexing_chinese_unicodeScalars 267780 250407 -6.5% 1.07x (?)
StringComparison_abnormal 1483 1391 -6.2% 1.07x (?)
DataAppendDataSmallToSmall 6100 5726 -6.1% 1.07x (?)
StringBuilder 5288 4977 -5.9% 1.06x (?)
DropLastAnyCollectionLazy 36263 34299 -5.4% 1.06x (?)
No Changes (454)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 5019 5007 -0.2% 1.00x (?)
AnyHashableWithAClass 105966 106061 +0.1% 1.00x (?)
Array2D 460604 460310 -0.1% 1.00x (?)
ArrayAppend 4451 4455 +0.1% 1.00x (?)
ArrayAppendArrayOfInt 869 868 -0.1% 1.00x (?)
ArrayAppendAscii 26316 26423 +0.4% 1.00x (?)
ArrayAppendAsciiSubstring 71164 71233 +0.1% 1.00x (?)
ArrayAppendFromGeneric 876 874 -0.2% 1.00x (?)
ArrayAppendGenericStructs 1522 1503 -1.2% 1.01x (?)
ArrayAppendLatin1 62707 62650 -0.1% 1.00x (?)
ArrayAppendLatin1Substring 159063 158520 -0.3% 1.00x (?)
ArrayAppendLazyMap 164215 164388 +0.1% 1.00x (?)
ArrayAppendOptionals 1523 1506 -1.1% 1.01x (?)
ArrayAppendRepeatCol 188525 189517 +0.5% 0.99x
ArrayAppendReserved 4160 4160 +0.0% 1.00x
ArrayAppendSequence 100478 100180 -0.3% 1.00x (?)
ArrayAppendStrings 6345 6341 -0.1% 1.00x (?)
ArrayAppendToFromGeneric 879 878 -0.1% 1.00x (?)
ArrayAppendToGeneric 880 881 +0.1% 1.00x (?)
ArrayAppendUTF16 63995 63658 -0.5% 1.01x (?)
ArrayAppendUTF16Substring 157772 162674 +3.1% 0.97x (?)
ArrayInClass 4830 4830 +0.0% 1.00x
ArrayLiteral 1584 1585 +0.1% 1.00x (?)
ArrayOfGenericPOD2 1070 1068 -0.2% 1.00x (?)
ArrayOfGenericRef 10230 10253 +0.2% 1.00x (?)
ArrayOfPOD 784 782 -0.3% 1.00x (?)
ArrayOfRef 9430 9434 +0.0% 1.00x (?)
ArrayPlusEqualArrayOfInt 873 877 +0.5% 1.00x (?)
ArrayPlusEqualFiveElementCollection 225631 226143 +0.2% 1.00x (?)
ArrayPlusEqualSingleElementCollection 224603 221930 -1.2% 1.01x (?)
ArraySubscript 107611 106274 -1.2% 1.01x
ArrayValueProp 3212 3217 +0.2% 1.00x (?)
ArrayValueProp2 14521 14493 -0.2% 1.00x (?)
ArrayValueProp3 3731 3731 +0.0% 1.00x
ArrayValueProp4 3686 3683 -0.1% 1.00x (?)
BinaryFloatingPointPropertiesBinade 91 88 -3.3% 1.03x
BinaryFloatingPointPropertiesNextUp 134 133 -0.7% 1.01x
BinaryFloatingPointPropertiesUlp 135 129 -4.4% 1.05x
BitCount 8832 8832 +0.0% 1.00x
ByteSwap 9802 9784 -0.2% 1.00x (?)
COWArrayGuaranteedParameterOverhead 14812 15332 +3.5% 0.97x (?)
COWTree 11867 11850 -0.1% 1.00x (?)
CSVParsing2 7266 6986 -3.9% 1.04x (?)
CSVParsingAltIndices2 6110 5956 -2.5% 1.03x (?)
CStringLongAscii 3363 3372 +0.3% 1.00x (?)
CStringLongNonAscii 2294 2268 -1.1% 1.01x (?)
CStringShortAscii 6019 6000 -0.3% 1.00x (?)
Calculator 1101 1123 +2.0% 0.98x
CaptureProp 284281 285061 +0.3% 1.00x
ChainedFilterMap 231004 229370 -0.7% 1.01x (?)
CharIndexing_ascii_unicodeScalars 320201 335730 +4.8% 0.95x (?)
CharIndexing_ascii_unicodeScalars_Backwards 388395 406215 +4.6% 0.96x (?)
CharIndexing_japanese_unicodeScalars_Backwards 478615 491303 +2.7% 0.97x (?)
CharIndexing_korean_unicodeScalars 303659 315913 +4.0% 0.96x (?)
CharIndexing_korean_unicodeScalars_Backwards 387219 398910 +3.0% 0.97x (?)
CharIndexing_punctuatedJapanese_unicodeScalars 55627 58343 +4.9% 0.95x (?)
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 69621 71205 +2.3% 0.98x (?)
CharIndexing_punctuated_unicodeScalars 70831 74084 +4.6% 0.96x (?)
CharIndexing_russian_unicodeScalars 261702 274732 +5.0% 0.95x (?)
CharIndexing_tweet_unicodeScalars 674647 652214 -3.3% 1.03x (?)
CharIndexing_tweet_unicodeScalars_Backwards 773774 801960 +3.6% 0.96x (?)
CharIndexing_utf16_unicodeScalars_Backwards 333688 339754 +1.8% 0.98x (?)
CharIteration_ascii_unicodeScalars 147608 147097 -0.3% 1.00x (?)
CharIteration_ascii_unicodeScalars_Backwards 276974 275686 -0.5% 1.00x (?)
CharIteration_chinese_unicodeScalars 111461 111065 -0.4% 1.00x (?)
CharIteration_chinese_unicodeScalars_Backwards 208781 207349 -0.7% 1.01x (?)
CharIteration_japanese_unicodeScalars 176381 176202 -0.1% 1.00x (?)
CharIteration_japanese_unicodeScalars_Backwards 330150 327981 -0.7% 1.01x (?)
CharIteration_korean_unicodeScalars 143020 141736 -0.9% 1.01x
CharIteration_korean_unicodeScalars_Backwards 268085 265475 -1.0% 1.01x
CharIteration_punctuatedJapanese_unicodeScalars 26339 26302 -0.1% 1.00x (?)
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 48082 47660 -0.9% 1.01x (?)
CharIteration_punctuated_unicodeScalars 33050 33031 -0.1% 1.00x (?)
CharIteration_punctuated_unicodeScalars_Backwards 60725 60066 -1.1% 1.01x (?)
CharIteration_russian_unicodeScalars 122694 122160 -0.4% 1.00x (?)
CharIteration_russian_unicodeScalars_Backwards 230646 227542 -1.3% 1.01x (?)
CharIteration_tweet_unicodeScalars 291630 290625 -0.3% 1.00x (?)
CharIteration_tweet_unicodeScalars_Backwards 596004 570745 -4.2% 1.04x (?)
CharIteration_utf16_unicodeScalars 125333 125437 +0.1% 1.00x (?)
CharIteration_utf16_unicodeScalars_Backwards 236440 235573 -0.4% 1.00x (?)
CharacterLiteralsLarge 5760 5773 +0.2% 1.00x (?)
CharacterLiteralsSmall 726 702 -3.3% 1.03x
CharacterPropertiesFetch 5432 5682 +4.6% 0.96x (?)
CharacterPropertiesPrecomputed 2884 2879 -0.2% 1.00x (?)
CharacterPropertiesStashed 2590 2594 +0.2% 1.00x (?)
CharacterPropertiesStashedMemo 3955 3973 +0.5% 1.00x (?)
Chars2 35471 37070 +4.5% 0.96x (?)
ClassArrayGetter2 9446 9438 -0.1% 1.00x (?)
DataAccessBytes 2360 2366 +0.3% 1.00x (?)
DataAppendArray 5511 5398 -2.1% 1.02x (?)
DataAppendBytes 5412 5407 -0.1% 1.00x (?)
DataAppendDataLargeToLarge 69661 69373 -0.4% 1.00x (?)
DataAppendDataLargeToMedium 35945 35680 -0.7% 1.01x (?)
DataAppendDataLargeToSmall 34402 34268 -0.4% 1.00x (?)
DataAppendDataMediumToLarge 37930 37888 -0.1% 1.00x (?)
DataAppendDataMediumToMedium 6933 6680 -3.6% 1.04x (?)
DataAppendDataMediumToSmall 6090 6018 -1.2% 1.01x (?)
DataAppendDataSmallToLarge 37261 36975 -0.8% 1.01x (?)
DataAppendDataSmallToMedium 6445 6217 -3.5% 1.04x (?)
DataAppendSequence 1969107 1959785 -0.5% 1.00x
DataCopyBytes 544 543 -0.2% 1.00x
DataCount 225 223 -0.9% 1.01x
DataMutateBytes 5180 5221 +0.8% 0.99x (?)
DataReplaceLarge 37207 36592 -1.7% 1.02x (?)
DataReplaceLargeBuffer 58728 59198 +0.8% 0.99x (?)
DataReplaceMedium 8096 8078 -0.2% 1.00x (?)
DataReplaceSmall 5877 5697 -3.1% 1.03x (?)
DataReplaceSmallBuffer 9782 9745 -0.4% 1.00x (?)
DataReset 2892 2889 -0.1% 1.00x (?)
DataSetCount 563 564 +0.2% 1.00x (?)
DataSubscript 443 443 +0.0% 1.00x
DictOfArraysToArrayOfDicts 3844 3881 +1.0% 0.99x (?)
Dictionary 2360 2359 -0.0% 1.00x (?)
Dictionary2 1282 1279 -0.2% 1.00x (?)
Dictionary2OfObjects 4201 4341 +3.3% 0.97x (?)
Dictionary3 803 803 +0.0% 1.00x
Dictionary3OfObjects 2123 2024 -4.7% 1.05x (?)
Dictionary4 1164 1158 -0.5% 1.01x (?)
Dictionary4Legacy 1423 1423 +0.0% 1.00x
Dictionary4OfObjects 1793 1795 +0.1% 1.00x (?)
Dictionary4OfObjectsLegacy 2038 2022 -0.8% 1.01x (?)
DictionaryBridge 1604 1648 +2.7% 0.97x (?)
DictionaryBridgeToObjC_Bridge 19 19 +0.0% 1.00x
DictionaryBridgeToObjC_BulkAccess 164 166 +1.2% 0.99x (?)
DictionaryCompactMapValuesOfCastValue 118975 118942 -0.0% 1.00x (?)
DictionaryCompactMapValuesOfNilValue 32536 32337 -0.6% 1.01x (?)
DictionaryCopy 297683 298866 +0.4% 1.00x (?)
DictionaryFilter 295837 297694 +0.6% 0.99x (?)
DictionaryGroup 4435 4438 +0.1% 1.00x (?)
DictionaryGroupOfObjects 6766 6799 +0.5% 1.00x (?)
DictionaryKeysContainsCocoa 65 63 -3.1% 1.03x (?)
DictionaryKeysContainsNative 51 51 +0.0% 1.00x
DictionaryLiteral 8104 8116 +0.1% 1.00x (?)
DictionaryOfObjects 6580 6356 -3.4% 1.04x (?)
DictionaryRemove 17648 17391 -1.5% 1.01x (?)
DictionaryRemoveOfObjects 52959 53220 +0.5% 1.00x (?)
DictionarySubscriptDefaultMutation 1729 1731 +0.1% 1.00x (?)
DictionarySubscriptDefaultMutationArray 2008 1998 -0.5% 1.01x (?)
DictionarySubscriptDefaultMutationArrayOfObjects 9193 9242 +0.5% 0.99x (?)
DictionarySubscriptDefaultMutationOfObjects 5104 5175 +1.4% 0.99x (?)
DictionarySwap 4614 4616 +0.0% 1.00x (?)
DictionarySwapAt 32742 32510 -0.7% 1.01x (?)
DictionarySwapAtOfObjects 114079 113396 -0.6% 1.01x (?)
DictionarySwapOfObjects 18935 19187 +1.3% 0.99x (?)
DoubleWidthDivision 0 0 +0.0% 1.00x
DropFirstAnyCollection 16459 16333 -0.8% 1.01x
DropFirstAnyCollectionLazy 104594 109855 +5.0% 0.95x (?)
DropFirstAnySeqCRangeIter 25081 25193 +0.4% 1.00x (?)
DropFirstAnySeqCRangeIterLazy 25180 25249 +0.3% 1.00x (?)
DropFirstAnySeqCntRange 16409 16367 -0.3% 1.00x (?)
DropFirstAnySeqCntRangeLazy 16311 16217 -0.6% 1.01x (?)
DropFirstAnySequence 12339 12381 +0.3% 1.00x (?)
DropFirstAnySequenceLazy 12336 12402 +0.5% 0.99x (?)
DropFirstArray 3648 3630 -0.5% 1.00x
DropFirstArrayLazy 35784 36704 +2.6% 0.97x
DropFirstCountableRange 353 354 +0.3% 1.00x (?)
DropFirstCountableRangeLazy 35806 35953 +0.4% 1.00x
DropFirstSequence 11830 11963 +1.1% 0.99x
DropFirstSequenceLazy 11873 11939 +0.6% 0.99x
DropLastAnyCollection 5492 5449 -0.8% 1.01x
DropLastAnySeqCRangeIter 39727 39793 +0.2% 1.00x (?)
DropLastAnySeqCRangeIterLazy 39552 39593 +0.1% 1.00x (?)
DropLastAnySeqCntRange 5474 5430 -0.8% 1.01x (?)
DropLastAnySeqCntRangeLazy 5453 5417 -0.7% 1.01x (?)
DropLastAnySequence 28678 28583 -0.3% 1.00x (?)
DropLastAnySequenceLazy 28405 28466 +0.2% 1.00x (?)
DropLastSequence 28344 28393 +0.2% 1.00x (?)
DropLastSequenceLazy 28356 28331 -0.1% 1.00x (?)
DropWhileAnyCollection 20788 20663 -0.6% 1.01x (?)
DropWhileAnyCollectionLazy 23759 23769 +0.0% 1.00x (?)
DropWhileAnySeqCRangeIter 26105 26313 +0.8% 0.99x (?)
DropWhileAnySeqCRangeIterLazy 23602 23603 +0.0% 1.00x (?)
DropWhileAnySeqCntRange 20811 20748 -0.3% 1.00x (?)
DropWhileAnySeqCntRangeLazy 23696 23724 +0.1% 1.00x (?)
DropWhileAnySequence 13274 13153 -0.9% 1.01x (?)
DropWhileAnySequenceLazy 11950 11988 +0.3% 1.00x (?)
DropWhileArrayLazy 13450 13461 +0.1% 1.00x (?)
DropWhileCountableRange 5036 5023 -0.3% 1.00x
DropWhileCountableRangeLazy 22539 22551 +0.1% 1.00x (?)
DropWhileSequence 12840 12711 -1.0% 1.01x (?)
DropWhileSequenceLazy 11480 11523 +0.4% 1.00x (?)
EqualStringSubstring 71 71 +0.0% 1.00x
EqualSubstringString 72 71 -1.4% 1.01x
EqualSubstringSubstring 74 72 -2.7% 1.03x (?)
EqualSubstringSubstringGenericEquatable 58 59 +1.7% 0.98x
ErrorHandling 5260 5231 -0.6% 1.01x (?)
ExclusivityGlobal 191 191 +0.0% 1.00x
ExclusivityIndependent 72 72 +0.0% 1.00x
FatCompactMap 286233 287006 +0.3% 1.00x (?)
FilterEvenUsingReduce 3576 3592 +0.4% 1.00x (?)
FilterEvenUsingReduceInto 1838 1844 +0.3% 1.00x (?)
FloatingPointPrinting_Double_description_small 22469 22510 +0.2% 1.00x (?)
FloatingPointPrinting_Double_description_uniform 33870 33967 +0.3% 1.00x (?)
FloatingPointPrinting_Double_interpolated 90826 91292 +0.5% 0.99x (?)
FloatingPointPrinting_Float80_description_small 29875 29799 -0.3% 1.00x (?)
FloatingPointPrinting_Float80_description_uniform 56322 56283 -0.1% 1.00x (?)
FloatingPointPrinting_Float80_interpolated 111462 111010 -0.4% 1.00x (?)
FloatingPointPrinting_Float_description_small 6729 6727 -0.0% 1.00x (?)
FloatingPointPrinting_Float_description_uniform 17787 17794 +0.0% 1.00x (?)
FloatingPointPrinting_Float_interpolated 65292 65109 -0.3% 1.00x (?)
FrequenciesUsingReduce 10977 11227 +2.3% 0.98x (?)
FrequenciesUsingReduceInto 3526 3585 +1.7% 0.98x (?)
Hanoi 19514 19714 +1.0% 0.99x
HashTest 19825 19827 +0.0% 1.00x (?)
Histogram 6732 6742 +0.1% 1.00x (?)
Integrate 587 587 +0.0% 1.00x
IterateData 4993 4983 -0.2% 1.00x (?)
Join 181 179 -1.1% 1.01x
LazilyFilteredArrayContains 733235 735618 +0.3% 1.00x
LazilyFilteredArrays2 90297 90325 +0.0% 1.00x (?)
LazilyFilteredRange 551196 550456 -0.1% 1.00x (?)
LessSubstringSubstring 72 72 +0.0% 1.00x
LessSubstringSubstringGenericComparable 57 56 -1.8% 1.02x
LinkedList 32512 32524 +0.0% 1.00x (?)
LuhnAlgoEager 5812 5946 +2.3% 0.98x (?)
LuhnAlgoLazy 5972 5920 -0.9% 1.01x (?)
MapReduce 24894 24941 +0.2% 1.00x (?)
MapReduceAnyCollection 24886 24941 +0.2% 1.00x (?)
MapReduceAnyCollectionShort 37976 36875 -2.9% 1.03x (?)
MapReduceClass 29126 29034 -0.3% 1.00x
MapReduceClassShort 39698 41083 +3.5% 0.97x (?)
MapReduceLazyCollection 21955 21972 +0.1% 1.00x (?)
MapReduceLazyCollectionShort 33734 33594 -0.4% 1.00x (?)
MapReduceLazySequence 19654 19843 +1.0% 0.99x
MapReduceSequence 30003 30015 +0.0% 1.00x (?)
MapReduceShort 37017 37551 +1.4% 0.99x (?)
MapReduceShortString 221 222 +0.5% 1.00x (?)
MapReduceString 1722 1717 -0.3% 1.00x (?)
Memset 25340 25342 +0.0% 1.00x (?)
MonteCarloE 1143982 1127797 -1.4% 1.01x
MonteCarloPi 5254777 5165428 -1.7% 1.02x
NSDictionaryCastToSwift 7839 8241 +5.1% 0.95x (?)
NSError 618 619 +0.2% 1.00x (?)
NSStringConversion 712 737 +3.5% 0.97x
NibbleSort 369107 368022 -0.3% 1.00x (?)
NopDeinit 198564 198278 -0.1% 1.00x (?)
ObjectAllocation 1264 1243 -1.7% 1.02x (?)
ObjectiveCBridgeFromNSArrayAnyObject 28259 28287 +0.1% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 8925 9071 +1.6% 0.98x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 48452 47812 -1.3% 1.01x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 109577 109597 +0.0% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObject 49871 48411 -2.9% 1.03x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 4625 4432 -4.2% 1.04x (?)
ObjectiveCBridgeFromNSSetAnyObjectToString 73870 70859 -4.1% 1.04x (?)
ObjectiveCBridgeFromNSString 2920 2917 -0.1% 1.00x (?)
ObjectiveCBridgeFromNSStringForced 2592 2603 +0.4% 1.00x (?)
ObjectiveCBridgeStubDataAppend 6737 6517 -3.3% 1.03x (?)
ObjectiveCBridgeStubDateMutation 718 746 +3.9% 0.96x
ObjectiveCBridgeStubFromArrayOfNSString2 3513 3564 +1.5% 0.99x (?)
ObjectiveCBridgeStubFromNSString 1057 1060 +0.3% 1.00x (?)
ObjectiveCBridgeStubNSDataAppend 3019 3009 -0.3% 1.00x (?)
ObjectiveCBridgeStubToArrayOfNSString2 3927 3944 +0.4% 1.00x (?)
ObjectiveCBridgeStubToNSDate2 1662 1600 -3.7% 1.04x (?)
ObjectiveCBridgeStubToNSString 2415 2431 +0.7% 0.99x (?)
ObjectiveCBridgeStubToNSStringRef 151 150 -0.7% 1.01x
ObjectiveCBridgeStubURLAppendPath2 2859 2856 -0.1% 1.00x (?)
ObjectiveCBridgeStubURLAppendPathRef2 2920 2880 -1.4% 1.01x (?)
ObjectiveCBridgeToNSArray 15063 15013 -0.3% 1.00x (?)
ObjectiveCBridgeToNSDictionary 29468 28646 -2.8% 1.03x (?)
ObjectiveCBridgeToNSSet 18593 19177 +3.1% 0.97x (?)
ObjectiveCBridgeToNSString 541 541 +0.0% 1.00x
ObserverClosure 6375 6376 +0.0% 1.00x (?)
ObserverForwarderStruct 4133 4157 +0.6% 0.99x (?)
ObserverPartiallyAppliedMethod 7836 7860 +0.3% 1.00x (?)
ObserverUnappliedMethod 7840 7861 +0.3% 1.00x (?)
OpaqueConsumingUsers 13405 13403 -0.0% 1.00x (?)
OpenClose 572 572 +0.0% 1.00x
Phonebook 16425 16426 +0.0% 1.00x (?)
PointerArithmetics 418045 411082 -1.7% 1.02x
PolymorphicCalls 2414 2415 +0.0% 1.00x (?)
PopFrontArray 4512 4559 +1.0% 0.99x
PopFrontArrayGeneric 5611 5639 +0.5% 1.00x (?)
PopFrontUnsafePointer 12808 12968 +1.2% 0.99x (?)
PrefixAnyCollection 16359 16310 -0.3% 1.00x (?)
PrefixAnyCollectionLazy 104070 104402 +0.3% 1.00x (?)
PrefixAnySeqCRangeIter 19977 20225 +1.2% 0.99x
PrefixAnySeqCRangeIterLazy 19890 20217 +1.6% 0.98x
PrefixAnySeqCntRange 16459 16327 -0.8% 1.01x
PrefixAnySeqCntRangeLazy 16305 16235 -0.4% 1.00x (?)
PrefixAnySequence 9953 10054 +1.0% 0.99x (?)
PrefixAnySequenceLazy 10007 10046 +0.4% 1.00x (?)
PrefixArray 3538 3476 -1.8% 1.02x
PrefixArrayLazy 35952 36816 +2.4% 0.98x (?)
PrefixCountableRange 352 352 +0.0% 1.00x
PrefixCountableRangeLazy 35774 35933 +0.4% 1.00x
PrefixSequence 9685 9689 +0.0% 1.00x (?)
PrefixSequenceLazy 9568 9635 +0.7% 0.99x (?)
PrefixWhileAnyCollection 30100 30240 +0.5% 1.00x (?)
PrefixWhileAnyCollectionLazy 19695 19711 +0.1% 1.00x (?)
PrefixWhileAnySeqCRangeIter 33713 33783 +0.2% 1.00x (?)
PrefixWhileAnySeqCRangeIterLazy 19547 19607 +0.3% 1.00x (?)
PrefixWhileAnySequence 25393 25474 +0.3% 1.00x (?)
PrefixWhileAnySequenceLazy 10637 10787 +1.4% 0.99x
PrefixWhileArray 10323 10307 -0.2% 1.00x
PrefixWhileArrayLazy 11785 11907 +1.0% 0.99x (?)
PrefixWhileSequence 25061 25164 +0.4% 1.00x (?)
PrefixWhileSequenceLazy 10255 10416 +1.6% 0.98x (?)
Prims 8478 8451 -0.3% 1.00x (?)
PrimsSplit 8440 8446 +0.1% 1.00x (?)
QueueConcrete 13903 13993 +0.6% 0.99x (?)
QueueGeneric 19134 18786 -1.8% 1.02x (?)
RC4 12983 13277 +2.3% 0.98x (?)
RGBHistogram 23657 23561 -0.4% 1.00x (?)
RGBHistogramOfObjects 74307 73532 -1.0% 1.01x (?)
Radix2CooleyTukey 47207 47266 +0.1% 1.00x (?)
Radix2CooleyTukeyf 40845 41021 +0.4% 1.00x (?)
RandomDoubleLCG 55806 56949 +2.0% 0.98x (?)
RandomIntegersDef 43879 43836 -0.1% 1.00x (?)
RandomIntegersLCG 32906 32587 -1.0% 1.01x (?)
RandomShuffleDef2 6740 6746 +0.1% 1.00x (?)
RandomShuffleLCG2 48225 48191 -0.1% 1.00x (?)
RangeAssignment 2790 2810 +0.7% 0.99x (?)
RangeIterationSigned 14870 14575 -2.0% 1.02x
RangeReplaceableCollectionPlusDefault 11837 11489 -2.9% 1.03x (?)
RecursiveOwnedParameter 6046 6056 +0.2% 1.00x (?)
RemoveWhereFilterInts 2005 2007 +0.1% 1.00x (?)
RemoveWhereFilterString 1297 1298 +0.1% 1.00x (?)
RemoveWhereFilterStrings 2522 2524 +0.1% 1.00x (?)
RemoveWhereMoveInts 3120 3123 +0.1% 1.00x
RemoveWhereMoveStrings 3667 3665 -0.1% 1.00x (?)
RemoveWhereQuadraticInts 8222 8225 +0.0% 1.00x (?)
RemoveWhereQuadraticString 2458 2468 +0.4% 1.00x (?)
RemoveWhereQuadraticStrings 9866 9865 -0.0% 1.00x (?)
RemoveWhereSwapInts 5575 5575 +0.0% 1.00x
RemoveWhereSwapStrings 6256 6257 +0.0% 1.00x (?)
ReversedArray2 14021 14032 +0.1% 1.00x (?)
ReversedBidirectional 43453 43478 +0.1% 1.00x (?)
ReversedDictionary2 15416 15534 +0.8% 0.99x
RomanNumbers 1356900 1390786 +2.5% 0.98x
SequenceAlgosAnySequence 13550 13474 -0.6% 1.01x
SequenceAlgosArray 730838 730858 +0.0% 1.00x (?)
SequenceAlgosContiguousArray 312962 305805 -2.3% 1.02x
SequenceAlgosList 8633 8630 -0.0% 1.00x (?)
SequenceAlgosRange 1319438 1315540 -0.3% 1.00x (?)
SequenceAlgosUnfoldSequence 6356 6347 -0.1% 1.00x (?)
SetExclusiveOr 13064 12991 -0.6% 1.01x (?)
SetExclusiveOr_OfObjects 38456 38621 +0.4% 1.00x (?)
SetIntersect 3859 3870 +0.3% 1.00x (?)
SetIntersectionBox0 821 819 -0.2% 1.00x (?)
SetIntersectionBox25 1364 1365 +0.1% 1.00x (?)
SetIntersectionInt0 387 386 -0.3% 1.00x (?)
SetIntersectionInt100 1091 1086 -0.5% 1.00x (?)
SetIntersectionInt25 584 583 -0.2% 1.00x (?)
SetIntersectionInt50 750 749 -0.1% 1.00x (?)
SetIsSubsetBox0 1024 1017 -0.7% 1.01x (?)
SetIsSubsetBox25 1175 1171 -0.3% 1.00x (?)
SetIsSubsetInt0 735 734 -0.1% 1.00x (?)
SetIsSubsetInt100 1851 1847 -0.2% 1.00x (?)
SetIsSubsetInt25 490 488 -0.4% 1.00x (?)
SetIsSubsetInt50 975 970 -0.5% 1.01x (?)
SetSubtractingBox0 891 893 +0.2% 1.00x (?)
SetSubtractingBox25 1252 1264 +1.0% 0.99x (?)
SetSubtractingInt0 512 512 +0.0% 1.00x
SetSubtractingInt100 870 864 -0.7% 1.01x
SetSubtractingInt25 685 682 -0.4% 1.00x (?)
SetSubtractingInt50 753 749 -0.5% 1.01x (?)
SetSymmetricDifferenceBox0 3845 3861 +0.4% 1.00x (?)
SetSymmetricDifferenceBox25 2284 2283 -0.0% 1.00x (?)
SetSymmetricDifferenceInt0 1306 1299 -0.5% 1.01x
SetSymmetricDifferenceInt100 1089 1082 -0.6% 1.01x (?)
SetSymmetricDifferenceInt25 973 969 -0.4% 1.00x (?)
SetSymmetricDifferenceInt50 1005 998 -0.7% 1.01x (?)
SetUnion 10487 10501 +0.1% 1.00x (?)
SetUnionBox0 2828 2856 +1.0% 0.99x (?)
SetUnionBox25 1486 1499 +0.9% 0.99x (?)
SetUnionInt0 1016 1023 +0.7% 0.99x
SetUnionInt100 434 448 +3.2% 0.97x
SetUnionInt25 650 661 +1.7% 0.98x
SetUnionInt50 614 627 +2.1% 0.98x (?)
SetUnion_OfObjects 28272 28554 +1.0% 0.99x (?)
SevenBoom 1050 1050 +0.0% 1.00x
Sim2DArray 30589 30603 +0.0% 1.00x (?)
SortAdjacentIntPyramids 201326 201626 +0.1% 1.00x (?)
SortIntPyramid 236866 237574 +0.3% 1.00x (?)
SortLargeExistentials 9967 9997 +0.3% 1.00x (?)
SortLettersInPlace 1590 1587 -0.2% 1.00x (?)
SortSortedStrings 882 884 +0.2% 1.00x (?)
SortStrings 1842 1843 +0.1% 1.00x (?)
SortStringsUnicode 2750 2735 -0.5% 1.01x
StackPromo 95030 94843 -0.2% 1.00x (?)
StaticArray 2287 2282 -0.2% 1.00x (?)
StrToInt 77754 78518 +1.0% 0.99x (?)
StringAdder 768 802 +4.4% 0.96x
StringBuilderLong 1474 1434 -2.7% 1.03x (?)
StringBuilderWithLongSubstring 3172 3147 -0.8% 1.01x (?)
StringComparison_ascii 9361 9324 -0.4% 1.00x (?)
StringComparison_emoji 2016 2061 +2.2% 0.98x (?)
StringComparison_fastPrenormal 4922 4908 -0.3% 1.00x
StringComparison_latin1 3840 3834 -0.2% 1.00x (?)
StringComparison_longSharedPrefix 2384 2383 -0.0% 1.00x (?)
StringComparison_nonBMPSlowestPrenormal 3798 3814 +0.4% 1.00x (?)
StringComparison_slowerPrenormal 4190 4182 -0.2% 1.00x (?)
StringComparison_zalgo 114773 114253 -0.5% 1.00x (?)
StringEdits 380619 383344 +0.7% 0.99x (?)
StringEnumRawValueInitialization 22827 23117 +1.3% 0.99x (?)
StringEqualPointerComparison 1745 1746 +0.1% 1.00x (?)
StringFromLongWholeSubstring 22 22 +0.0% 1.00x
StringFromLongWholeSubstringGeneric 194 194 +0.0% 1.00x
StringHasPrefixAscii 3291 3258 -1.0% 1.01x
StringHasPrefixUnicode 99652 99009 -0.6% 1.01x (?)
StringHasSuffixAscii 3339 3314 -0.7% 1.01x
StringHasSuffixUnicode 100962 101224 +0.3% 1.00x (?)
StringHashing_abnormal 1411 1418 +0.5% 1.00x (?)
StringHashing_ascii 210 210 +0.0% 1.00x
StringHashing_emoji 2059 2066 +0.3% 1.00x (?)
StringHashing_fastPrenormal 8497 8462 -0.4% 1.00x (?)
StringHashing_latin1 2762 2743 -0.7% 1.01x (?)
StringHashing_longSharedPrefix 7742 7699 -0.6% 1.01x (?)
StringHashing_nonBMPSlowestPrenormal 2287 2300 +0.6% 0.99x (?)
StringHashing_slowerPrenormal 2887 2883 -0.1% 1.00x (?)
StringHashing_zalgo 3545 3575 +0.8% 0.99x (?)
StringInterpolation 11921 11649 -2.3% 1.02x (?)
StringInterpolationManySmallSegments 18115 17708 -2.2% 1.02x (?)
StringInterpolationSmall 5781 5768 -0.2% 1.00x (?)
StringMatch 39708 40299 +1.5% 0.99x (?)
StringRemoveDupes 864 903 +4.5% 0.96x
StringUTF16Builder 7820 7665 -2.0% 1.02x (?)
StringUTF16SubstringBuilder 20733 20753 +0.1% 1.00x (?)
StringWalk 13346 13245 -0.8% 1.01x (?)
StringWithCString2 1692 1692 +0.0% 1.00x
StringWordBuilder 2486 2514 +1.1% 0.99x
StringWordBuilderReservingCapacity 1917 1859 -3.0% 1.03x
SubstringComparable 1572 1568 -0.3% 1.00x (?)
SubstringEqualString 1751 1717 -1.9% 1.02x (?)
SubstringEquatable 5255 5246 -0.2% 1.00x (?)
SubstringFromLongString 15 15 +0.0% 1.00x
SubstringFromLongStringGeneric 103 103 +0.0% 1.00x
SuffixAnyCollection 5482 5417 -1.2% 1.01x
SuffixAnyCollectionLazy 34538 36284 +5.1% 0.95x (?)
SuffixAnySeqCRangeIter 34718 34749 +0.1% 1.00x (?)
SuffixAnySeqCRangeIterLazy 34807 34895 +0.3% 1.00x
SuffixAnySeqCntRange 5427 5386 -0.8% 1.01x (?)
SuffixAnySeqCntRangeLazy 5479 5432 -0.9% 1.01x (?)
SuffixAnySequence 23749 23845 +0.4% 1.00x (?)
SuffixAnySequenceLazy 23802 23837 +0.1% 1.00x (?)
SuffixSequence 23627 23667 +0.2% 1.00x (?)
SuffixSequenceLazy 23722 23840 +0.5% 1.00x (?)
SumUsingReduce 155599 155538 -0.0% 1.00x (?)
SumUsingReduceInto 148865 148700 -0.1% 1.00x
SuperChars 86392 87035 +0.7% 0.99x (?)
TwoSum 3702 3666 -1.0% 1.01x (?)
TypeFlood 188 184 -2.1% 1.02x (?)
UTF8Decode 28753 28862 +0.4% 1.00x
UTF8Decode_InitDecoding 1436 1431 -0.3% 1.00x (?)
UTF8Decode_InitDecoding_ascii 969 923 -4.7% 1.05x (?)
UTF8Decode_InitFromBytes 1214 1194 -1.6% 1.02x (?)
UTF8Decode_InitFromBytes_ascii 494 511 +3.4% 0.97x (?)
UTF8Decode_InitFromData 1264 1294 +2.4% 0.98x (?)
Walsh 7433 7436 +0.0% 1.00x (?)
WordCountHistogramASCII 38656 38939 +0.7% 0.99x (?)
WordCountHistogramUTF16 43993 43816 -0.4% 1.00x (?)
WordCountUniqueASCII 8229 8256 +0.3% 1.00x (?)
WordCountUniqueUTF16 9532 9514 -0.2% 1.00x (?)
XorLoop 13334 13339 +0.0% 1.00x (?)
Hardware Overview
  Model Name: Mac Pro
  Model Identifier: MacPro6,1
  Processor Name: 12-Core Intel Xeon E5
  Processor Speed: 2.7 GHz
  Number of Processors: 1
  Total Number of Cores: 12
  L2 Cache (per Core): 256 KB
  L3 Cache: 30 MB
  Memory: 64 GB

… existential that returns Self.

Delay allocating the result buffer for an opened Self return until right before it's needed. When a mutating method is invoked on an existential, the Self type won't be opened until late, when the formal access to the mutable value begins. Fixes rdar://problem/43507711.
@jckarter jckarter force-pushed the mutating-opened-existential-covariant-return branch from c32f5c8 to 7f14a3b Compare August 28, 2018 16:56
@jckarter
Copy link
Contributor Author

@swift-ci Please test

@swift-ci
Copy link
Contributor

Build failed
Swift Test OS X Platform
Git Sha - c32f5c878938ce326b1cfbf2775b94f79bee9a43

@swift-ci
Copy link
Contributor

Build failed
Swift Test Linux Platform
Git Sha - c32f5c878938ce326b1cfbf2775b94f79bee9a43

@jckarter
Copy link
Contributor Author

@swift-ci Please test Linux

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.

4 participants