Skip to content

SILGen: Ease off +0 peepholes for load exprs. #11026

New issue

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

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

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 19, 2017

Conversation

jckarter
Copy link
Contributor

Now that we more tightly close formal accesses on lvalues, having LoadExpr and friends try to return a +0 loaded value is unsafe without deeper analysis, since the access will be closed immediately after the load and potentially free temporary memory that might be the only thing keeping the borrowed object alive. Fixes rdar://problem/32730865.

@jckarter
Copy link
Contributor Author

@swift-ci Please smoke test

@jckarter
Copy link
Contributor Author

@swift-ci Please test source compatibility

@jckarter
Copy link
Contributor Author

@rjmccall @devincoughlin @gottesmm Does this look right? I'm not fully familiar with the changes that went into lvalue emission for exclusivity checking and ownership enforcement, but something changed between 3.1 and now that's making these +0 peepholes break, since the temporary buffers for computed component projections get destroyed apparently earlier than they used to.

@jckarter jckarter requested review from rjmccall and gottesmm July 17, 2017 23:35
@dabrahams
Copy link
Contributor

@swift-ci Please benchmark

@rjmccall
Copy link
Contributor

I think you're probably right that it's just not valid to do this without some more concrete idea of how long we're within the borrow. And yeah, the access will end immediately.

@swift-ci
Copy link
Contributor

Build comment file:

Optimized (O)

Regression (37)
TEST OLD NEW DELTA SPEEDUP
DropFirstAnySequenceLazy 5358 9151 +70.8% 0.59x
DropFirstAnySequence 5365 9156 +70.7% 0.59x
PrefixAnySequence 4700 7625 +62.2% 0.62x
PrefixAnySequenceLazy 4711 7624 +61.8% 0.62x
PrefixWhileAnySequenceLazy 1408 2058 +46.2% 0.68x
SuffixAnySequence 6299 8931 +41.8% 0.71x
PrefixSequenceLazy 1430 1938 +35.5% 0.74x
DropWhileSequence 1461 1976 +35.2% 0.74x
DropWhileAnySequenceLazy 1917 2580 +34.6% 0.74x
DropFirstSequence 1975 2654 +34.4% 0.74x
PrefixWhileAnySeqCRangeIter 11704 15693 +34.1% 0.75x
PrefixWhileAnySequence 13168 17597 +33.6% 0.75x
DropLastAnySequenceLazy 6142 8115 +32.1% 0.76x
SuffixAnySequenceLazy 6161 8139 +32.1% 0.76x
PrefixSequence 1497 1975 +31.9% 0.76x
DropLastAnySeqCRangeIterLazy 4308 5647 +31.1% 0.76x
DropLastAnySeqCRangeIter 4308 5646 +31.1% 0.76x
SuffixSequenceLazy 4199 5474 +30.4% 0.77x
SuffixSequence 4199 5474 +30.4% 0.77x
DropFirstSequenceLazy 1998 2585 +29.4% 0.77x
SuffixAnySeqCRangeIterLazy 4616 5952 +28.9% 0.78x
SuffixAnySeqCRangeIter 4618 5952 +28.9% 0.78x
DropLastAnySequence 6375 8187 +28.4% 0.78x
DropWhileAnySequence 6178 7759 +25.6% 0.80x
ProtocolDispatch 2302 2575 +11.9% 0.89x (?)
OpenClose 48 53 +10.4% 0.91x
DropFirstAnySeqCRangeIterLazy 24858 27331 +9.9% 0.91x
DropFirstAnySeqCRangeIter 24846 27298 +9.9% 0.91x
PrefixAnySeqCRangeIterLazy 19360 21270 +9.9% 0.91x
PrefixAnySeqCRangeIter 19346 21249 +9.8% 0.91x
ReversedBidirectional 27374 29357 +7.2% 0.93x
DropWhileAnySeqCRangeIter 20005 21388 +6.9% 0.94x
PopFrontArray 1053 1122 +6.6% 0.94x (?)
CharIteration_tweet_unicodeScalars 29759 31645 +6.3% 0.94x (?)
CharIteration_japanese_unicodeScalars 18182 19232 +5.8% 0.95x (?)
CharIteration_ascii_unicodeScalars 15209 16066 +5.6% 0.95x
CharIteration_chinese_unicodeScalars 11532 12171 +5.5% 0.95x
Improvement (13)
TEST OLD NEW DELTA SPEEDUP
StringHasPrefix 31 15 -51.6% 2.07x
StringHasSuffix 31 15 -51.6% 2.07x
ArrayInClass 66 59 -10.6% 1.12x (?)
ArrayAppendAscii 10349 9487 -8.3% 1.09x
Array2D 2117 1943 -8.2% 1.09x (?)
AnyHashableWithAClass 68346 63423 -7.2% 1.08x
ArrayAppendUTF16 29802 27680 -7.1% 1.08x (?)
ArrayAppendSequence 960 892 -7.1% 1.08x
MapReduceString 94 88 -6.4% 1.07x
ArrayAppendRepeatCol 840 790 -6.0% 1.06x
PrefixWhileSequence 295 278 -5.8% 1.06x (?)
ArrayAppendLazyMap 960 906 -5.6% 1.06x (?)
ObjectiveCBridgeStubFromNSString 526 500 -4.9% 1.05x (?)
No Changes (271)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 2889 2788 -3.5% 1.04x
ArrayAppend 752 729 -3.1% 1.03x
ArrayAppendArrayOfInt 587 563 -4.1% 1.04x
ArrayAppendFromGeneric 589 563 -4.4% 1.05x
ArrayAppendGenericStructs 1189 1135 -4.5% 1.05x
ArrayAppendLatin1 30770 29565 -3.9% 1.04x (?)
ArrayAppendOptionals 1153 1135 -1.6% 1.02x (?)
ArrayAppendReserved 517 503 -2.7% 1.03x
ArrayAppendStrings 13199 12821 -2.9% 1.03x
ArrayAppendToFromGeneric 574 563 -1.9% 1.02x
ArrayAppendToGeneric 587 563 -4.1% 1.04x
ArrayLiteral 1202 1153 -4.1% 1.04x
ArrayOfGenericPOD 217 207 -4.6% 1.05x
ArrayOfGenericRef 3916 3785 -3.3% 1.03x (?)
ArrayOfPOD 157 156 -0.6% 1.01x (?)
ArrayOfRef 3729 3673 -1.5% 1.02x (?)
ArrayPlusEqualArrayOfInt 571 563 -1.4% 1.01x
ArrayPlusEqualFiveElementCollection 4337 4190 -3.4% 1.04x (?)
ArrayPlusEqualSingleElementCollection 731 727 -0.5% 1.01x (?)
ArrayPlusEqualThreeElements 1523 1514 -0.6% 1.01x (?)
ArraySubscript 1400 1391 -0.6% 1.01x (?)
ArrayValueProp 5 5 +0.0% 1.00x
ArrayValueProp2 5 5 +0.0% 1.00x
ArrayValueProp3 5 5 +0.0% 1.00x
ArrayValueProp4 5 5 +0.0% 1.00x
BitCount 144 139 -3.5% 1.04x
ByteSwap 113 111 -1.8% 1.02x
CStringLongAscii 4234 4044 -4.5% 1.05x
CStringLongNonAscii 2027 1963 -3.2% 1.03x (?)
CStringShortAscii 4631 4493 -3.0% 1.03x (?)
Calculator 28 28 +0.0% 1.00x
CaptureProp 4357 4353 -0.1% 1.00x (?)
CharIndexing_ascii_unicodeScalars 13551 13597 +0.3% 1.00x (?)
CharIndexing_ascii_unicodeScalars_Backwards 12956 12891 -0.5% 1.01x (?)
CharIndexing_chinese_unicodeScalars 10273 10301 +0.3% 1.00x (?)
CharIndexing_chinese_unicodeScalars_Backwards 9836 9780 -0.6% 1.01x
CharIndexing_japanese_unicodeScalars 16205 16273 +0.4% 1.00x (?)
CharIndexing_japanese_unicodeScalars_Backwards 15517 15418 -0.6% 1.01x
CharIndexing_korean_unicodeScalars 13100 13185 +0.6% 0.99x (?)
CharIndexing_korean_unicodeScalars_Backwards 12579 12498 -0.6% 1.01x (?)
CharIndexing_punctuatedJapanese_unicodeScalars 2474 2477 +0.1% 1.00x (?)
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 2384 2381 -0.1% 1.00x (?)
CharIndexing_punctuated_unicodeScalars 3084 3093 +0.3% 1.00x (?)
CharIndexing_punctuated_unicodeScalars_Backwards 2970 2969 -0.0% 1.00x (?)
CharIndexing_russian_unicodeScalars 11289 11330 +0.4% 1.00x (?)
CharIndexing_russian_unicodeScalars_Backwards 10834 10745 -0.8% 1.01x (?)
CharIndexing_tweet_unicodeScalars 26630 26830 +0.8% 0.99x (?)
CharIndexing_tweet_unicodeScalars_Backwards 25605 25378 -0.9% 1.01x (?)
CharIndexing_utf16_unicodeScalars 78133 77848 -0.4% 1.00x (?)
CharIndexing_utf16_unicodeScalars_Backwards 93036 92206 -0.9% 1.01x
CharIteration_ascii_unicodeScalars_Backwards 17828 17696 -0.7% 1.01x (?)
CharIteration_chinese_unicodeScalars_Backwards 13520 13382 -1.0% 1.01x
CharIteration_japanese_unicodeScalars_Backwards 21316 21177 -0.7% 1.01x
CharIteration_korean_unicodeScalars 14997 15576 +3.9% 0.96x (?)
CharIteration_korean_unicodeScalars_Backwards 17307 17140 -1.0% 1.01x (?)
CharIteration_punctuatedJapanese_unicodeScalars 2824 2923 +3.5% 0.97x (?)
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 3201 3172 -0.9% 1.01x
CharIteration_punctuated_unicodeScalars 3512 3655 +4.1% 0.96x (?)
CharIteration_punctuated_unicodeScalars_Backwards 4012 3973 -1.0% 1.01x
CharIteration_russian_unicodeScalars 12729 13392 +5.2% 0.95x
CharIteration_russian_unicodeScalars_Backwards 14781 14723 -0.4% 1.00x
CharIteration_tweet_unicodeScalars_Backwards 35346 34965 -1.1% 1.01x
CharIteration_utf16_unicodeScalars 87039 87299 +0.3% 1.00x (?)
CharIteration_utf16_unicodeScalars_Backwards 125960 126406 +0.4% 1.00x
CharacterLiteralsLarge 5665 5667 +0.0% 1.00x (?)
CharacterLiteralsSmall 378 379 +0.3% 1.00x (?)
Chars 400 399 -0.2% 1.00x (?)
ClassArrayGetter 12 12 +0.0% 1.00x
DeadArray 174 171 -1.7% 1.02x (?)
Dictionary 519 524 +1.0% 0.99x
Dictionary2 1727 1728 +0.1% 1.00x (?)
Dictionary2OfObjects 3090 3092 +0.1% 1.00x (?)
Dictionary3 417 417 +0.0% 1.00x
Dictionary3OfObjects 835 835 +0.0% 1.00x
DictionaryBridge 2413 2391 -0.9% 1.01x (?)
DictionaryGroup 259 260 +0.4% 1.00x (?)
DictionaryGroupOfObjects 1683 1682 -0.1% 1.00x (?)
DictionaryLiteral 1399 1399 +0.0% 1.00x
DictionaryOfObjects 2187 2187 +0.0% 1.00x
DictionaryRemove 2659 2650 -0.3% 1.00x (?)
DictionaryRemoveOfObjects 22267 22163 -0.5% 1.00x
DictionarySwap 405 405 +0.0% 1.00x
DictionarySwapOfObjects 6601 6597 -0.1% 1.00x (?)
DropFirstAnyCollection 53 53 +0.0% 1.00x
DropFirstAnyCollectionLazy 42356 44523 +5.1% 0.95x
DropFirstAnySeqCntRange 48 48 +0.0% 1.00x
DropFirstAnySeqCntRangeLazy 48 48 +0.0% 1.00x
DropFirstArray 23 23 +0.0% 1.00x
DropFirstArrayLazy 23 23 +0.0% 1.00x
DropFirstCountableRange 30 30 +0.0% 1.00x
DropFirstCountableRangeLazy 30 30 +0.0% 1.00x
DropLastAnyCollection 21 21 +0.0% 1.00x
DropLastAnyCollectionLazy 14112 14742 +4.5% 0.96x (?)
DropLastAnySeqCntRange 15 15 +0.0% 1.00x
DropLastAnySeqCntRangeLazy 15 15 +0.0% 1.00x
DropLastArray 7 7 +0.0% 1.00x
DropLastArrayLazy 7 7 +0.0% 1.00x
DropLastCountableRange 10 10 +0.0% 1.00x
DropLastCountableRangeLazy 10 10 +0.0% 1.00x
DropLastSequence 544 548 +0.7% 0.99x (?)
DropLastSequenceLazy 544 547 +0.6% 0.99x (?)
DropWhileAnyCollection 65 66 +1.5% 0.98x
DropWhileAnyCollectionLazy 97 97 +0.0% 1.00x
DropWhileAnySeqCRangeIterLazy 98 97 -1.0% 1.01x
DropWhileAnySeqCntRange 60 60 +0.0% 1.00x
DropWhileAnySeqCntRangeLazy 97 97 +0.0% 1.00x
DropWhileArray 35 35 +0.0% 1.00x
DropWhileArrayLazy 73 73 +0.0% 1.00x
DropWhileCountableRange 33 33 +0.0% 1.00x
DropWhileCountableRangeLazy 64 64 +0.0% 1.00x
DropWhileSequenceLazy 61 61 +0.0% 1.00x
EqualStringSubstring 362 362 +0.0% 1.00x
EqualSubstringString 361 362 +0.3% 1.00x
EqualSubstringSubstring 361 361 +0.0% 1.00x
EqualSubstringSubstringGenericEquatable 366 363 -0.8% 1.01x (?)
ErrorHandling 2629 2660 +1.2% 0.99x (?)
Hanoi 3106 3045 -2.0% 1.02x
HashTest 1601 1601 +0.0% 1.00x
Histogram 284 283 -0.4% 1.00x (?)
Integrate 249 249 +0.0% 1.00x
IterateData 718 722 +0.6% 0.99x (?)
Join 363 360 -0.8% 1.01x (?)
LazilyFilteredArrays 61533 61488 -0.1% 1.00x (?)
LazilyFilteredRange 3656 3657 +0.0% 1.00x (?)
LessSubstringSubstring 360 359 -0.3% 1.00x (?)
LessSubstringSubstringGenericComparable 361 362 +0.3% 1.00x (?)
LinkedList 6763 6762 -0.0% 1.00x (?)
MapReduce 312 308 -1.3% 1.01x (?)
MapReduceAnyCollection 285 285 +0.0% 1.00x
MapReduceAnyCollectionShort 1888 1878 -0.5% 1.01x (?)
MapReduceClass 2872 2876 +0.1% 1.00x (?)
MapReduceClassShort 4355 4324 -0.7% 1.01x
MapReduceLazyCollection 15 15 +0.0% 1.00x
MapReduceLazyCollectionShort 41 42 +2.4% 0.98x
MapReduceLazySequence 85 85 +0.0% 1.00x
MapReduceSequence 426 426 +0.0% 1.00x
MapReduceShort 1811 1812 +0.1% 1.00x (?)
MapReduceShortString 20 20 +0.0% 1.00x
Memset 221 221 +0.0% 1.00x
MonteCarloE 9619 9701 +0.9% 0.99x
MonteCarloPi 41429 41507 +0.2% 1.00x (?)
NSDictionaryCastToSwift 5175 4979 -3.8% 1.04x (?)
NSError 273 273 +0.0% 1.00x
NSStringConversion 344 328 -4.7% 1.05x
NopDeinit 21627 21621 -0.0% 1.00x (?)
ObjectAllocation 168 169 +0.6% 0.99x (?)
ObjectiveCBridgeFromNSArrayAnyObject 21093 20914 -0.8% 1.01x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 3250 3224 -0.8% 1.01x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 36997 36444 -1.5% 1.02x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 31338 31351 +0.0% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 111140 111240 +0.1% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 4815 4772 -0.9% 1.01x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 85282 84778 -0.6% 1.01x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 93336 92598 -0.8% 1.01x (?)
ObjectiveCBridgeFromNSSetAnyObject 60502 60438 -0.1% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 4052 3908 -3.6% 1.04x (?)
ObjectiveCBridgeFromNSSetAnyObjectToString 63775 63743 -0.1% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 64146 64128 -0.0% 1.00x (?)
ObjectiveCBridgeFromNSString 933 937 +0.4% 1.00x (?)
ObjectiveCBridgeFromNSStringForced 1781 1760 -1.2% 1.01x (?)
ObjectiveCBridgeStubDataAppend 3487 3513 +0.7% 0.99x (?)
ObjectiveCBridgeStubDateAccess 171 171 +0.0% 1.00x
ObjectiveCBridgeStubDateMutation 257 257 +0.0% 1.00x
ObjectiveCBridgeStubFromArrayOfNSString 23113 22925 -0.8% 1.01x (?)
ObjectiveCBridgeStubFromNSDate 3457 3440 -0.5% 1.00x (?)
ObjectiveCBridgeStubFromNSDateRef 3816 3840 +0.6% 0.99x (?)
ObjectiveCBridgeStubFromNSStringRef 133 133 +0.0% 1.00x
ObjectiveCBridgeStubNSDataAppend 2237 2149 -3.9% 1.04x (?)
ObjectiveCBridgeStubNSDateMutationRef 11845 11676 -1.4% 1.01x (?)
ObjectiveCBridgeStubNSDateRefAccess 299 298 -0.3% 1.00x (?)
ObjectiveCBridgeStubToArrayOfNSString 27588 27277 -1.1% 1.01x (?)
ObjectiveCBridgeStubToNSDate 13195 13256 +0.5% 1.00x (?)
ObjectiveCBridgeStubToNSDateRef 3067 3089 +0.7% 0.99x (?)
ObjectiveCBridgeStubToNSString 1422 1428 +0.4% 1.00x (?)
ObjectiveCBridgeStubToNSStringRef 104 104 +0.0% 1.00x
ObjectiveCBridgeStubURLAppendPath 208854 207532 -0.6% 1.01x (?)
ObjectiveCBridgeStubURLAppendPathRef 206315 210509 +2.0% 0.98x (?)
ObjectiveCBridgeToNSArray 27569 27084 -1.8% 1.02x (?)
ObjectiveCBridgeToNSDictionary 41997 42726 +1.7% 0.98x (?)
ObjectiveCBridgeToNSSet 36560 36487 -0.2% 1.00x (?)
ObjectiveCBridgeToNSString 1199 1200 +0.1% 1.00x (?)
ObserverClosure 2141 2144 +0.1% 1.00x (?)
ObserverForwarderStruct 1047 1049 +0.2% 1.00x (?)
ObserverPartiallyAppliedMethod 3576 3545 -0.9% 1.01x (?)
ObserverUnappliedMethod 2485 2487 +0.1% 1.00x (?)
Phonebook 5564 5455 -2.0% 1.02x
PolymorphicCalls 20 20 +0.0% 1.00x
PopFrontArrayGeneric 1145 1141 -0.3% 1.00x
PopFrontUnsafePointer 8987 8979 -0.1% 1.00x (?)
PrefixAnyCollection 53 53 +0.0% 1.00x
PrefixAnyCollectionLazy 42441 44554 +5.0% 0.95x (?)
PrefixAnySeqCntRange 48 48 +0.0% 1.00x
PrefixAnySeqCntRangeLazy 48 48 +0.0% 1.00x
PrefixArray 23 23 +0.0% 1.00x
PrefixArrayLazy 23 23 +0.0% 1.00x
PrefixCountableRange 30 30 +0.0% 1.00x
PrefixCountableRangeLazy 30 30 +0.0% 1.00x
PrefixWhileAnyCollection 91 90 -1.1% 1.01x
PrefixWhileAnyCollectionLazy 71 71 +0.0% 1.00x
PrefixWhileAnySeqCRangeIterLazy 71 71 +0.0% 1.00x
PrefixWhileAnySeqCntRange 85 85 +0.0% 1.00x
PrefixWhileAnySeqCntRangeLazy 71 71 +0.0% 1.00x
PrefixWhileArray 58 58 +0.0% 1.00x
PrefixWhileArrayLazy 47 47 +0.0% 1.00x
PrefixWhileCountableRange 34 34 +0.0% 1.00x
PrefixWhileCountableRangeLazy 30 30 +0.0% 1.00x
PrefixWhileSequenceLazy 26 26 +0.0% 1.00x
Prims 737 728 -1.2% 1.01x (?)
ProtocolDispatch2 155 154 -0.6% 1.01x (?)
RC4 151 150 -0.7% 1.01x
RGBHistogram 2217 2218 +0.0% 1.00x (?)
RGBHistogramOfObjects 23016 23008 -0.0% 1.00x (?)
RangeAssignment 293 289 -1.4% 1.01x (?)
RecursiveOwnedParameter 2193 2199 +0.3% 1.00x (?)
ReversedArray 46 46 +0.0% 1.00x
ReversedDictionary 99 98 -1.0% 1.01x (?)
SetExclusiveOr 2869 2877 +0.3% 1.00x (?)
SetExclusiveOr_OfObjects 9003 9004 +0.0% 1.00x (?)
SetIntersect 291 290 -0.3% 1.00x (?)
SetIntersect_OfObjects 1621 1624 +0.2% 1.00x (?)
SetIsSubsetOf 276 275 -0.4% 1.00x (?)
SetIsSubsetOf_OfObjects 339 338 -0.3% 1.00x
SetUnion 2571 2601 +1.2% 0.99x (?)
SetUnion_OfObjects 7656 7595 -0.8% 1.01x (?)
SevenBoom 1384 1383 -0.1% 1.00x (?)
Sim2DArray 261 261 +0.0% 1.00x
SortLargeExistentials 7397 7382 -0.2% 1.00x (?)
SortLettersInPlace 1082 1083 +0.1% 1.00x (?)
SortSortedStrings 763 769 +0.8% 0.99x (?)
SortStrings 1511 1504 -0.5% 1.00x (?)
SortStringsUnicode 7328 7277 -0.7% 1.01x (?)
StackPromo 21224 21285 +0.3% 1.00x (?)
StaticArray 17 17 +0.0% 1.00x
StrComplexWalk 674 674 +0.0% 1.00x
StrToInt 1849 1906 +3.1% 0.97x
StringAdder 3318 3322 +0.1% 1.00x (?)
StringBuilder 954 953 -0.1% 1.00x (?)
StringBuilderLong 874 898 +2.7% 0.97x (?)
StringEdits 108824 111571 +2.5% 0.98x (?)
StringEqualPointerComparison 314 314 +0.0% 1.00x
StringFromLongWholeSubstring 12580 12580 +0.0% 1.00x
StringFromLongWholeSubstringGeneric 20 20 +0.0% 1.00x
StringHasPrefixUnicode 13616 13649 +0.2% 1.00x (?)
StringHasSuffixUnicode 57935 57793 -0.2% 1.00x (?)
StringInterpolation 10155 10060 -0.9% 1.01x (?)
StringMatch 7626 7488 -1.8% 1.02x (?)
StringUTF16Builder 1780 1772 -0.4% 1.00x (?)
StringWalk 1229 1219 -0.8% 1.01x
StringWithCString 50891 51177 +0.6% 0.99x (?)
SubstringComparable 1442 1443 +0.1% 1.00x (?)
SubstringEqualString 1341 1335 -0.4% 1.00x (?)
SubstringEquatable 3226 3214 -0.4% 1.00x (?)
SubstringFromLongString 9 9 +0.0% 1.00x
SubstringFromLongStringGeneric 56 57 +1.8% 0.98x
SuffixAnyCollection 21 21 +0.0% 1.00x
SuffixAnyCollectionLazy 14103 14840 +5.2% 0.95x
SuffixAnySeqCntRange 15 15 +0.0% 1.00x
SuffixAnySeqCntRangeLazy 15 15 +0.0% 1.00x
SuffixArray 7 7 +0.0% 1.00x
SuffixArrayLazy 7 7 +0.0% 1.00x
SuffixCountableRange 10 10 +0.0% 1.00x
SuffixCountableRangeLazy 10 10 +0.0% 1.00x
SuperChars 75999 75927 -0.1% 1.00x (?)
TwoSum 915 908 -0.8% 1.01x (?)
TypeFlood 0 0 +0.0% 1.00x
UTF8Decode 239 239 +0.0% 1.00x
Walsh 335 335 +0.0% 1.00x
XorLoop 327 327 +0.0% 1.00x
accessGlobal 2 2 +0.0% 1.00x
accessInMatSet 17 17 +0.0% 1.00x
accessIndependent 2 2 +0.0% 1.00x

Unoptimized (Onone)

Regression (154)
TEST OLD NEW DELTA SPEEDUP
DropFirstArray 5837 9683 +65.9% 0.60x
PrefixArray 5847 9687 +65.7% 0.60x
SuffixArray 1960 3207 +63.6% 0.61x
DropLastArray 1960 3206 +63.6% 0.61x
ArrayAppendSequence 70280 108282 +54.1% 0.65x
Sim2DArray 28464 42126 +48.0% 0.68x
PrefixWhileArrayLazy 13898 20294 +46.0% 0.68x
DropWhileArray 9161 13036 +42.3% 0.70x
Chars 45773 64750 +41.5% 0.71x
ArrayAppendLazyMap 202337 283629 +40.2% 0.71x
DropFirstSequence 11256 15581 +38.4% 0.72x
DropWhileArrayLazy 16115 22122 +37.3% 0.73x
PrefixWhileSequenceLazy 10081 13582 +34.7% 0.74x
MapReduceLazyCollection 30649 41138 +34.2% 0.75x
DropFirstAnySequenceLazy 11992 15946 +33.0% 0.75x
UTF8Decode 35263 46719 +32.5% 0.75x
PrefixSequenceLazy 9061 11896 +31.3% 0.76x
DropFirstAnySequence 12081 15784 +30.7% 0.77x
PrefixSequence 9198 11970 +30.1% 0.77x
DropFirstSequenceLazy 11291 14677 +30.0% 0.77x
PrefixWhileAnySequenceLazy 10767 13967 +29.7% 0.77x
MapReduceLazySequence 23787 30853 +29.7% 0.77x
PrefixAnySequence 9992 12903 +29.1% 0.77x
DropWhileSequenceLazy 10415 13436 +29.0% 0.78x
CharIteration_ascii_unicodeScalars 170653 217433 +27.4% 0.78x
PrefixAnySequenceLazy 10125 12900 +27.4% 0.78x
MapReduceLazyCollectionShort 41137 52185 +26.9% 0.79x
ReversedDictionary 26362 33388 +26.7% 0.79x
CharIteration_korean_unicodeScalars 164075 205566 +25.3% 0.80x
PrefixWhileSequence 26689 33367 +25.0% 0.80x
CharIteration_chinese_unicodeScalars 128261 159900 +24.7% 0.80x
PrefixWhileArray 15767 19656 +24.7% 0.80x
ArrayValueProp2 17196 21424 +24.6% 0.80x
CharIteration_punctuated_unicodeScalars 37846 47072 +24.4% 0.80x
CharIteration_russian_unicodeScalars 141250 175652 +24.4% 0.80x
CharIteration_ascii_unicodeScalars_Backwards 305283 379515 +24.3% 0.80x
CharIteration_tweet_unicodeScalars 335418 416381 +24.1% 0.81x
CharIteration_punctuatedJapanese_unicodeScalars 30157 37345 +23.8% 0.81x
CharIteration_japanese_unicodeScalars 204549 253103 +23.7% 0.81x
DropWhileAnySequenceLazy 11464 14168 +23.6% 0.81x
CharIndexing_punctuatedJapanese_unicodeScalars 76835 94908 +23.5% 0.81x
CharIndexing_punctuated_unicodeScalars 99502 122753 +23.4% 0.81x
MapReduceSequence 38601 47568 +23.2% 0.81x
CharIndexing_tweet_unicodeScalars 891873 1097394 +23.0% 0.81x
CharIndexing_ascii_unicodeScalars 449523 551662 +22.7% 0.81x
Join 1120 1370 +22.3% 0.82x
CharIndexing_russian_unicodeScalars 372528 455272 +22.2% 0.82x
CharIndexing_utf16_unicodeScalars 510497 623780 +22.2% 0.82x
CharIndexing_chinese_unicodeScalars 341359 414000 +21.3% 0.82x
CharIteration_tweet_unicodeScalars_Backwards 602274 728521 +21.0% 0.83x
CharIteration_japanese_unicodeScalars_Backwards 365461 441972 +20.9% 0.83x
CharIndexing_japanese_unicodeScalars 545109 659218 +20.9% 0.83x
CharIndexing_utf16_unicodeScalars_Backwards 568755 686928 +20.8% 0.83x
StringBuilder 6557 7916 +20.7% 0.83x
CharIndexing_tweet_unicodeScalars_Backwards 1005657 1211397 +20.5% 0.83x
CharIteration_chinese_unicodeScalars_Backwards 235465 283511 +20.4% 0.83x
LazilyFilteredArrays 1610682 1936300 +20.2% 0.83x
CharIndexing_russian_unicodeScalars_Backwards 416934 500536 +20.1% 0.83x
CharIndexing_japanese_unicodeScalars_Backwards 596370 711826 +19.4% 0.84x
PrefixWhileAnySequence 27796 33175 +19.4% 0.84x
MapReduceAnyCollection 35184 41885 +19.0% 0.84x
CharIteration_punctuated_unicodeScalars_Backwards 67739 80605 +19.0% 0.84x
ReversedArray 41608 49462 +18.9% 0.84x
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 87274 103652 +18.8% 0.84x
CharIndexing_punctuated_unicodeScalars_Backwards 109467 129869 +18.6% 0.84x
StringUTF16Builder 7516 8898 +18.4% 0.84x
CharIteration_russian_unicodeScalars_Backwards 258502 305761 +18.3% 0.85x
CharIndexing_ascii_unicodeScalars_Backwards 499654 590518 +18.2% 0.85x (?)
CharIndexing_chinese_unicodeScalars_Backwards 381783 450800 +18.1% 0.85x
CharIndexing_korean_unicodeScalars 454913 536887 +18.0% 0.85x
CharIteration_korean_unicodeScalars_Backwards 302385 356693 +18.0% 0.85x
CharIteration_utf16_unicodeScalars_Backwards 393568 464238 +18.0% 0.85x
DropLastArrayLazy 14024 16510 +17.7% 0.85x
MapReduce 36230 42545 +17.4% 0.85x
CaptureProp 106301 124384 +17.0% 0.85x
MapReduceString 2511 2936 +16.9% 0.86x
StringMatch 29800 34842 +16.9% 0.86x
DropWhileSequence 13263 15505 +16.9% 0.86x
Dictionary 2854 3335 +16.9% 0.86x
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 54964 64131 +16.7% 0.86x
CharIndexing_korean_unicodeScalars_Backwards 491394 573120 +16.6% 0.86x
SuffixArrayLazy 14018 16315 +16.4% 0.86x
MapReduceClass 40353 46943 +16.3% 0.86x
DropFirstArrayLazy 42029 48838 +16.2% 0.86x
PrefixArrayLazy 42116 48823 +15.9% 0.86x
SubstringEquatable 7863 9109 +15.8% 0.86x
ObserverForwarderStruct 4499 5193 +15.4% 0.87x
SuperChars 179820 207437 +15.4% 0.87x
PrefixWhileAnySeqCntRangeLazy 21778 24912 +14.4% 0.87x
ErrorHandling 6345 7255 +14.3% 0.87x
PrefixWhileAnyCollectionLazy 22008 25157 +14.3% 0.87x
MapReduceAnyCollectionShort 47343 54086 +14.2% 0.88x
PrefixWhileAnySeqCRangeIterLazy 21137 24139 +14.2% 0.88x
SubstringComparable 3912 4463 +14.1% 0.88x
ReversedBidirectional 71615 81677 +14.1% 0.88x
DropLastAnySequence 27319 31104 +13.9% 0.88x
PrefixWhileAnySeqCRangeIter 38387 43693 +13.8% 0.88x
DropLastSequence 26980 30618 +13.5% 0.88x
MapReduceClassShort 51105 57968 +13.4% 0.88x
ObjectAllocation 1381 1566 +13.4% 0.88x
PrefixAnyCollectionLazy 129668 146815 +13.2% 0.88x
SuffixAnySequence 25169 28474 +13.1% 0.88x
CharIteration_utf16_unicodeScalars 201358 227760 +13.1% 0.88x
SuffixSequence 24859 28116 +13.1% 0.88x
SuffixAnySequenceLazy 25206 28474 +13.0% 0.89x
SuffixSequenceLazy 24837 28033 +12.9% 0.89x
MapReduceShort 47688 53752 +12.7% 0.89x
DropLastAnyCollectionLazy 43135 48551 +12.6% 0.89x
MapReduceShortString 263 296 +12.5% 0.89x
PrefixWhileCountableRangeLazy 21124 23768 +12.5% 0.89x
PrefixAnySeqCRangeIterLazy 21412 24036 +12.3% 0.89x
DropFirstAnyCollectionLazy 129402 145086 +12.1% 0.89x
DropWhileAnySeqCRangeIterLazy 26245 29407 +12.0% 0.89x
LazilyFilteredRange 636039 710997 +11.8% 0.89x
DropLastAnySequenceLazy 27341 30477 +11.5% 0.90x
SuffixAnyCollectionLazy 43162 48012 +11.2% 0.90x
DropWhileCountableRangeLazy 25242 28048 +11.1% 0.90x
Histogram 8397 9304 +10.8% 0.90x
DropLastSequenceLazy 27127 30041 +10.7% 0.90x
DropWhileAnySeqCntRangeLazy 26221 29029 +10.7% 0.90x
DropFirstAnySeqCRangeIterLazy 27774 30731 +10.6% 0.90x
StringEdits 354152 391280 +10.5% 0.91x
MonteCarloE 128142 141406 +10.4% 0.91x
ObserverClosure 6447 7082 +9.8% 0.91x
DropWhileAnyCollectionLazy 26523 29110 +9.8% 0.91x
ObserverUnappliedMethod 8039 8784 +9.3% 0.92x
DropLastAnySeqCRangeIter 41288 45042 +9.1% 0.92x
DropWhileAnySequence 14819 16156 +9.0% 0.92x
DictionaryGroupOfObjects 7649 8332 +8.9% 0.92x
PrefixAnySeqCRangeIter 21474 23384 +8.9% 0.92x
AngryPhonebook 4880 5308 +8.8% 0.92x
DropLastAnySeqCntRange 6101 6626 +8.6% 0.92x
ArrayAppendRepeatCol 200088 217028 +8.5% 0.92x
DictionaryOfObjects 6216 6724 +8.2% 0.92x
SuffixAnySeqCRangeIter 39090 42192 +7.9% 0.93x
ObserverPartiallyAppliedMethod 7759 8368 +7.8% 0.93x
SuffixCountableRangeLazy 11893 12825 +7.8% 0.93x
DropFirstAnySeqCRangeIter 27195 29303 +7.8% 0.93x
PrefixAnySeqCntRangeLazy 18629 20011 +7.4% 0.93x
DropFirstAnySeqCntRangeLazy 18614 19976 +7.3% 0.93x
DropLastAnySeqCRangeIterLazy 41631 44570 +7.1% 0.93x
NopDeinit 159184 170400 +7.0% 0.93x (?)
SuffixAnySeqCntRangeLazy 6261 6701 +7.0% 0.93x
DropLastAnySeqCntRangeLazy 6268 6705 +7.0% 0.93x
DropWhileAnySeqCntRange 24037 25683 +6.8% 0.94x (?)
SuffixAnyCollection 6084 6475 +6.4% 0.94x
DropLastAnyCollection 6267 6654 +6.2% 0.94x
DropFirstAnyCollection 18709 19845 +6.1% 0.94x
StringHasPrefix 1603 1695 +5.7% 0.95x
SubstringEqualString 5977 6317 +5.7% 0.95x (?)
SuffixAnySeqCntRange 6278 6620 +5.4% 0.95x
PrefixAnySeqCntRange 18928 19956 +5.4% 0.95x
RGBHistogram 32634 34370 +5.3% 0.95x
DropLastCountableRangeLazy 12212 12860 +5.3% 0.95x (?)
Improvement (1)
TEST OLD NEW DELTA SPEEDUP
ObjectiveCBridgeStubDateMutation 514 472 -8.2% 1.09x
No Changes (166)
TEST OLD NEW DELTA SPEEDUP
AnyHashableWithAClass 79725 78761 -1.2% 1.01x
Array2D 570457 569913 -0.1% 1.00x (?)
ArrayAppend 3464 3462 -0.1% 1.00x (?)
ArrayAppendArrayOfInt 615 616 +0.2% 1.00x (?)
ArrayAppendAscii 48269 49447 +2.4% 0.98x
ArrayAppendFromGeneric 620 619 -0.2% 1.00x (?)
ArrayAppendGenericStructs 1199 1199 +0.0% 1.00x
ArrayAppendLatin1 69580 70634 +1.5% 0.99x
ArrayAppendOptionals 1194 1196 +0.2% 1.00x (?)
ArrayAppendReserved 3415 3360 -1.6% 1.02x (?)
ArrayAppendStrings 12935 12966 +0.2% 1.00x (?)
ArrayAppendToFromGeneric 616 617 +0.2% 1.00x (?)
ArrayAppendToGeneric 619 618 -0.2% 1.00x (?)
ArrayAppendUTF16 71778 73073 +1.8% 0.98x
ArrayInClass 6003 5977 -0.4% 1.00x
ArrayLiteral 1660 1663 +0.2% 1.00x (?)
ArrayOfGenericPOD 2845 2923 +2.7% 0.97x
ArrayOfGenericRef 9490 9500 +0.1% 1.00x (?)
ArrayOfPOD 1730 1730 +0.0% 1.00x
ArrayOfRef 8576 8536 -0.5% 1.00x (?)
ArrayPlusEqualArrayOfInt 617 616 -0.2% 1.00x (?)
ArrayPlusEqualFiveElementCollection 280462 279948 -0.2% 1.00x (?)
ArrayPlusEqualSingleElementCollection 277073 278434 +0.5% 1.00x (?)
ArrayPlusEqualThreeElements 10238 10217 -0.2% 1.00x (?)
ArraySubscript 3968 3952 -0.4% 1.00x
ArrayValueProp 3328 3364 +1.1% 0.99x (?)
ArrayValueProp3 3688 3691 +0.1% 1.00x (?)
ArrayValueProp4 3615 3629 +0.4% 1.00x (?)
BitCount 1589 1588 -0.1% 1.00x (?)
ByteSwap 4018 3976 -1.0% 1.01x (?)
CStringLongAscii 4171 4181 +0.2% 1.00x (?)
CStringLongNonAscii 2127 2150 +1.1% 0.99x
CStringShortAscii 8085 8486 +5.0% 0.95x
Calculator 1037 1028 -0.9% 1.01x
CharacterLiteralsLarge 5866 5883 +0.3% 1.00x (?)
CharacterLiteralsSmall 619 620 +0.2% 1.00x (?)
ClassArrayGetter 931 931 +0.0% 1.00x
DeadArray 109718 106708 -2.7% 1.03x (?)
Dictionary2 3316 3301 -0.5% 1.00x (?)
Dictionary2OfObjects 5797 5803 +0.1% 1.00x (?)
Dictionary3 1238 1236 -0.2% 1.00x (?)
Dictionary3OfObjects 2215 2217 +0.1% 1.00x (?)
DictionaryBridge 2551 2500 -2.0% 1.02x (?)
DictionaryGroup 4920 5021 +2.1% 0.98x (?)
DictionaryLiteral 7870 7909 +0.5% 1.00x (?)
DictionaryRemove 20204 20246 +0.2% 1.00x (?)
DictionaryRemoveOfObjects 56046 56415 +0.7% 0.99x (?)
DictionarySwap 5183 5216 +0.6% 0.99x
DictionarySwapOfObjects 22301 22252 -0.2% 1.00x (?)
DropFirstAnySeqCntRange 18956 19876 +4.9% 0.95x
DropFirstCountableRange 323 322 -0.3% 1.00x (?)
DropFirstCountableRangeLazy 36056 37394 +3.7% 0.96x (?)
DropLastCountableRange 111 111 +0.0% 1.00x
DropWhileAnyCollection 23954 24978 +4.3% 0.96x
DropWhileAnySeqCRangeIter 30155 31705 +5.1% 0.95x
DropWhileCountableRange 5727 5769 +0.7% 0.99x (?)
EqualStringSubstring 626 626 +0.0% 1.00x
EqualSubstringString 628 638 +1.6% 0.98x (?)
EqualSubstringSubstring 758 757 -0.1% 1.00x (?)
EqualSubstringSubstringGenericEquatable 404 404 +0.0% 1.00x
Hanoi 17232 17066 -1.0% 1.01x
HashTest 17270 17675 +2.3% 0.98x (?)
Integrate 664 686 +3.3% 0.97x
IterateData 12106 12102 -0.0% 1.00x (?)
LessSubstringSubstring 738 736 -0.3% 1.00x (?)
LessSubstringSubstringGenericComparable 413 424 +2.7% 0.97x (?)
LinkedList 37958 37965 +0.0% 1.00x (?)
Memset 41536 41534 -0.0% 1.00x (?)
MonteCarloPi 49332 49327 -0.0% 1.00x (?)
NSDictionaryCastToSwift 6073 6308 +3.9% 0.96x (?)
NSError 660 659 -0.2% 1.00x (?)
NSStringConversion 375 370 -1.3% 1.01x (?)
ObjectiveCBridgeFromNSArrayAnyObject 22896 22456 -1.9% 1.02x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 6328 6259 -1.1% 1.01x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 38550 37493 -2.7% 1.03x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 31874 32004 +0.4% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 115232 115598 +0.3% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 6938 7008 +1.0% 0.99x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 89657 88760 -1.0% 1.01x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 96737 96917 +0.2% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObject 67154 65537 -2.4% 1.02x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 7212 7142 -1.0% 1.01x (?)
ObjectiveCBridgeFromNSSetAnyObjectToString 70798 70808 +0.0% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 69665 70084 +0.6% 0.99x (?)
ObjectiveCBridgeFromNSString 3769 3805 +1.0% 0.99x (?)
ObjectiveCBridgeFromNSStringForced 2170 2138 -1.5% 1.01x (?)
ObjectiveCBridgeStubDataAppend 3551 3665 +3.2% 0.97x (?)
ObjectiveCBridgeStubDateAccess 977 993 +1.6% 0.98x (?)
ObjectiveCBridgeStubFromArrayOfNSString 24377 24011 -1.5% 1.02x (?)
ObjectiveCBridgeStubFromNSDate 4257 4185 -1.7% 1.02x (?)
ObjectiveCBridgeStubFromNSDateRef 4129 4129 +0.0% 1.00x
ObjectiveCBridgeStubFromNSString 556 539 -3.1% 1.03x
ObjectiveCBridgeStubFromNSStringRef 177 172 -2.8% 1.03x
ObjectiveCBridgeStubNSDataAppend 2600 2559 -1.6% 1.02x (?)
ObjectiveCBridgeStubNSDateMutationRef 15696 15882 +1.2% 0.99x (?)
ObjectiveCBridgeStubNSDateRefAccess 1201 1198 -0.2% 1.00x (?)
ObjectiveCBridgeStubToArrayOfNSString 27313 28372 +3.9% 0.96x (?)
ObjectiveCBridgeStubToNSDate 14112 14775 +4.7% 0.96x (?)
ObjectiveCBridgeStubToNSDateRef 3352 3361 +0.3% 1.00x (?)
ObjectiveCBridgeStubToNSString 1476 1475 -0.1% 1.00x (?)
ObjectiveCBridgeStubToNSStringRef 147 147 +0.0% 1.00x
ObjectiveCBridgeStubURLAppendPath 211825 212458 +0.3% 1.00x (?)
ObjectiveCBridgeStubURLAppendPathRef 223656 214873 -3.9% 1.04x (?)
ObjectiveCBridgeToNSArray 27848 27445 -1.4% 1.01x (?)
ObjectiveCBridgeToNSDictionary 42855 43661 +1.9% 0.98x (?)
ObjectiveCBridgeToNSSet 38668 37886 -2.0% 1.02x (?)
ObjectiveCBridgeToNSString 1231 1238 +0.6% 0.99x (?)
OpenClose 372 374 +0.5% 0.99x (?)
Phonebook 20335 20292 -0.2% 1.00x (?)
PolymorphicCalls 5185 5156 -0.6% 1.01x (?)
PopFrontArray 9339 9559 +2.4% 0.98x (?)
PopFrontArrayGeneric 8283 8205 -0.9% 1.01x (?)
PopFrontUnsafePointer 92842 94402 +1.7% 0.98x (?)
PrefixAnyCollection 19268 20012 +3.9% 0.96x
PrefixCountableRange 322 321 -0.3% 1.00x (?)
PrefixCountableRangeLazy 35834 37535 +4.7% 0.95x
PrefixWhileAnyCollection 35198 35816 +1.8% 0.98x (?)
PrefixWhileAnySeqCntRange 34978 36725 +5.0% 0.95x
PrefixWhileCountableRange 16558 16548 -0.1% 1.00x (?)
Prims 9595 9921 +3.4% 0.97x
ProtocolDispatch 6600 6576 -0.4% 1.00x (?)
ProtocolDispatch2 475 475 +0.0% 1.00x
RC4 19023 18897 -0.7% 1.01x (?)
RGBHistogramOfObjects 101918 103836 +1.9% 0.98x
RangeAssignment 5442 5461 +0.3% 1.00x (?)
RecursiveOwnedParameter 10614 10466 -1.4% 1.01x
SetExclusiveOr 20332 20172 -0.8% 1.01x
SetExclusiveOr_OfObjects 45524 45379 -0.3% 1.00x (?)
SetIntersect 10420 10402 -0.2% 1.00x (?)
SetIntersect_OfObjects 12143 12050 -0.8% 1.01x (?)
SetIsSubsetOf 1588 1581 -0.4% 1.00x
SetIsSubsetOf_OfObjects 1518 1511 -0.5% 1.00x
SetUnion 11232 11169 -0.6% 1.01x (?)
SetUnion_OfObjects 31828 31738 -0.3% 1.00x (?)
SevenBoom 1520 1510 -0.7% 1.01x (?)
SortLargeExistentials 17074 16954 -0.7% 1.01x
SortLettersInPlace 2971 2969 -0.1% 1.00x (?)
SortSortedStrings 1342 1340 -0.1% 1.00x (?)
SortStrings 2342 2318 -1.0% 1.01x
SortStringsUnicode 8575 8296 -3.3% 1.03x (?)
StackPromo 99403 96230 -3.2% 1.03x (?)
StaticArray 4331 4407 +1.8% 0.98x
StrComplexWalk 6402 6416 +0.2% 1.00x (?)
StrToInt 101534 104320 +2.7% 0.97x (?)
StringAdder 3549 3585 +1.0% 0.99x (?)
StringBuilderLong 1041 1052 +1.1% 0.99x (?)
StringEqualPointerComparison 2364 2297 -2.8% 1.03x
StringFromLongWholeSubstring 12502 12512 +0.1% 1.00x (?)
StringFromLongWholeSubstringGeneric 195 196 +0.5% 0.99x (?)
StringHasPrefixUnicode 16138 16115 -0.1% 1.00x (?)
StringHasSuffix 1735 1755 +1.2% 0.99x (?)
StringHasSuffixUnicode 61202 61413 +0.3% 1.00x (?)
StringInterpolation 13462 13477 +0.1% 1.00x (?)
StringWalk 12417 12613 +1.6% 0.98x (?)
StringWithCString 52661 52979 +0.6% 0.99x
SubstringFromLongString 12 12 +0.0% 1.00x
SubstringFromLongStringGeneric 105 105 +0.0% 1.00x
SuffixAnySeqCRangeIterLazy 40884 42700 +4.4% 0.96x
SuffixCountableRange 111 111 +0.0% 1.00x
TwoSum 4011 4003 -0.2% 1.00x (?)
TypeFlood 161 158 -1.9% 1.02x
Walsh 11266 11261 -0.0% 1.00x (?)
XorLoop 22370 22380 +0.0% 1.00x (?)
accessGlobal 171 178 +4.1% 0.96x
accessInMatSet 308 306 -0.6% 1.01x
accessIndependent 116 119 +2.6% 0.97x
Hardware Overview
  Model Name: Mac mini
  Model Identifier: Macmini7,1
  Processor Name: Intel Core i7
  Processor Speed: 3 GHz
  Number of Processors: 1
  Total Number of Cores: 2
  L2 Cache (per Core): 256 KB
  L3 Cache: 4 MB
  Memory: 16 GB

@jckarter
Copy link
Contributor Author

@gottesmm @aschwaighofer The effect on benchmarks looks pretty severe. Is there any minor improvement we could make to the ARC optimizer to get rid of the extra retain in situations when it's not needed, when it would be safe to widen the access into a lvalue?

@jckarter
Copy link
Contributor Author

@swift-ci Please benchmark

@rjmccall
Copy link
Contributor

There aren't very many places where we actually use AllowImmediatePlusZero emission in SILGen, and most of them are pretty random like x.dynamicType; I'm surprised it has a significant impact. In general it's architecturally bogus and we should instead be passing down a closure (staged into an Initialization, I guess) to use the value within the access.

I don't think you actually need to change the behavior for AllowGuaranteedPlusZero emission. On the other hand, loads shouldn't be taking advantage of that unless there's something sneaking in that's not really a load.

@jckarter
Copy link
Contributor Author

True, emitLoad already takes a separate isGuaranteedValid flag that is false in the problematic cases. I'll try changing the patch to only avoid passing down an immediate +0 context.

@jckarter jckarter force-pushed the fix-load-from-lvalue-peephole branch from 0e8af5f to 82d2a81 Compare July 18, 2017 21:19
@jckarter
Copy link
Contributor Author

@swift-ci Please smoke test

@jckarter
Copy link
Contributor Author

@swift-ci Please benchmark

@jckarter
Copy link
Contributor Author

@rjmccall How's this look now?

Now that we more tightly close formal accesses on lvalues, having LoadExpr and friends try to return a +0 loaded value is unsafe without deeper analysis, since the access will be closed immediately after the load and potentially free temporary memory that might be the only thing keeping the borrowed object alive. Fixes rdar://problem/32730865.
@jckarter jckarter force-pushed the fix-load-from-lvalue-peephole branch from 82d2a81 to 7705393 Compare July 18, 2017 22:13
@jckarter
Copy link
Contributor Author

@swift-ci Please smoke test

@jckarter
Copy link
Contributor Author

@swift-ci Please benchmark

@rjmccall
Copy link
Contributor

Looks great, thanks. Definitely happier.

@swift-ci
Copy link
Contributor

Build comment file:

Optimized (O)

Regression (36)
TEST OLD NEW DELTA SPEEDUP
StringHasPrefix 15 31 +106.7% 0.48x
StringHasSuffix 15 31 +106.7% 0.48x
DropFirstAnySequence 5343 9152 +71.3% 0.58x
DropFirstAnySequenceLazy 5338 9137 +71.2% 0.58x
PrefixAnySequenceLazy 4716 7638 +62.0% 0.62x
PrefixAnySequence 4737 7641 +61.3% 0.62x
PrefixWhileAnySequenceLazy 1407 2057 +46.2% 0.68x
DropWhileSequence 1461 1987 +36.0% 0.74x
PrefixSequenceLazy 1429 1923 +34.6% 0.74x
DropFirstSequence 1975 2654 +34.4% 0.74x
DropWhileAnySequenceLazy 1917 2576 +34.4% 0.74x
PrefixWhileAnySequence 13108 17597 +34.2% 0.74x
PrefixWhileAnySeqCRangeIter 11696 15689 +34.1% 0.75x
PrefixSequence 1482 1974 +33.2% 0.75x
SuffixAnySequenceLazy 6137 8152 +32.8% 0.75x
DropLastAnySequenceLazy 6130 8095 +32.1% 0.76x
SuffixAnySequence 6311 8315 +31.8% 0.76x
SuffixSequenceLazy 4160 5472 +31.5% 0.76x
SuffixSequence 4160 5471 +31.5% 0.76x
DropLastAnySeqCRangeIterLazy 4308 5642 +31.0% 0.76x
DropLastAnySeqCRangeIter 4308 5641 +30.9% 0.76x
DropFirstSequenceLazy 1998 2584 +29.3% 0.77x
SuffixAnySeqCRangeIterLazy 4618 5947 +28.8% 0.78x
SuffixAnySeqCRangeIter 4621 5945 +28.7% 0.78x
DropLastAnySequence 6357 8162 +28.4% 0.78x
DropWhileAnySequence 6187 7762 +25.5% 0.80x
ProtocolDispatch 2287 2574 +12.5% 0.89x
DropFirstAnySeqCRangeIter 24835 27296 +9.9% 0.91x
DropFirstAnySeqCRangeIterLazy 24839 27292 +9.9% 0.91x
PrefixAnySeqCRangeIter 19650 21292 +8.4% 0.92x
PrefixAnySeqCRangeIterLazy 19742 21325 +8.0% 0.93x
DropWhileAnySeqCRangeIter 19937 21466 +7.7% 0.93x
ReversedBidirectional 27359 29031 +6.1% 0.94x
CaptureProp 4314 4577 +6.1% 0.94x
SuffixAnyCollectionLazy 14065 14849 +5.6% 0.95x (?)
DropFirstAnyCollectionLazy 42276 44552 +5.4% 0.95x
Improvement (7)
TEST OLD NEW DELTA SPEEDUP
PopFrontArrayGeneric 1144 1041 -9.0% 1.10x
MapReduceAnyCollection 313 285 -8.9% 1.10x
ClassArrayGetter 13 12 -7.7% 1.08x
DropLastSequenceLazy 564 523 -7.3% 1.08x
DropLastSequence 563 523 -7.1% 1.08x
PrefixWhileSequence 295 278 -5.8% 1.06x
MapReduceString 94 89 -5.3% 1.06x (?)
No Changes (278)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 2787 2774 -0.5% 1.00x (?)
AnyHashableWithAClass 65023 64623 -0.6% 1.01x (?)
Array2D 1952 1950 -0.1% 1.00x (?)
ArrayAppend 728 727 -0.1% 1.00x (?)
ArrayAppendArrayOfInt 563 563 +0.0% 1.00x
ArrayAppendAscii 9363 9364 +0.0% 1.00x (?)
ArrayAppendFromGeneric 563 563 +0.0% 1.00x
ArrayAppendGenericStructs 1135 1135 +0.0% 1.00x
ArrayAppendLatin1 29301 29467 +0.6% 0.99x (?)
ArrayAppendLazyMap 879 878 -0.1% 1.00x (?)
ArrayAppendOptionals 1135 1135 +0.0% 1.00x
ArrayAppendRepeatCol 790 790 +0.0% 1.00x
ArrayAppendReserved 502 502 +0.0% 1.00x
ArrayAppendSequence 891 890 -0.1% 1.00x (?)
ArrayAppendStrings 12796 12781 -0.1% 1.00x (?)
ArrayAppendToFromGeneric 563 563 +0.0% 1.00x
ArrayAppendToGeneric 563 562 -0.2% 1.00x (?)
ArrayAppendUTF16 27817 27816 -0.0% 1.00x (?)
ArrayInClass 59 58 -1.7% 1.02x (?)
ArrayLiteral 1155 1144 -1.0% 1.01x (?)
ArrayOfGenericPOD 207 207 +0.0% 1.00x
ArrayOfGenericRef 3779 3784 +0.1% 1.00x (?)
ArrayOfPOD 156 156 +0.0% 1.00x
ArrayOfRef 3669 3673 +0.1% 1.00x (?)
ArrayPlusEqualArrayOfInt 562 563 +0.2% 1.00x (?)
ArrayPlusEqualFiveElementCollection 4193 4160 -0.8% 1.01x (?)
ArrayPlusEqualSingleElementCollection 726 727 +0.1% 1.00x (?)
ArrayPlusEqualThreeElements 1502 1498 -0.3% 1.00x (?)
ArraySubscript 1390 1387 -0.2% 1.00x (?)
ArrayValueProp 5 5 +0.0% 1.00x
ArrayValueProp2 5 5 +0.0% 1.00x
ArrayValueProp3 5 5 +0.0% 1.00x
ArrayValueProp4 5 5 +0.0% 1.00x
BitCount 139 140 +0.7% 0.99x (?)
ByteSwap 111 111 +0.0% 1.00x
CStringLongAscii 4189 4392 +4.8% 0.95x (?)
CStringLongNonAscii 1979 2043 +3.2% 0.97x (?)
CStringShortAscii 4398 4411 +0.3% 1.00x (?)
Calculator 30 30 +0.0% 1.00x
CharIndexing_ascii_unicodeScalars 13409 13217 -1.4% 1.01x
CharIndexing_ascii_unicodeScalars_Backwards 10987 10616 -3.4% 1.03x
CharIndexing_chinese_unicodeScalars 10161 10014 -1.4% 1.01x
CharIndexing_chinese_unicodeScalars_Backwards 8333 8045 -3.5% 1.04x
CharIndexing_japanese_unicodeScalars 16049 15819 -1.4% 1.01x
CharIndexing_japanese_unicodeScalars_Backwards 13142 12688 -3.5% 1.04x
CharIndexing_korean_unicodeScalars 13005 12817 -1.4% 1.01x (?)
CharIndexing_korean_unicodeScalars_Backwards 10656 10286 -3.5% 1.04x
CharIndexing_punctuatedJapanese_unicodeScalars 2446 2407 -1.6% 1.02x
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 2030 1967 -3.1% 1.03x
CharIndexing_punctuated_unicodeScalars 3054 3008 -1.5% 1.02x (?)
CharIndexing_punctuated_unicodeScalars_Backwards 2528 2447 -3.2% 1.03x
CharIndexing_russian_unicodeScalars 11176 11015 -1.4% 1.01x
CharIndexing_russian_unicodeScalars_Backwards 9163 8846 -3.5% 1.04x
CharIndexing_tweet_unicodeScalars 26431 26077 -1.3% 1.01x
CharIndexing_tweet_unicodeScalars_Backwards 21655 20933 -3.3% 1.03x
CharIndexing_utf16_unicodeScalars 78016 78054 +0.0% 1.00x (?)
CharIndexing_utf16_unicodeScalars_Backwards 77743 77909 +0.2% 1.00x (?)
CharIteration_ascii_unicodeScalars 15302 15305 +0.0% 1.00x (?)
CharIteration_ascii_unicodeScalars_Backwards 15638 15261 -2.4% 1.02x
CharIteration_chinese_unicodeScalars 11593 11595 +0.0% 1.00x (?)
CharIteration_chinese_unicodeScalars_Backwards 11843 11555 -2.4% 1.02x
CharIteration_japanese_unicodeScalars 18320 18324 +0.0% 1.00x (?)
CharIteration_japanese_unicodeScalars_Backwards 18730 18274 -2.4% 1.02x
CharIteration_korean_unicodeScalars 14839 14835 -0.0% 1.00x (?)
CharIteration_korean_unicodeScalars_Backwards 15167 14798 -2.4% 1.02x
CharIteration_punctuatedJapanese_unicodeScalars 2773 2777 +0.1% 1.00x (?)
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 2823 2752 -2.5% 1.03x
CharIteration_punctuated_unicodeScalars 3471 3468 -0.1% 1.00x (?)
CharIteration_punctuated_unicodeScalars_Backwards 3535 3447 -2.5% 1.03x
CharIteration_russian_unicodeScalars 12751 12750 -0.0% 1.00x (?)
CharIteration_russian_unicodeScalars_Backwards 13031 12713 -2.4% 1.03x
CharIteration_tweet_unicodeScalars 30169 30151 -0.1% 1.00x (?)
CharIteration_tweet_unicodeScalars_Backwards 30906 30164 -2.4% 1.02x
CharIteration_utf16_unicodeScalars 86558 87545 +1.1% 0.99x (?)
CharIteration_utf16_unicodeScalars_Backwards 112764 112836 +0.1% 1.00x (?)
CharacterLiteralsLarge 5682 5666 -0.3% 1.00x (?)
CharacterLiteralsSmall 381 380 -0.3% 1.00x
Chars 396 394 -0.5% 1.01x
DeadArray 175 175 +0.0% 1.00x
Dictionary 524 525 +0.2% 1.00x (?)
Dictionary2 1735 1728 -0.4% 1.00x (?)
Dictionary2OfObjects 3089 3085 -0.1% 1.00x (?)
Dictionary3 415 416 +0.2% 1.00x (?)
Dictionary3OfObjects 837 832 -0.6% 1.01x (?)
DictionaryBridge 2397 2441 +1.8% 0.98x (?)
DictionaryGroup 260 259 -0.4% 1.00x (?)
DictionaryGroupOfObjects 1686 1685 -0.1% 1.00x (?)
DictionaryLiteral 1397 1398 +0.1% 1.00x (?)
DictionaryOfObjects 2190 2187 -0.1% 1.00x (?)
DictionaryRemove 2288 2297 +0.4% 1.00x (?)
DictionaryRemoveOfObjects 22081 21891 -0.9% 1.01x (?)
DictionarySwap 405 405 +0.0% 1.00x
DictionarySwapOfObjects 6632 6498 -2.0% 1.02x (?)
DropFirstAnyCollection 53 53 +0.0% 1.00x
DropFirstAnySeqCntRange 48 48 +0.0% 1.00x
DropFirstAnySeqCntRangeLazy 48 48 +0.0% 1.00x
DropFirstArray 23 23 +0.0% 1.00x
DropFirstArrayLazy 23 23 +0.0% 1.00x
DropFirstCountableRange 30 30 +0.0% 1.00x
DropFirstCountableRangeLazy 30 30 +0.0% 1.00x
DropLastAnyCollection 21 21 +0.0% 1.00x
DropLastAnyCollectionLazy 14083 14729 +4.6% 0.96x
DropLastAnySeqCntRange 15 15 +0.0% 1.00x
DropLastAnySeqCntRangeLazy 15 15 +0.0% 1.00x
DropLastArray 7 7 +0.0% 1.00x
DropLastArrayLazy 7 7 +0.0% 1.00x
DropLastCountableRange 10 10 +0.0% 1.00x
DropLastCountableRangeLazy 10 10 +0.0% 1.00x
DropWhileAnyCollection 66 66 +0.0% 1.00x
DropWhileAnyCollectionLazy 97 98 +1.0% 0.99x
DropWhileAnySeqCRangeIterLazy 97 98 +1.0% 0.99x
DropWhileAnySeqCntRange 60 60 +0.0% 1.00x
DropWhileAnySeqCntRangeLazy 97 97 +0.0% 1.00x
DropWhileArray 35 35 +0.0% 1.00x
DropWhileArrayLazy 73 73 +0.0% 1.00x
DropWhileCountableRange 34 34 +0.0% 1.00x
DropWhileCountableRangeLazy 64 64 +0.0% 1.00x
DropWhileSequenceLazy 61 61 +0.0% 1.00x
EqualStringSubstring 362 362 +0.0% 1.00x
EqualSubstringString 361 362 +0.3% 1.00x (?)
EqualSubstringSubstring 362 363 +0.3% 1.00x
EqualSubstringSubstringGenericEquatable 367 366 -0.3% 1.00x
ErrorHandling 2657 2634 -0.9% 1.01x (?)
Hanoi 3164 3114 -1.6% 1.02x
HashTest 1605 1603 -0.1% 1.00x (?)
Histogram 285 284 -0.4% 1.00x (?)
Integrate 249 249 +0.0% 1.00x
IterateData 716 718 +0.3% 1.00x
Join 366 365 -0.3% 1.00x (?)
LazilyFilteredArrays 61681 61583 -0.2% 1.00x (?)
LazilyFilteredRange 3656 3656 +0.0% 1.00x
LessSubstringSubstring 364 364 +0.0% 1.00x
LessSubstringSubstringGenericComparable 363 362 -0.3% 1.00x
LinkedList 6773 6772 -0.0% 1.00x (?)
MapReduce 309 308 -0.3% 1.00x (?)
MapReduceAnyCollectionShort 1894 1877 -0.9% 1.01x (?)
MapReduceClass 2890 2889 -0.0% 1.00x (?)
MapReduceClassShort 4294 4286 -0.2% 1.00x (?)
MapReduceLazyCollection 14 14 +0.0% 1.00x
MapReduceLazyCollectionShort 42 42 +0.0% 1.00x
MapReduceLazySequence 85 85 +0.0% 1.00x
MapReduceSequence 425 425 +0.0% 1.00x
MapReduceShort 1823 1821 -0.1% 1.00x (?)
MapReduceShortString 20 20 +0.0% 1.00x
Memset 221 221 +0.0% 1.00x
MonteCarloE 9695 9625 -0.7% 1.01x (?)
MonteCarloPi 41315 41430 +0.3% 1.00x (?)
NSDictionaryCastToSwift 5121 5049 -1.4% 1.01x (?)
NSError 273 273 +0.0% 1.00x
NSStringConversion 335 329 -1.8% 1.02x
NopDeinit 21617 21619 +0.0% 1.00x (?)
ObjectAllocation 168 167 -0.6% 1.01x (?)
ObjectiveCBridgeFromNSArrayAnyObject 20715 21171 +2.2% 0.98x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 3285 3251 -1.0% 1.01x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 36420 36851 +1.2% 0.99x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 31065 31199 +0.4% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 111353 111748 +0.4% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 4809 4760 -1.0% 1.01x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 88478 88600 +0.1% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 92216 91902 -0.3% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObject 60218 60406 +0.3% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 3965 3950 -0.4% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectToString 63679 64098 +0.7% 0.99x (?)
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 63424 63821 +0.6% 0.99x (?)
ObjectiveCBridgeFromNSString 933 931 -0.2% 1.00x (?)
ObjectiveCBridgeFromNSStringForced 1706 1725 +1.1% 0.99x (?)
ObjectiveCBridgeStubDataAppend 3489 3508 +0.5% 0.99x (?)
ObjectiveCBridgeStubDateAccess 171 171 +0.0% 1.00x
ObjectiveCBridgeStubDateMutation 257 257 +0.0% 1.00x
ObjectiveCBridgeStubFromArrayOfNSString 23015 22987 -0.1% 1.00x (?)
ObjectiveCBridgeStubFromNSDate 3369 3210 -4.7% 1.05x (?)
ObjectiveCBridgeStubFromNSDateRef 3788 3798 +0.3% 1.00x (?)
ObjectiveCBridgeStubFromNSString 504 507 +0.6% 0.99x (?)
ObjectiveCBridgeStubFromNSStringRef 135 140 +3.7% 0.96x
ObjectiveCBridgeStubNSDataAppend 2184 2173 -0.5% 1.01x (?)
ObjectiveCBridgeStubNSDateMutationRef 11360 11343 -0.1% 1.00x (?)
ObjectiveCBridgeStubNSDateRefAccess 298 298 +0.0% 1.00x
ObjectiveCBridgeStubToArrayOfNSString 27339 27557 +0.8% 0.99x (?)
ObjectiveCBridgeStubToNSDate 13456 13542 +0.6% 0.99x (?)
ObjectiveCBridgeStubToNSDateRef 3046 3069 +0.8% 0.99x (?)
ObjectiveCBridgeStubToNSString 1427 1434 +0.5% 1.00x (?)
ObjectiveCBridgeStubToNSStringRef 103 103 +0.0% 1.00x
ObjectiveCBridgeStubURLAppendPath 208893 206427 -1.2% 1.01x (?)
ObjectiveCBridgeStubURLAppendPathRef 209674 204506 -2.5% 1.03x (?)
ObjectiveCBridgeToNSArray 27102 27304 +0.7% 0.99x (?)
ObjectiveCBridgeToNSDictionary 41837 42028 +0.5% 1.00x (?)
ObjectiveCBridgeToNSSet 36637 36969 +0.9% 0.99x (?)
ObjectiveCBridgeToNSString 1193 1199 +0.5% 0.99x (?)
ObserverClosure 2141 2138 -0.1% 1.00x (?)
ObserverForwarderStruct 1037 1041 +0.4% 1.00x (?)
ObserverPartiallyAppliedMethod 3546 3543 -0.1% 1.00x (?)
ObserverUnappliedMethod 2482 2485 +0.1% 1.00x (?)
OpenClose 48 48 +0.0% 1.00x
Phonebook 5494 5453 -0.7% 1.01x (?)
PolymorphicCalls 20 20 +0.0% 1.00x
PopFrontArray 1144 1135 -0.8% 1.01x
PopFrontUnsafePointer 8997 8975 -0.2% 1.00x (?)
PrefixAnyCollection 53 53 +0.0% 1.00x
PrefixAnyCollectionLazy 42450 44484 +4.8% 0.95x
PrefixAnySeqCntRange 48 48 +0.0% 1.00x
PrefixAnySeqCntRangeLazy 48 48 +0.0% 1.00x
PrefixArray 23 23 +0.0% 1.00x
PrefixArrayLazy 23 23 +0.0% 1.00x
PrefixCountableRange 30 30 +0.0% 1.00x
PrefixCountableRangeLazy 30 30 +0.0% 1.00x
PrefixWhileAnyCollection 91 91 +0.0% 1.00x
PrefixWhileAnyCollectionLazy 71 71 +0.0% 1.00x
PrefixWhileAnySeqCRangeIterLazy 71 71 +0.0% 1.00x
PrefixWhileAnySeqCntRange 85 85 +0.0% 1.00x
PrefixWhileAnySeqCntRangeLazy 71 71 +0.0% 1.00x
PrefixWhileArray 58 58 +0.0% 1.00x
PrefixWhileArrayLazy 47 47 +0.0% 1.00x
PrefixWhileCountableRange 34 34 +0.0% 1.00x
PrefixWhileCountableRangeLazy 30 30 +0.0% 1.00x
PrefixWhileSequenceLazy 26 26 +0.0% 1.00x
Prims 726 729 +0.4% 1.00x (?)
ProtocolDispatch2 151 152 +0.7% 0.99x (?)
RC4 151 150 -0.7% 1.01x (?)
RGBHistogram 2216 2235 +0.9% 0.99x (?)
RGBHistogramOfObjects 23019 22976 -0.2% 1.00x (?)
RangeAssignment 290 285 -1.7% 1.02x (?)
RecursiveOwnedParameter 2197 2184 -0.6% 1.01x (?)
ReversedArray 46 46 +0.0% 1.00x
ReversedDictionary 98 99 +1.0% 0.99x (?)
SetExclusiveOr 2990 3034 +1.5% 0.99x (?)
SetExclusiveOr_OfObjects 9010 8981 -0.3% 1.00x (?)
SetIntersect 279 278 -0.4% 1.00x (?)
SetIntersect_OfObjects 1620 1627 +0.4% 1.00x (?)
SetIsSubsetOf 275 275 +0.0% 1.00x
SetIsSubsetOf_OfObjects 338 338 +0.0% 1.00x
SetUnion 2564 2613 +1.9% 0.98x (?)
SetUnion_OfObjects 7701 7619 -1.1% 1.01x (?)
SevenBoom 1383 1385 +0.1% 1.00x (?)
Sim2DArray 260 260 +0.0% 1.00x
SortLargeExistentials 7422 7416 -0.1% 1.00x (?)
SortLettersInPlace 1080 1080 +0.0% 1.00x
SortSortedStrings 790 799 +1.1% 0.99x (?)
SortStrings 1549 1553 +0.3% 1.00x (?)
SortStringsUnicode 7445 7243 -2.7% 1.03x
StackPromo 21058 21091 +0.2% 1.00x (?)
StaticArray 17 17 +0.0% 1.00x
StrComplexWalk 679 679 +0.0% 1.00x
StrToInt 1868 1853 -0.8% 1.01x
StringAdder 3318 3317 -0.0% 1.00x (?)
StringBuilder 959 963 +0.4% 1.00x (?)
StringBuilderLong 873 873 +0.0% 1.00x
StringEdits 108465 110664 +2.0% 0.98x
StringEqualPointerComparison 314 314 +0.0% 1.00x
StringFromLongWholeSubstring 13105 13069 -0.3% 1.00x (?)
StringFromLongWholeSubstringGeneric 20 20 +0.0% 1.00x
StringHasPrefixUnicode 13942 13760 -1.3% 1.01x (?)
StringHasSuffixUnicode 58334 58637 +0.5% 0.99x
StringInterpolation 10139 10118 -0.2% 1.00x (?)
StringMatch 7315 7033 -3.9% 1.04x
StringUTF16Builder 1773 1777 +0.2% 1.00x (?)
StringWalk 1216 1215 -0.1% 1.00x (?)
StringWithCString 53403 55442 +3.8% 0.96x (?)
SubstringComparable 1452 1450 -0.1% 1.00x (?)
SubstringEqualString 1345 1349 +0.3% 1.00x (?)
SubstringEquatable 3238 3214 -0.7% 1.01x (?)
SubstringFromLongString 9 9 +0.0% 1.00x
SubstringFromLongStringGeneric 57 57 +0.0% 1.00x
SuffixAnyCollection 21 21 +0.0% 1.00x
SuffixAnySeqCntRange 15 15 +0.0% 1.00x
SuffixAnySeqCntRangeLazy 15 15 +0.0% 1.00x
SuffixArray 7 7 +0.0% 1.00x
SuffixArrayLazy 7 7 +0.0% 1.00x
SuffixCountableRange 10 10 +0.0% 1.00x
SuffixCountableRangeLazy 10 10 +0.0% 1.00x
SuperChars 76290 76127 -0.2% 1.00x (?)
TwoSum 914 915 +0.1% 1.00x (?)
TypeFlood 0 0 +0.0% 1.00x
UTF8Decode 239 239 +0.0% 1.00x
Walsh 335 335 +0.0% 1.00x
XorLoop 327 327 +0.0% 1.00x
accessGlobal 2 2 +0.0% 1.00x
accessInMatSet 17 17 +0.0% 1.00x
accessIndependent 2 2 +0.0% 1.00x

Unoptimized (Onone)

Regression (163)
TEST OLD NEW DELTA SPEEDUP
PrefixArray 5824 9618 +65.1% 0.61x
DropFirstArray 5824 9617 +65.1% 0.61x
DropLastArray 1960 3211 +63.8% 0.61x
SuffixArray 1960 3211 +63.8% 0.61x
ArrayAppendSequence 69286 107921 +55.8% 0.64x
PrefixWhileArrayLazy 13742 20211 +47.1% 0.68x
DropWhileArray 9192 13047 +41.9% 0.70x
ArrayAppendLazyMap 203775 288283 +41.5% 0.71x
PrefixWhileSequenceLazy 9689 13517 +39.5% 0.72x
Sim2DArray 31470 43680 +38.8% 0.72x
DropWhileArrayLazy 15828 21797 +37.7% 0.73x
Chars 45680 62873 +37.6% 0.73x
DropFirstSequenceLazy 10890 14688 +34.9% 0.74x
DropFirstSequence 10916 14655 +34.3% 0.74x
MapReduceLazyCollection 30654 40981 +33.7% 0.75x
PrefixWhileAnySequenceLazy 10518 14004 +33.1% 0.75x
PrefixSequence 8935 11864 +32.8% 0.75x
UTF8Decode 35010 46485 +32.8% 0.75x
PrefixSequenceLazy 8949 11864 +32.6% 0.75x
DropFirstAnySequenceLazy 11956 15793 +32.1% 0.76x
DropFirstAnySequence 11944 15720 +31.6% 0.76x
DropWhileSequenceLazy 10345 13564 +31.1% 0.76x
PrefixAnySequenceLazy 10034 12948 +29.0% 0.77x
PrefixAnySequence 10001 12854 +28.5% 0.78x
MapReduceLazySequence 23557 30242 +28.4% 0.78x
ReversedDictionary 26307 33385 +26.9% 0.79x
MapReduceLazyCollectionShort 41201 52004 +26.2% 0.79x
DropWhileAnySequenceLazy 11467 14330 +25.0% 0.80x
CharIteration_tweet_unicodeScalars 335285 418278 +24.8% 0.80x
CharIteration_japanese_unicodeScalars 203496 253849 +24.7% 0.80x
CharIteration_russian_unicodeScalars 141392 176123 +24.6% 0.80x
CharIteration_chinese_unicodeScalars 128629 160138 +24.5% 0.80x
CharIteration_korean_unicodeScalars 165098 205458 +24.4% 0.80x
MapReduceSequence 38252 47601 +24.4% 0.80x
PrefixWhileArray 15794 19651 +24.4% 0.80x
CharIteration_punctuated_unicodeScalars 37942 47186 +24.4% 0.80x
ArrayValueProp2 17197 21351 +24.2% 0.81x
CharIteration_ascii_unicodeScalars 170628 211609 +24.0% 0.81x
CharIteration_japanese_unicodeScalars_Backwards 363588 450469 +23.9% 0.81x
CharIteration_punctuatedJapanese_unicodeScalars 30202 37401 +23.8% 0.81x
CharIndexing_punctuatedJapanese_unicodeScalars 76609 93698 +22.3% 0.82x
CharIteration_chinese_unicodeScalars_Backwards 228978 278941 +21.8% 0.82x
Join 1129 1374 +21.7% 0.82x
CharIteration_russian_unicodeScalars_Backwards 252738 307202 +21.5% 0.82x
CharIteration_tweet_unicodeScalars_Backwards 603792 731934 +21.2% 0.82x
CharIteration_ascii_unicodeScalars_Backwards 304693 369270 +21.2% 0.83x
StringBuilder 6557 7938 +21.1% 0.83x
CharIteration_korean_unicodeScalars_Backwards 295720 357547 +20.9% 0.83x
CharIteration_punctuated_unicodeScalars_Backwards 66982 80985 +20.9% 0.83x
CharIndexing_tweet_unicodeScalars 881037 1065040 +20.9% 0.83x
LazilyFilteredArrays 1594055 1925440 +20.8% 0.83x
PrefixWhileSequence 26668 32118 +20.4% 0.83x
CharIndexing_korean_unicodeScalars 431728 519903 +20.4% 0.83x
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 53235 64089 +20.4% 0.83x
CharIndexing_chinese_unicodeScalars 335761 404034 +20.3% 0.83x
CharIndexing_punctuated_unicodeScalars 97901 117684 +20.2% 0.83x
CharIndexing_russian_unicodeScalars 370171 444535 +20.1% 0.83x
CharIndexing_japanese_unicodeScalars 535291 642316 +20.0% 0.83x
ReversedArray 41484 49593 +19.5% 0.84x
CharIndexing_utf16_unicodeScalars 506011 604836 +19.5% 0.84x
MapReduce 35492 42312 +19.2% 0.84x
CaptureProp 102926 122267 +18.8% 0.84x
CharIteration_utf16_unicodeScalars_Backwards 391827 465419 +18.8% 0.84x
MapReduceString 2458 2919 +18.8% 0.84x
MapReduceAnyCollection 35192 41753 +18.6% 0.84x
PrefixWhileAnySequence 27954 33138 +18.5% 0.84x
CharIndexing_ascii_unicodeScalars 451276 534925 +18.5% 0.84x
StringUTF16Builder 7434 8729 +17.4% 0.85x
SubstringEquatable 7627 8945 +17.3% 0.85x
Dictionary 2844 3324 +16.9% 0.86x
MapReduceClassShort 51028 59596 +16.8% 0.86x
SuperChars 177946 207529 +16.6% 0.86x
PrefixWhileAnySeqCntRangeLazy 20938 24409 +16.6% 0.86x
MapReduceClass 40275 46829 +16.3% 0.86x
PrefixWhileAnyCollectionLazy 21186 24470 +15.5% 0.87x
StringMatch 30089 34736 +15.4% 0.87x
DropWhileAnySeqCntRangeLazy 25219 29089 +15.3% 0.87x
PrefixWhileAnySeqCRangeIterLazy 20855 24029 +15.2% 0.87x
CharIndexing_ascii_unicodeScalars_Backwards 512298 590015 +15.2% 0.87x
DropWhileAnyCollectionLazy 25496 29356 +15.1% 0.87x
CharIndexing_utf16_unicodeScalars_Backwards 575158 661002 +14.9% 0.87x
DropFirstArrayLazy 42155 48436 +14.9% 0.87x
SubstringComparable 3891 4470 +14.9% 0.87x
MapReduceShort 46805 53744 +14.8% 0.87x
CharIndexing_chinese_unicodeScalars_Backwards 387188 444348 +14.8% 0.87x
DropLastArrayLazy 14072 16146 +14.7% 0.87x
ReversedBidirectional 71911 82449 +14.7% 0.87x
PrefixArrayLazy 42166 48335 +14.6% 0.87x
ErrorHandling 6337 7264 +14.6% 0.87x
SuffixArrayLazy 14069 16124 +14.6% 0.87x
CharIndexing_punctuated_unicodeScalars_Backwards 112080 128395 +14.6% 0.87x
ObjectAllocation 1374 1571 +14.3% 0.87x
ObserverForwarderStruct 4529 5176 +14.3% 0.88x
CharIndexing_tweet_unicodeScalars_Backwards 1017534 1161034 +14.1% 0.88x
DropWhileSequence 13224 15067 +13.9% 0.88x
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 89075 101301 +13.7% 0.88x
DropWhileAnySequence 14191 16131 +13.7% 0.88x
PrefixWhileAnySeqCRangeIter 38485 43707 +13.6% 0.88x
DropWhileAnySeqCRangeIterLazy 25303 28716 +13.5% 0.88x
MapReduceAnyCollectionShort 47313 53682 +13.5% 0.88x
CharIndexing_russian_unicodeScalars_Backwards 430824 488346 +13.4% 0.88x
CharIteration_utf16_unicodeScalars 200817 227517 +13.3% 0.88x
CharIndexing_japanese_unicodeScalars_Backwards 620745 702874 +13.2% 0.88x
SuffixSequence 24784 27973 +12.9% 0.89x
PrefixAnyCollectionLazy 128303 144790 +12.9% 0.89x
SuffixAnySequenceLazy 25211 28435 +12.8% 0.89x
SuffixAnySequence 25182 28359 +12.6% 0.89x
Histogram 8261 9300 +12.6% 0.89x
CharIndexing_korean_unicodeScalars_Backwards 507467 570978 +12.5% 0.89x (?)
SuffixSequenceLazy 24921 28027 +12.5% 0.89x
DropFirstAnySeqCRangeIterLazy 26603 29911 +12.4% 0.89x
PrefixWhileCountableRangeLazy 20398 22929 +12.4% 0.89x
DropLastAnySequence 27365 30621 +11.9% 0.89x
LazilyFilteredRange 635428 709406 +11.6% 0.90x
MapReduceShortString 265 295 +11.3% 0.90x
SuffixAnyCollectionLazy 43027 47890 +11.3% 0.90x
DropLastAnyCollectionLazy 43158 47966 +11.1% 0.90x
DropFirstAnyCollectionLazy 129681 143886 +11.0% 0.90x
DropWhileCountableRangeLazy 24430 27106 +11.0% 0.90x
ObserverUnappliedMethod 8022 8900 +10.9% 0.90x
DropLastAnySequenceLazy 27606 30491 +10.5% 0.91x
DropLastSequence 27124 29933 +10.4% 0.91x
MonteCarloE 127598 140547 +10.1% 0.91x
DropLastSequenceLazy 27321 30089 +10.1% 0.91x
ArrayAppendReserved 3360 3692 +9.9% 0.91x
StringEdits 355254 390044 +9.8% 0.91x
PrefixAnySeqCRangeIterLazy 21368 23456 +9.8% 0.91x
ObserverClosure 6458 7088 +9.8% 0.91x
PrefixAnySeqCRangeIter 21254 23302 +9.6% 0.91x
DropLastAnySeqCRangeIter 40948 44887 +9.6% 0.91x
DropFirstAnySeqCRangeIter 26862 29407 +9.5% 0.91x
PrefixAnySeqCntRangeLazy 17734 19347 +9.1% 0.92x
SuffixAnySeqCRangeIter 38834 42317 +9.0% 0.92x
DropLastAnyCollection 5904 6430 +8.9% 0.92x
DropLastAnySeqCntRange 5910 6434 +8.9% 0.92x
SuffixAnySeqCRangeIterLazy 39240 42671 +8.7% 0.92x
ObserverPartiallyAppliedMethod 7744 8418 +8.7% 0.92x
AngryPhonebook 4879 5302 +8.7% 0.92x
DropFirstAnyCollection 17704 19235 +8.6% 0.92x
DropFirstAnySeqCntRangeLazy 17718 19248 +8.6% 0.92x
NopDeinit 162031 175807 +8.5% 0.92x
SuffixAnySeqCntRange 5917 6419 +8.5% 0.92x
DictionaryGroupOfObjects 7650 8289 +8.4% 0.92x
SuffixAnyCollection 5935 6429 +8.3% 0.92x
PrefixAnyCollection 17767 19238 +8.3% 0.92x
ArrayAppendRepeatCol 200260 216814 +8.3% 0.92x
PrefixAnySeqCntRange 17883 19297 +7.9% 0.93x
DropFirstAnySeqCntRange 17893 19274 +7.7% 0.93x
DictionaryOfObjects 6253 6717 +7.4% 0.93x
SuffixAnySeqCntRangeLazy 5997 6442 +7.4% 0.93x
DropWhileAnySeqCRangeIter 28708 30836 +7.4% 0.93x
DictionaryGroup 4746 5095 +7.4% 0.93x
DropLastAnySeqCntRangeLazy 6006 6419 +6.9% 0.94x
DropLastAnySeqCRangeIterLazy 41526 44352 +6.8% 0.94x
DropWhileAnySeqCntRange 23053 24575 +6.6% 0.94x
DropWhileAnyCollection 23176 24701 +6.6% 0.94x
RGBHistogram 32360 34399 +6.3% 0.94x
DropLastCountableRangeLazy 11789 12494 +6.0% 0.94x
ObjectiveCBridgeStubURLAppendPathRef 203456 215332 +5.8% 0.94x (?)
ArrayOfGenericPOD 2815 2978 +5.8% 0.95x
SuffixCountableRangeLazy 11783 12433 +5.5% 0.95x
StringHasPrefix 1544 1629 +5.5% 0.95x
Calculator 1097 1157 +5.5% 0.95x
Improvement (1)
TEST OLD NEW DELTA SPEEDUP
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 7296 6771 -7.2% 1.08x (?)
No Changes (157)
TEST OLD NEW DELTA SPEEDUP
AnyHashableWithAClass 79835 79861 +0.0% 1.00x (?)
Array2D 569879 570097 +0.0% 1.00x (?)
ArrayAppend 3511 3467 -1.3% 1.01x
ArrayAppendArrayOfInt 615 616 +0.2% 1.00x (?)
ArrayAppendAscii 48919 48661 -0.5% 1.01x
ArrayAppendFromGeneric 618 618 +0.0% 1.00x
ArrayAppendGenericStructs 1193 1192 -0.1% 1.00x (?)
ArrayAppendLatin1 69448 70965 +2.2% 0.98x
ArrayAppendOptionals 1194 1193 -0.1% 1.00x (?)
ArrayAppendStrings 12929 12956 +0.2% 1.00x (?)
ArrayAppendToFromGeneric 617 618 +0.2% 1.00x
ArrayAppendToGeneric 618 618 +0.0% 1.00x
ArrayAppendUTF16 70548 70489 -0.1% 1.00x (?)
ArrayInClass 5870 5921 +0.9% 0.99x
ArrayLiteral 1673 1662 -0.7% 1.01x (?)
ArrayOfGenericRef 9445 9466 +0.2% 1.00x (?)
ArrayOfPOD 1784 1785 +0.1% 1.00x (?)
ArrayOfRef 8539 8562 +0.3% 1.00x (?)
ArrayPlusEqualArrayOfInt 616 616 +0.0% 1.00x
ArrayPlusEqualFiveElementCollection 281979 280753 -0.4% 1.00x (?)
ArrayPlusEqualSingleElementCollection 278956 277736 -0.4% 1.00x (?)
ArrayPlusEqualThreeElements 10275 10304 +0.3% 1.00x (?)
ArraySubscript 3953 3961 +0.2% 1.00x (?)
ArrayValueProp 3320 3339 +0.6% 0.99x (?)
ArrayValueProp3 3686 3684 -0.1% 1.00x (?)
ArrayValueProp4 3636 3645 +0.2% 1.00x (?)
BitCount 1625 1632 +0.4% 1.00x (?)
ByteSwap 3908 3927 +0.5% 1.00x (?)
CStringLongAscii 4168 4170 +0.0% 1.00x (?)
CStringLongNonAscii 2135 2139 +0.2% 1.00x (?)
CStringShortAscii 8108 8528 +5.2% 0.95x
CharacterLiteralsLarge 5853 5894 +0.7% 0.99x (?)
CharacterLiteralsSmall 616 618 +0.3% 1.00x
ClassArrayGetter 931 931 +0.0% 1.00x
DeadArray 107236 109857 +2.4% 0.98x (?)
Dictionary2 3310 3297 -0.4% 1.00x (?)
Dictionary2OfObjects 5811 5807 -0.1% 1.00x (?)
Dictionary3 1242 1238 -0.3% 1.00x (?)
Dictionary3OfObjects 2198 2203 +0.2% 1.00x (?)
DictionaryBridge 2522 2519 -0.1% 1.00x (?)
DictionaryLiteral 7855 7868 +0.2% 1.00x (?)
DictionaryRemove 20154 20210 +0.3% 1.00x
DictionaryRemoveOfObjects 56239 56016 -0.4% 1.00x (?)
DictionarySwap 4979 5060 +1.6% 0.98x
DictionarySwapOfObjects 21676 21573 -0.5% 1.00x (?)
DropFirstCountableRange 320 320 +0.0% 1.00x
DropFirstCountableRangeLazy 35247 36036 +2.2% 0.98x (?)
DropLastCountableRange 111 111 +0.0% 1.00x
DropWhileCountableRange 5717 5801 +1.5% 0.99x (?)
EqualStringSubstring 622 624 +0.3% 1.00x (?)
EqualSubstringString 623 624 +0.2% 1.00x (?)
EqualSubstringSubstring 729 730 +0.1% 1.00x (?)
EqualSubstringSubstringGenericEquatable 393 393 +0.0% 1.00x
Hanoi 17228 17298 +0.4% 1.00x (?)
HashTest 17090 17479 +2.3% 0.98x
Integrate 658 687 +4.4% 0.96x
IterateData 12092 12092 +0.0% 1.00x
LessSubstringSubstring 739 739 +0.0% 1.00x
LessSubstringSubstringGenericComparable 412 410 -0.5% 1.00x
LinkedList 38178 37819 -0.9% 1.01x (?)
Memset 41513 41510 -0.0% 1.00x (?)
MonteCarloPi 49549 49678 +0.3% 1.00x
NSDictionaryCastToSwift 6283 6361 +1.2% 0.99x (?)
NSError 674 663 -1.6% 1.02x (?)
NSStringConversion 370 378 +2.2% 0.98x (?)
ObjectiveCBridgeFromNSArrayAnyObject 22632 23040 +1.8% 0.98x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 6404 6421 +0.3% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 37415 37782 +1.0% 0.99x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 32120 32335 +0.7% 0.99x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 118554 115508 -2.6% 1.03x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 94198 94502 +0.3% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 96269 96437 +0.2% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObject 64680 64994 +0.5% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 7031 6916 -1.6% 1.02x (?)
ObjectiveCBridgeFromNSSetAnyObjectToString 68732 68755 +0.0% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 68950 68880 -0.1% 1.00x (?)
ObjectiveCBridgeFromNSString 3648 3719 +1.9% 0.98x (?)
ObjectiveCBridgeFromNSStringForced 2062 2084 +1.1% 0.99x
ObjectiveCBridgeStubDataAppend 3714 3767 +1.4% 0.99x (?)
ObjectiveCBridgeStubDateAccess 975 996 +2.2% 0.98x (?)
ObjectiveCBridgeStubDateMutation 458 458 +0.0% 1.00x
ObjectiveCBridgeStubFromArrayOfNSString 23240 23225 -0.1% 1.00x (?)
ObjectiveCBridgeStubFromNSDate 3863 3744 -3.1% 1.03x
ObjectiveCBridgeStubFromNSDateRef 4222 4096 -3.0% 1.03x
ObjectiveCBridgeStubFromNSString 550 537 -2.4% 1.02x (?)
ObjectiveCBridgeStubFromNSStringRef 171 171 +0.0% 1.00x
ObjectiveCBridgeStubNSDataAppend 2495 2492 -0.1% 1.00x (?)
ObjectiveCBridgeStubNSDateMutationRef 15395 15254 -0.9% 1.01x (?)
ObjectiveCBridgeStubNSDateRefAccess 1213 1213 +0.0% 1.00x
ObjectiveCBridgeStubToArrayOfNSString 27148 27613 +1.7% 0.98x (?)
ObjectiveCBridgeStubToNSDate 14030 14400 +2.6% 0.97x (?)
ObjectiveCBridgeStubToNSDateRef 3305 3296 -0.3% 1.00x (?)
ObjectiveCBridgeStubToNSString 1477 1476 -0.1% 1.00x (?)
ObjectiveCBridgeStubToNSStringRef 146 146 +0.0% 1.00x
ObjectiveCBridgeStubURLAppendPath 210477 211685 +0.6% 0.99x (?)
ObjectiveCBridgeToNSArray 27229 27358 +0.5% 1.00x (?)
ObjectiveCBridgeToNSDictionary 42308 42749 +1.0% 0.99x (?)
ObjectiveCBridgeToNSSet 36779 37168 +1.1% 0.99x (?)
ObjectiveCBridgeToNSString 1230 1228 -0.2% 1.00x (?)
OpenClose 370 372 +0.5% 0.99x
Phonebook 20563 20505 -0.3% 1.00x (?)
PolymorphicCalls 4935 5073 +2.8% 0.97x
PopFrontArray 9403 9373 -0.3% 1.00x (?)
PopFrontArrayGeneric 8378 8340 -0.5% 1.00x
PopFrontUnsafePointer 92815 92827 +0.0% 1.00x (?)
PrefixCountableRange 320 320 +0.0% 1.00x
PrefixCountableRangeLazy 35286 36042 +2.1% 0.98x
PrefixWhileAnyCollection 34005 35665 +4.9% 0.95x (?)
PrefixWhileAnySeqCntRange 33705 35321 +4.8% 0.95x
PrefixWhileCountableRange 16386 16525 +0.8% 0.99x
Prims 9530 9890 +3.8% 0.96x
ProtocolDispatch 6600 6601 +0.0% 1.00x (?)
ProtocolDispatch2 462 465 +0.6% 0.99x
RC4 18610 18824 +1.1% 0.99x (?)
RGBHistogramOfObjects 102238 104114 +1.8% 0.98x
RangeAssignment 5396 5458 +1.1% 0.99x (?)
RecursiveOwnedParameter 10560 10540 -0.2% 1.00x (?)
SetExclusiveOr 20100 20173 +0.4% 1.00x (?)
SetExclusiveOr_OfObjects 45374 45556 +0.4% 1.00x (?)
SetIntersect 10312 10356 +0.4% 1.00x (?)
SetIntersect_OfObjects 11930 12154 +1.9% 0.98x
SetIsSubsetOf 1588 1582 -0.4% 1.00x
SetIsSubsetOf_OfObjects 1497 1521 +1.6% 0.98x
SetUnion 11113 11129 +0.1% 1.00x (?)
SetUnion_OfObjects 31704 31796 +0.3% 1.00x (?)
SevenBoom 1515 1520 +0.3% 1.00x (?)
SortLargeExistentials 16923 16965 +0.2% 1.00x (?)
SortLettersInPlace 2969 2997 +0.9% 0.99x (?)
SortSortedStrings 1343 1333 -0.7% 1.01x
SortStrings 2369 2314 -2.3% 1.02x
SortStringsUnicode 8517 8368 -1.7% 1.02x
StackPromo 96308 96184 -0.1% 1.00x (?)
StaticArray 4369 4306 -1.4% 1.01x
StrComplexWalk 6391 6374 -0.3% 1.00x (?)
StrToInt 96725 100891 +4.3% 0.96x
StringAdder 3562 3564 +0.1% 1.00x (?)
StringBuilderLong 1050 1045 -0.5% 1.00x (?)
StringEqualPointerComparison 2298 2291 -0.3% 1.00x (?)
StringFromLongWholeSubstring 12984 12983 -0.0% 1.00x (?)
StringFromLongWholeSubstringGeneric 196 196 +0.0% 1.00x
StringHasPrefixUnicode 15856 15535 -2.0% 1.02x
StringHasSuffix 1695 1707 +0.7% 0.99x
StringHasSuffixUnicode 59792 60201 +0.7% 0.99x
StringInterpolation 13090 13141 +0.4% 1.00x (?)
StringWalk 11786 12334 +4.6% 0.96x
StringWithCString 51810 51827 +0.0% 1.00x (?)
SubstringEqualString 5964 6224 +4.4% 0.96x (?)
SubstringFromLongString 12 12 +0.0% 1.00x
SubstringFromLongStringGeneric 105 105 +0.0% 1.00x
SuffixCountableRange 111 111 +0.0% 1.00x
TwoSum 3969 3981 +0.3% 1.00x (?)
TypeFlood 162 164 +1.2% 0.99x (?)
Walsh 11374 11343 -0.3% 1.00x (?)
XorLoop 22375 22375 +0.0% 1.00x
accessGlobal 174 180 +3.4% 0.97x
accessInMatSet 306 307 +0.3% 1.00x
accessIndependent 117 117 +0.0% 1.00x
Hardware Overview
  Model Name: Mac mini
  Model Identifier: Macmini7,1
  Processor Name: Intel Core i7
  Processor Speed: 3 GHz
  Number of Processors: 1
  Total Number of Cores: 2
  L2 Cache (per Core): 256 KB
  L3 Cache: 4 MB
  Memory: 16 GB

@jckarter
Copy link
Contributor Author

Hmm, there does seem to be a consistent impact on benchmarks. I filed https://bugs.swift.org/browse/SR-5508 to investigate. @bob-wilson, is it OK to take this correctness fix now?

@bob-wilson
Copy link
Contributor

Yes, we can't sacrifice correctness for performance. I'm OK to go ahead with this.

@dabrahams
Copy link
Contributor

dabrahams commented Jul 19, 2017 via email

@bob-wilson
Copy link
Contributor

We're investigating the performance issues as a top-priority.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants