Skip to content

[stdlib] Don’t use an error for flow control in Sequence.first(where:) #17387

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
Jun 21, 2018
Merged

[stdlib] Don’t use an error for flow control in Sequence.first(where:) #17387

merged 1 commit into from
Jun 21, 2018

Conversation

tonyarnold
Copy link
Contributor

This PR alters the Sequence.first(where:) function to remove the use of a thrown error for flow control. When called under Xcode with the "Swift Error Breakpoint" (swift_willThrow) active, it will cause the debugger to stop wherever this API is used, even in a success state.

Further (amusing) discussion here on Twitter: https://twitter.com/tonyarnold/status/1007510236372979712

Resolves SR-3166.

@slavapestov
Copy link
Contributor

@swift-ci Please smoke test

@slavapestov slavapestov self-assigned this Jun 21, 2018
@tonyarnold tonyarnold changed the title Don’t use an error for flow control in Sequence.first(where:) stdlib: don’t use an error for flow control in Sequence.first(where:) Jun 21, 2018
@tonyarnold tonyarnold changed the title stdlib: don’t use an error for flow control in Sequence.first(where:) [stdlib] Don’t use an error for flow control in Sequence.first(where:) Jun 21, 2018
@CodaFi
Copy link
Contributor

CodaFi commented Jun 21, 2018

A lot can change in a year

@swift-ci please benchmark

@swift-ci
Copy link
Contributor

Build comment file:

Optimized (O)

Regression (3)
TEST OLD NEW DELTA SPEEDUP
SetIsSubsetOf_OfObjects 438 480 +9.6% 0.91x (?)
NSDictionaryCastToSwift 6661 7049 +5.8% 0.94x (?)
Join 167 176 +5.4% 0.95x
Improvement (1)
TEST OLD NEW DELTA SPEEDUP
SubstringComparable 14 13 -7.1% 1.08x
No Changes (442)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 3772 3792 +0.5% 0.99x (?)
AnyHashableWithAClass 86196 86178 -0.0% 1.00x (?)
Array2D 2814 2817 +0.1% 1.00x (?)
ArrayAppend 1059 1058 -0.1% 1.00x (?)
ArrayAppendArrayOfInt 798 797 -0.1% 1.00x (?)
ArrayAppendAscii 3799 3811 +0.3% 1.00x (?)
ArrayAppendAsciiSubstring 24923 24925 +0.0% 1.00x (?)
ArrayAppendFromGeneric 787 797 +1.3% 0.99x (?)
ArrayAppendGenericStructs 1431 1419 -0.8% 1.01x (?)
ArrayAppendLatin1 41007 41067 +0.1% 1.00x (?)
ArrayAppendLatin1Substring 142688 144400 +1.2% 0.99x (?)
ArrayAppendLazyMap 1343 1335 -0.6% 1.01x (?)
ArrayAppendOptionals 1425 1430 +0.4% 1.00x (?)
ArrayAppendRepeatCol 1330 1331 +0.1% 1.00x (?)
ArrayAppendReserved 793 789 -0.5% 1.01x (?)
ArrayAppendSequence 1115 1113 -0.2% 1.00x (?)
ArrayAppendStrings 6327 6330 +0.0% 1.00x (?)
ArrayAppendToFromGeneric 799 799 +0.0% 1.00x
ArrayAppendToGeneric 799 797 -0.3% 1.00x (?)
ArrayAppendUTF16 40641 40758 +0.3% 1.00x (?)
ArrayAppendUTF16Substring 141173 142420 +0.9% 0.99x
ArrayInClass 85 85 +0.0% 1.00x
ArrayLiteral 0 0 +0.0% 1.00x
ArrayOfGenericPOD2 151 151 +0.0% 1.00x
ArrayOfGenericRef 4409 4398 -0.2% 1.00x (?)
ArrayOfPOD 184 184 +0.0% 1.00x
ArrayOfRef 4373 4385 +0.3% 1.00x (?)
ArrayPlusEqualArrayOfInt 789 799 +1.3% 0.99x (?)
ArrayPlusEqualFiveElementCollection 5514 5476 -0.7% 1.01x (?)
ArrayPlusEqualSingleElementCollection 1055 1057 +0.2% 1.00x (?)
ArrayPlusEqualThreeElements 1680 1655 -1.5% 1.02x
ArraySubscript 1521 1514 -0.5% 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 25 25 +0.0% 1.00x
BinaryFloatingPointPropertiesNextUp 28 28 +0.0% 1.00x
BinaryFloatingPointPropertiesUlp 35 35 +0.0% 1.00x
BitCount 202 202 +0.0% 1.00x
ByteSwap 103 103 +0.0% 1.00x
COWArrayGuaranteedParameterOverhead 8647 8628 -0.2% 1.00x (?)
COWTree 3731 3666 -1.7% 1.02x (?)
CSVParsing 748137 747339 -0.1% 1.00x (?)
CSVParsingAlt 811903 814956 +0.4% 1.00x (?)
CSVParsingAltIndices 336482 332717 -1.1% 1.01x (?)
CStringLongAscii 4196 4194 -0.0% 1.00x (?)
CStringLongNonAscii 2379 2470 +3.8% 0.96x
CStringShortAscii 3308 3329 +0.6% 0.99x (?)
Calculator 190 191 +0.5% 0.99x (?)
CaptureProp 4110 4112 +0.0% 1.00x (?)
ChainedFilterMap 1407 1407 +0.0% 1.00x
CharIndexing_ascii_unicodeScalars 16278 16287 +0.1% 1.00x (?)
CharIndexing_ascii_unicodeScalars_Backwards 16029 16029 +0.0% 1.00x
CharIndexing_chinese_unicodeScalars 12332 12335 +0.0% 1.00x (?)
CharIndexing_chinese_unicodeScalars_Backwards 12140 12147 +0.1% 1.00x (?)
CharIndexing_japanese_unicodeScalars 19652 19491 -0.8% 1.01x (?)
CharIndexing_japanese_unicodeScalars_Backwards 19153 19194 +0.2% 1.00x (?)
CharIndexing_korean_unicodeScalars 15789 15783 -0.0% 1.00x (?)
CharIndexing_korean_unicodeScalars_Backwards 15540 15546 +0.0% 1.00x (?)
CharIndexing_punctuatedJapanese_unicodeScalars 2959 2960 +0.0% 1.00x (?)
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 2911 2914 +0.1% 1.00x (?)
CharIndexing_punctuated_unicodeScalars 3696 3699 +0.1% 1.00x (?)
CharIndexing_punctuated_unicodeScalars_Backwards 3644 3648 +0.1% 1.00x (?)
CharIndexing_russian_unicodeScalars 13565 13563 -0.0% 1.00x (?)
CharIndexing_russian_unicodeScalars_Backwards 13356 13361 +0.0% 1.00x (?)
CharIndexing_tweet_unicodeScalars 32090 32087 -0.0% 1.00x (?)
CharIndexing_tweet_unicodeScalars_Backwards 31624 31625 +0.0% 1.00x (?)
CharIndexing_utf16_unicodeScalars 22851 22868 +0.1% 1.00x (?)
CharIndexing_utf16_unicodeScalars_Backwards 23285 23291 +0.0% 1.00x (?)
CharIteration_ascii_unicodeScalars 20405 20561 +0.8% 0.99x
CharIteration_ascii_unicodeScalars_Backwards 15094 15102 +0.1% 1.00x (?)
CharIteration_chinese_unicodeScalars 15476 15559 +0.5% 0.99x
CharIteration_chinese_unicodeScalars_Backwards 11433 11436 +0.0% 1.00x (?)
CharIteration_japanese_unicodeScalars 24485 24629 +0.6% 0.99x (?)
CharIteration_japanese_unicodeScalars_Backwards 18071 18077 +0.0% 1.00x (?)
CharIteration_korean_unicodeScalars 19806 19941 +0.7% 0.99x (?)
CharIteration_korean_unicodeScalars_Backwards 14636 14644 +0.1% 1.00x (?)
CharIteration_punctuatedJapanese_unicodeScalars 3684 3678 -0.2% 1.00x (?)
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 2730 2736 +0.2% 1.00x (?)
CharIteration_punctuated_unicodeScalars 4606 4625 +0.4% 1.00x (?)
CharIteration_punctuated_unicodeScalars_Backwards 3417 3424 +0.2% 1.00x (?)
CharIteration_russian_unicodeScalars 17023 17124 +0.6% 0.99x
CharIteration_russian_unicodeScalars_Backwards 12576 12582 +0.0% 1.00x (?)
CharIteration_tweet_unicodeScalars 40778 40059 -1.8% 1.02x
CharIteration_tweet_unicodeScalars_Backwards 29815 29837 +0.1% 1.00x (?)
CharIteration_utf16_unicodeScalars 27700 27687 -0.0% 1.00x (?)
CharIteration_utf16_unicodeScalars_Backwards 18592 18547 -0.2% 1.00x (?)
CharacterLiteralsLarge 5920 5886 -0.6% 1.01x (?)
CharacterLiteralsSmall 217 217 +0.0% 1.00x
CharacterPropertiesFetch 4595 4603 +0.2% 1.00x (?)
CharacterPropertiesPrecomputed 1043 1042 -0.1% 1.00x (?)
CharacterPropertiesStashed 1550 1513 -2.4% 1.02x
CharacterPropertiesStashedMemo 1620 1594 -1.6% 1.02x (?)
Chars 1020 1020 +0.0% 1.00x
ClassArrayGetter 15 15 +0.0% 1.00x
Combos 487 487 +0.0% 1.00x
DataAccessBytes 1140 1143 +0.3% 1.00x (?)
DataAppendArray 5306 5439 +2.5% 0.98x (?)
DataAppendBytes 5068 5081 +0.3% 1.00x (?)
DataAppendDataLargeToLarge 67803 67303 -0.7% 1.01x (?)
DataAppendDataLargeToMedium 35338 35481 +0.4% 1.00x (?)
DataAppendDataLargeToSmall 33994 34212 +0.6% 0.99x (?)
DataAppendDataMediumToLarge 37802 37915 +0.3% 1.00x (?)
DataAppendDataMediumToMedium 6685 6743 +0.9% 0.99x (?)
DataAppendDataMediumToSmall 5908 5912 +0.1% 1.00x (?)
DataAppendDataSmallToLarge 37166 36679 -1.3% 1.01x (?)
DataAppendDataSmallToMedium 6154 6117 -0.6% 1.01x (?)
DataAppendDataSmallToSmall 5703 5877 +3.1% 0.97x (?)
DataAppendSequence 20916 20730 -0.9% 1.01x (?)
DataCopyBytes 436 437 +0.2% 1.00x (?)
DataCount 34 34 +0.0% 1.00x
DataMutateBytes 3913 3949 +0.9% 0.99x (?)
DataReplaceLarge 36690 36764 +0.2% 1.00x (?)
DataReplaceLargeBuffer 56967 57242 +0.5% 1.00x (?)
DataReplaceMedium 7552 7895 +4.5% 0.96x (?)
DataReplaceMediumBuffer 11504 11729 +2.0% 0.98x (?)
DataReplaceSmall 5485 5699 +3.9% 0.96x (?)
DataReplaceSmallBuffer 8878 9101 +2.5% 0.98x (?)
DataReset 2801 2796 -0.2% 1.00x (?)
DataSetCount 570 549 -3.7% 1.04x (?)
DataSubscript 220 220 +0.0% 1.00x
DictOfArraysToArrayOfDicts 777 775 -0.3% 1.00x (?)
Dictionary 517 508 -1.7% 1.02x (?)
Dictionary2 633 633 +0.0% 1.00x
Dictionary2OfObjects 2081 2089 +0.4% 1.00x (?)
Dictionary3 223 223 +0.0% 1.00x
Dictionary3OfObjects 738 738 +0.0% 1.00x
Dictionary4 341 344 +0.9% 0.99x
Dictionary4Legacy 737 736 -0.1% 1.00x (?)
Dictionary4OfObjects 456 455 -0.2% 1.00x (?)
Dictionary4OfObjectsLegacy 960 957 -0.3% 1.00x (?)
DictionaryBridge 1179 1189 +0.8% 0.99x (?)
DictionaryCopy 106609 107031 +0.4% 1.00x (?)
DictionaryFilter 106412 106425 +0.0% 1.00x (?)
DictionaryGroup 214 215 +0.5% 1.00x (?)
DictionaryGroupOfObjects 2114 2121 +0.3% 1.00x (?)
DictionaryKeysContainsCocoa 39 39 +0.0% 1.00x
DictionaryKeysContainsNative 31 32 +3.2% 0.97x (?)
DictionaryLiteral 1927 1919 -0.4% 1.00x (?)
DictionaryOfObjects 2373 2375 +0.1% 1.00x (?)
DictionaryRemove 4171 4175 +0.1% 1.00x (?)
DictionaryRemoveOfObjects 25898 25815 -0.3% 1.00x (?)
DictionarySubscriptDefaultMutation 266 267 +0.4% 1.00x (?)
DictionarySubscriptDefaultMutationArray 601 602 +0.2% 1.00x (?)
DictionarySubscriptDefaultMutationArrayOfObjects 4010 4019 +0.2% 1.00x (?)
DictionarySubscriptDefaultMutationOfObjects 1708 1705 -0.2% 1.00x (?)
DictionarySwap 1034 1037 +0.3% 1.00x (?)
DictionarySwapAt 6650 6630 -0.3% 1.00x (?)
DictionarySwapAtOfObjects 52221 52271 +0.1% 1.00x (?)
DictionarySwapOfObjects 8921 8777 -1.6% 1.02x (?)
DoubleWidthDivision 0 0 +0.0% 1.00x
DropFirstAnyCollection 76 76 +0.0% 1.00x
DropFirstAnyCollectionLazy 65107 64941 -0.3% 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 35 35 +0.0% 1.00x
DropFirstCountableRangeLazy 35 35 +0.0% 1.00x
DropFirstSequence 2680 2680 +0.0% 1.00x
DropFirstSequenceLazy 2773 2774 +0.0% 1.00x (?)
DropLastAnyCollection 28 28 +0.0% 1.00x
DropLastAnyCollectionLazy 21773 21735 -0.2% 1.00x (?)
DropLastAnySeqCRangeIter 3282 3338 +1.7% 0.98x
DropLastAnySeqCRangeIterLazy 3284 3351 +2.0% 0.98x
DropLastAnySeqCntRange 11 11 +0.0% 1.00x
DropLastAnySeqCntRangeLazy 11 11 +0.0% 1.00x
DropLastAnySequence 4950 4925 -0.5% 1.01x (?)
DropLastAnySequenceLazy 5051 5039 -0.2% 1.00x (?)
DropLastCountableRange 12 12 +0.0% 1.00x
DropLastCountableRangeLazy 11 11 +0.0% 1.00x
DropLastSequence 662 663 +0.2% 1.00x (?)
DropLastSequenceLazy 662 665 +0.5% 1.00x (?)
DropWhileAnyCollection 99 100 +1.0% 0.99x
DropWhileAnyCollectionLazy 130 130 +0.0% 1.00x
DropWhileAnySeqCRangeIter 76 76 +0.0% 1.00x
DropWhileAnySeqCRangeIterLazy 130 130 +0.0% 1.00x
DropWhileAnySeqCntRange 95 95 +0.0% 1.00x
DropWhileAnySeqCntRangeLazy 130 130 +0.0% 1.00x
DropWhileAnySequence 1859 1860 +0.1% 1.00x (?)
DropWhileAnySequenceLazy 1854 1855 +0.1% 1.00x (?)
DropWhileArrayLazy 88 88 +0.0% 1.00x
DropWhileCountableRange 36 36 +0.0% 1.00x
DropWhileCountableRangeLazy 105 105 +0.0% 1.00x
DropWhileSequence 2217 2218 +0.0% 1.00x (?)
DropWhileSequenceLazy 88 88 +0.0% 1.00x
EqualStringSubstring 51 51 +0.0% 1.00x
EqualSubstringString 51 51 +0.0% 1.00x
EqualSubstringSubstring 51 50 -2.0% 1.02x
EqualSubstringSubstringGenericEquatable 50 50 +0.0% 1.00x
ErrorHandling 1188 1194 +0.5% 0.99x (?)
ExclusivityGlobal 5 5 +0.0% 1.00x
ExclusivityIndependent 2 2 +0.0% 1.00x
FatCompactMap 200240 199704 -0.3% 1.00x (?)
FilterEvenUsingReduce 1309 1297 -0.9% 1.01x (?)
FilterEvenUsingReduceInto 147 148 +0.7% 0.99x (?)
FloatingPointPrinting_Double_description_small 21528 21410 -0.5% 1.01x (?)
FloatingPointPrinting_Double_description_uniform 21091 20907 -0.9% 1.01x (?)
FloatingPointPrinting_Double_interpolated 61368 61794 +0.7% 0.99x (?)
FloatingPointPrinting_Float80_description_small 28437 28477 +0.1% 1.00x (?)
FloatingPointPrinting_Float80_description_uniform 27653 27569 -0.3% 1.00x (?)
FloatingPointPrinting_Float80_interpolated 65061 65121 +0.1% 1.00x (?)
FloatingPointPrinting_Float_description_small 5394 5642 +4.6% 0.96x
FloatingPointPrinting_Float_description_uniform 5385 5641 +4.8% 0.95x
FloatingPointPrinting_Float_interpolated 38272 38585 +0.8% 0.99x (?)
FrequenciesUsingReduce 4836 4891 +1.1% 0.99x (?)
FrequenciesUsingReduceInto 1501 1512 +0.7% 0.99x (?)
Hanoi 2142 2150 +0.4% 1.00x (?)
HashTest 928 940 +1.3% 0.99x (?)
Histogram 699 699 +0.0% 1.00x
Integrate 335 334 -0.3% 1.00x (?)
IterateData 1473 1493 +1.4% 0.99x
LazilyFilteredArrayContains 36654 36655 +0.0% 1.00x (?)
LazilyFilteredArrays 64475 64579 +0.2% 1.00x (?)
LazilyFilteredRange 3879 3883 +0.1% 1.00x (?)
LessSubstringSubstring 50 51 +2.0% 0.98x (?)
LessSubstringSubstringGenericComparable 51 51 +0.0% 1.00x
LinkedList 7574 7567 -0.1% 1.00x (?)
LuhnAlgoEager 445 451 +1.3% 0.99x (?)
LuhnAlgoLazy 447 452 +1.1% 0.99x (?)
MapReduce 370 370 +0.0% 1.00x
MapReduceAnyCollection 371 370 -0.3% 1.00x (?)
MapReduceAnyCollectionShort 2026 2023 -0.1% 1.00x (?)
MapReduceClass 3000 2996 -0.1% 1.00x (?)
MapReduceClassShort 4560 4563 +0.1% 1.00x (?)
MapReduceLazyCollection 13 13 +0.0% 1.00x
MapReduceLazyCollectionShort 36 36 +0.0% 1.00x
MapReduceLazySequence 86 86 +0.0% 1.00x
MapReduceSequence 447 444 -0.7% 1.01x (?)
MapReduceShort 1988 1988 +0.0% 1.00x
MapReduceShortString 20 21 +5.0% 0.95x (?)
MapReduceString 47 47 +0.0% 1.00x
Memset 217 216 -0.5% 1.00x (?)
MonteCarloE 10182 10220 +0.4% 1.00x (?)
MonteCarloPi 42735 42735 +0.0% 1.00x
NSError 165 163 -1.2% 1.01x (?)
NSStringConversion 677 705 +4.1% 0.96x
NibbleSort 3695 3695 +0.0% 1.00x
NopDeinit 31583 31593 +0.0% 1.00x (?)
ObjectAllocation 132 132 +0.0% 1.00x
ObjectiveCBridgeFromNSArrayAnyObject 26437 25909 -2.0% 1.02x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 4798 4934 +2.8% 0.97x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 45651 45681 +0.1% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 43462 45069 +3.7% 0.96x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 108613 109863 +1.2% 0.99x (?)
ObjectiveCBridgeFromNSSetAnyObject 50020 48952 -2.1% 1.02x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 4980 5066 +1.7% 0.98x (?)
ObjectiveCBridgeFromNSSetAnyObjectToString 63820 63826 +0.0% 1.00x (?)
ObjectiveCBridgeFromNSString 1220 1251 +2.5% 0.98x (?)
ObjectiveCBridgeFromNSStringForced 2724 2717 -0.3% 1.00x (?)
ObjectiveCBridgeStubDataAppend 6201 6208 +0.1% 1.00x (?)
ObjectiveCBridgeStubDateMutation 400 400 +0.0% 1.00x
ObjectiveCBridgeStubFromArrayOfNSString 33578 32858 -2.1% 1.02x (?)
ObjectiveCBridgeStubFromNSDate 6218 6220 +0.0% 1.00x (?)
ObjectiveCBridgeStubFromNSString 1008 1026 +1.8% 0.98x (?)
ObjectiveCBridgeStubFromNSStringRef 161 161 +0.0% 1.00x
ObjectiveCBridgeStubNSDataAppend 2542 2535 -0.3% 1.00x (?)
ObjectiveCBridgeStubNSDateMutationRef 12948 12630 -2.5% 1.03x (?)
ObjectiveCBridgeStubToArrayOfNSString 39240 39402 +0.4% 1.00x (?)
ObjectiveCBridgeStubToNSDate 14792 14744 -0.3% 1.00x (?)
ObjectiveCBridgeStubToNSDateRef 3391 3414 +0.7% 0.99x (?)
ObjectiveCBridgeStubToNSString 2334 2335 +0.0% 1.00x (?)
ObjectiveCBridgeStubToNSStringRef 115 115 +0.0% 1.00x
ObjectiveCBridgeStubURLAppendPath 277914 274035 -1.4% 1.01x (?)
ObjectiveCBridgeStubURLAppendPathRef 278065 268129 -3.6% 1.04x (?)
ObjectiveCBridgeToNSArray 14619 14750 +0.9% 0.99x (?)
ObjectiveCBridgeToNSDictionary 26607 26081 -2.0% 1.02x (?)
ObjectiveCBridgeToNSSet 16598 17190 +3.6% 0.97x (?)
ObjectiveCBridgeToNSString 458 449 -2.0% 1.02x (?)
ObserverClosure 2139 2136 -0.1% 1.00x (?)
ObserverForwarderStruct 1205 1208 +0.2% 1.00x (?)
ObserverPartiallyAppliedMethod 3709 3701 -0.2% 1.00x (?)
ObserverUnappliedMethod 2457 2464 +0.3% 1.00x (?)
OpaqueConsumingUsers 4179 4178 -0.0% 1.00x (?)
OpenClose 62 62 +0.0% 1.00x
PartialApplyDynamicType 0 0 +0.0% 1.00x
Phonebook 6651 6638 -0.2% 1.00x
PointerArithmetics 34335 34348 +0.0% 1.00x (?)
PolymorphicCalls 25 25 +0.0% 1.00x
PopFrontArray 1893 1896 +0.2% 1.00x (?)
PopFrontArrayGeneric 1903 1907 +0.2% 1.00x (?)
PopFrontUnsafePointer 8861 8743 -1.3% 1.01x (?)
PrefixAnyCollection 76 76 +0.0% 1.00x
PrefixAnyCollectionLazy 65476 65080 -0.6% 1.01x (?)
PrefixAnySeqCRangeIter 40 40 +0.0% 1.00x
PrefixAnySeqCRangeIterLazy 40 40 +0.0% 1.00x
PrefixAnySeqCntRange 71 71 +0.0% 1.00x
PrefixAnySeqCntRangeLazy 71 71 +0.0% 1.00x
PrefixAnySequence 1378 1378 +0.0% 1.00x
PrefixAnySequenceLazy 1378 1378 +0.0% 1.00x
PrefixArray 35 35 +0.0% 1.00x
PrefixArrayLazy 35 35 +0.0% 1.00x
PrefixCountableRange 35 35 +0.0% 1.00x
PrefixCountableRangeLazy 35 35 +0.0% 1.00x
PrefixSequence 2222 2222 +0.0% 1.00x
PrefixSequenceLazy 2275 2275 +0.0% 1.00x
PrefixWhileAnyCollection 146 146 +0.0% 1.00x
PrefixWhileAnyCollectionLazy 71 71 +0.0% 1.00x
PrefixWhileAnySeqCRangeIter 379 381 +0.5% 0.99x (?)
PrefixWhileAnySeqCRangeIterLazy 89 89 +0.0% 1.00x
PrefixWhileAnySeqCntRange 142 142 +0.0% 1.00x
PrefixWhileAnySeqCntRangeLazy 71 71 +0.0% 1.00x
PrefixWhileAnySequence 1530 1532 +0.1% 1.00x (?)
PrefixWhileAnySequenceLazy 1391 1383 -0.6% 1.01x (?)
PrefixWhileArray 88 88 +0.0% 1.00x
PrefixWhileArrayLazy 70 70 +0.0% 1.00x
PrefixWhileCountableRange 36 36 +0.0% 1.00x
PrefixWhileCountableRangeLazy 35 35 +0.0% 1.00x
PrefixWhileSequence 356 355 -0.3% 1.00x (?)
PrefixWhileSequenceLazy 52 52 +0.0% 1.00x
Prims 900 902 +0.2% 1.00x (?)
PrimsSplit 898 900 +0.2% 1.00x (?)
QueueConcrete 1148 1149 +0.1% 1.00x (?)
QueueGeneric 1145 1146 +0.1% 1.00x (?)
RC4 149 149 +0.0% 1.00x
RGBHistogram 3234 3229 -0.2% 1.00x (?)
RGBHistogramOfObjects 23608 23662 +0.2% 1.00x (?)
Radix2CooleyTukey 12262 12247 -0.1% 1.00x (?)
Radix2CooleyTukeyf 8870 8924 +0.6% 0.99x (?)
RandomDoubleDef 26785 26757 -0.1% 1.00x (?)
RandomDoubleLCG 2916 2915 -0.0% 1.00x (?)
RandomIntegersDef 24213 24339 +0.5% 0.99x (?)
RandomIntegersLCG 994 994 +0.0% 1.00x
RandomShuffleDef 809692 809046 -0.1% 1.00x (?)
RandomShuffleLCG 120015 118723 -1.1% 1.01x (?)
RangeAssignment 335 335 +0.0% 1.00x
RangeIterationSigned 200 200 +0.0% 1.00x
RangeReplaceableCollectionPlusDefault 999 1012 +1.3% 0.99x (?)
RecursiveOwnedParameter 115 115 +0.0% 1.00x
RemoveWhereFilterInts 46 46 +0.0% 1.00x
RemoveWhereFilterString 258 248 -3.9% 1.04x
RemoveWhereFilterStrings 437 437 +0.0% 1.00x
RemoveWhereMoveInts 14 14 +0.0% 1.00x
RemoveWhereMoveStrings 708 709 +0.1% 1.00x (?)
RemoveWhereQuadraticInts 1293 1293 +0.0% 1.00x
RemoveWhereQuadraticString 380 386 +1.6% 0.98x (?)
RemoveWhereQuadraticStrings 2760 2758 -0.1% 1.00x (?)
RemoveWhereSwapInts 19 19 +0.0% 1.00x
RemoveWhereSwapStrings 859 857 -0.2% 1.00x (?)
ReversedArray 57 57 +0.0% 1.00x
ReversedBidirectional 16668 16991 +1.9% 0.98x
ReversedDictionary 263 264 +0.4% 1.00x (?)
RomanNumbers 86288 83097 -3.7% 1.04x
SequenceAlgosAnySequence 12014 11982 -0.3% 1.00x (?)
SequenceAlgosArray 1573 1582 +0.6% 0.99x (?)
SequenceAlgosContiguousArray 1576 1570 -0.4% 1.00x (?)
SequenceAlgosList 1349 1351 +0.1% 1.00x (?)
SequenceAlgosRange 2575 2575 +0.0% 1.00x
SequenceAlgosUnfoldSequence 1102 1102 +0.0% 1.00x
SetExclusiveOr 4990 5029 +0.8% 0.99x (?)
SetExclusiveOr_OfObjects 11687 11630 -0.5% 1.00x (?)
SetIntersect 681 689 +1.2% 0.99x (?)
SetIntersect_OfObjects 1768 1757 -0.6% 1.01x (?)
SetIsSubsetOf 361 357 -1.1% 1.01x (?)
SetUnion 4481 4493 +0.3% 1.00x (?)
SetUnion_OfObjects 10009 10016 +0.1% 1.00x (?)
SevenBoom 841 834 -0.8% 1.01x (?)
Sim2DArray 417 417 +0.0% 1.00x
SortLargeExistentials 5450 5439 -0.2% 1.00x (?)
SortLettersInPlace 995 997 +0.2% 1.00x (?)
SortSortedStrings 830 829 -0.1% 1.00x (?)
SortStrings 1751 1752 +0.1% 1.00x (?)
SortStringsUnicode 2478 2512 +1.4% 0.99x (?)
StackPromo 24544 24441 -0.4% 1.00x (?)
StaticArray 9 9 +0.0% 1.00x
StrComplexWalk 1780 1780 +0.0% 1.00x
StrToInt 3131 3185 +1.7% 0.98x
StringAdder 549 560 +2.0% 0.98x
StringBuilder 460 472 +2.6% 0.97x
StringBuilderLong 1245 1252 +0.6% 0.99x (?)
StringBuilderSmallReservingCapacity 480 491 +2.3% 0.98x
StringBuilderWithLongSubstring 1460 1442 -1.2% 1.01x (?)
StringComparison_abnormal 774 785 +1.4% 0.99x (?)
StringComparison_ascii 1018 1018 +0.0% 1.00x
StringComparison_emoji 862 849 -1.5% 1.02x (?)
StringComparison_fastPrenormal 825 832 +0.8% 0.99x
StringComparison_latin1 648 651 +0.5% 1.00x (?)
StringComparison_longSharedPrefix 952 945 -0.7% 1.01x
StringComparison_nonBMPSlowestPrenormal 1671 1668 -0.2% 1.00x (?)
StringComparison_slowerPrenormal 1817 1776 -2.3% 1.02x
StringComparison_zalgo 120076 120170 +0.1% 1.00x (?)
StringEdits 168286 169848 +0.9% 0.99x (?)
StringEnumRawValueInitialization 853 854 +0.1% 1.00x (?)
StringEqualPointerComparison 286 286 +0.0% 1.00x
StringFromLongWholeSubstring 21 21 +0.0% 1.00x
StringFromLongWholeSubstringGeneric 21 21 +0.0% 1.00x
StringHasPrefixAscii 2232 2232 +0.0% 1.00x
StringHasPrefixUnicode 99206 98813 -0.4% 1.00x (?)
StringHasSuffixAscii 2289 2289 +0.0% 1.00x
StringHasSuffixUnicode 100629 100415 -0.2% 1.00x (?)
StringInterpolation 9023 9103 +0.9% 0.99x (?)
StringInterpolationManySmallSegments 18055 18261 +1.1% 0.99x (?)
StringInterpolationSmall 4259 4278 +0.4% 1.00x (?)
StringMatch 12120 12052 -0.6% 1.01x (?)
StringRemoveDupes 479 477 -0.4% 1.00x (?)
StringUTF16Builder 2641 2607 -1.3% 1.01x (?)
StringUTF16SubstringBuilder 5942 5893 -0.8% 1.01x (?)
StringWalk 1545 1546 +0.1% 1.00x (?)
StringWithCString 45049 44876 -0.4% 1.00x
StringWordBuilder 2247 2283 +1.6% 0.98x
StringWordBuilderReservingCapacity 1841 1934 +5.1% 0.95x
SubstringEqualString 633 639 +0.9% 0.99x (?)
SubstringEquatable 1457 1485 +1.9% 0.98x (?)
SubstringFromLongString 10 10 +0.0% 1.00x
SubstringFromLongStringGeneric 74 74 +0.0% 1.00x
SuffixAnyCollection 28 28 +0.0% 1.00x
SuffixAnyCollectionLazy 21736 21704 -0.1% 1.00x (?)
SuffixAnySeqCRangeIter 3584 3637 +1.5% 0.99x
SuffixAnySeqCRangeIterLazy 3575 3641 +1.8% 0.98x
SuffixAnySeqCntRange 17 17 +0.0% 1.00x
SuffixAnySeqCntRangeLazy 17 17 +0.0% 1.00x
SuffixAnySequence 4970 4913 -1.1% 1.01x
SuffixAnySequenceLazy 5038 5015 -0.5% 1.00x (?)
SuffixCountableRange 12 12 +0.0% 1.00x
SuffixCountableRangeLazy 12 12 +0.0% 1.00x
SuffixSequence 3649 3638 -0.3% 1.00x (?)
SuffixSequenceLazy 3645 3639 -0.2% 1.00x (?)
SumUsingReduce 102 102 +0.0% 1.00x
SumUsingReduceInto 102 101 -1.0% 1.01x
SuperChars 19941 19944 +0.0% 1.00x (?)
TwoSum 1475 1469 -0.4% 1.00x (?)
TypeFlood 0 0 +0.0% 1.00x
UTF8Decode 298 298 +0.0% 1.00x
UTF8Decode_InitDecoding 1355 1362 +0.5% 0.99x (?)
UTF8Decode_InitDecoding_ascii 652 655 +0.5% 1.00x (?)
UTF8Decode_InitFromBytes 1168 1170 +0.2% 1.00x (?)
UTF8Decode_InitFromBytes_ascii 504 491 -2.6% 1.03x (?)
UTF8Decode_InitFromData 1236 1232 -0.3% 1.00x (?)
UTF8Decode_InitFromData_ascii 748 747 -0.1% 1.00x (?)
Walsh 443 443 +0.0% 1.00x
WordCountHistogramASCII 7929 7905 -0.3% 1.00x (?)
WordCountHistogramUTF16 14243 14147 -0.7% 1.01x (?)
WordCountUniqueASCII 2012 2073 +3.0% 0.97x (?)
WordCountUniqueUTF16 7534 7393 -1.9% 1.02x (?)
WordSplitASCII 7929 7785 -1.8% 1.02x (?)
WordSplitUTF16 9890 9685 -2.1% 1.02x (?)
XorLoop 388 393 +1.3% 0.99x (?)

Unoptimized (Onone)

Regression (10)
TEST OLD NEW DELTA SPEEDUP
ObjectiveCBridgeFromNSSetAnyObjectForced 5779 6676 +15.5% 0.87x (?)
DictionaryKeysContainsCocoa 66 73 +10.6% 0.90x (?)
NSDictionaryCastToSwift 8014 8627 +7.6% 0.93x (?)
TypeFlood 192 206 +7.3% 0.93x (?)
PopFrontUnsafePointer 10536 11239 +6.7% 0.94x (?)
CharIndexing_ascii_unicodeScalars_Backwards 414947 439714 +6.0% 0.94x (?)
ObjectiveCBridgeStubFromArrayOfNSString 35982 37959 +5.5% 0.95x (?)
CStringLongNonAscii 2486 2621 +5.4% 0.95x
ObjectiveCBridgeToNSArray 15054 15860 +5.4% 0.95x (?)
Join 188 198 +5.3% 0.95x
Improvement (18)
TEST OLD NEW DELTA SPEEDUP
CharIndexing_korean_unicodeScalars 397497 335256 -15.7% 1.19x (?)
CharIteration_chinese_unicodeScalars 127648 112243 -12.1% 1.14x (?)
ArrayOfPOD 849 762 -10.2% 1.11x
CharIteration_utf16_unicodeScalars_Backwards 236364 215357 -8.9% 1.10x (?)
FloatingPointPrinting_Float_interpolated 73854 67330 -8.8% 1.10x (?)
CharIndexing_japanese_unicodeScalars_Backwards 502770 460949 -8.3% 1.09x (?)
CharIndexing_chinese_unicodeScalars_Backwards 313738 291581 -7.1% 1.08x (?)
CharIndexing_punctuated_unicodeScalars_Backwards 90335 84136 -6.9% 1.07x (?)
CharIndexing_tweet_unicodeScalars_Backwards 820784 768826 -6.3% 1.07x (?)
StringEdits 390811 367485 -6.0% 1.06x (?)
StrComplexWalk 7270 6837 -6.0% 1.06x
StringBuilderLong 1524 1438 -5.6% 1.06x (?)
WordSplitUTF16 14329 13548 -5.5% 1.06x (?)
PrefixAnyCollectionLazy 108698 103107 -5.1% 1.05x (?)
StringInterpolationSmall 6699 6376 -4.8% 1.05x (?)
ArrayOfGenericPOD2 1186 1129 -4.8% 1.05x
CharIndexing_utf16_unicodeScalars_Backwards 343223 326733 -4.8% 1.05x (?)
CharIndexing_korean_unicodeScalars_Backwards 401460 382287 -4.8% 1.05x (?)
No Changes (418)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 5230 5231 +0.0% 1.00x (?)
AnyHashableWithAClass 103158 102540 -0.6% 1.01x (?)
Array2D 625918 625245 -0.1% 1.00x (?)
ArrayAppend 4550 4555 +0.1% 1.00x (?)
ArrayAppendArrayOfInt 863 863 +0.0% 1.00x
ArrayAppendAscii 27451 27028 -1.5% 1.02x
ArrayAppendAsciiSubstring 71208 71408 +0.3% 1.00x (?)
ArrayAppendFromGeneric 872 870 -0.2% 1.00x (?)
ArrayAppendGenericStructs 1507 1505 -0.1% 1.00x (?)
ArrayAppendLatin1 65282 65419 +0.2% 1.00x (?)
ArrayAppendLatin1Substring 160416 165434 +3.1% 0.97x (?)
ArrayAppendLazyMap 166081 167009 +0.6% 0.99x
ArrayAppendOptionals 1505 1506 +0.1% 1.00x (?)
ArrayAppendRepeatCol 189685 188858 -0.4% 1.00x (?)
ArrayAppendReserved 4277 4279 +0.0% 1.00x (?)
ArrayAppendSequence 104290 103375 -0.9% 1.01x
ArrayAppendStrings 6479 6468 -0.2% 1.00x (?)
ArrayAppendToFromGeneric 871 870 -0.1% 1.00x (?)
ArrayAppendToGeneric 875 874 -0.1% 1.00x (?)
ArrayAppendUTF16 65150 65931 +1.2% 0.99x
ArrayAppendUTF16Substring 158007 158761 +0.5% 1.00x (?)
ArrayInClass 6357 6358 +0.0% 1.00x (?)
ArrayLiteral 1787 1792 +0.3% 1.00x (?)
ArrayOfGenericRef 10509 10503 -0.1% 1.00x (?)
ArrayOfRef 9686 9643 -0.4% 1.00x (?)
ArrayPlusEqualArrayOfInt 869 871 +0.2% 1.00x (?)
ArrayPlusEqualFiveElementCollection 227127 228675 +0.7% 0.99x (?)
ArrayPlusEqualSingleElementCollection 225738 225202 -0.2% 1.00x (?)
ArrayPlusEqualThreeElements 9029 8887 -1.6% 1.02x (?)
ArraySubscript 105553 106243 +0.7% 0.99x (?)
ArrayValueProp 3671 3687 +0.4% 1.00x (?)
ArrayValueProp2 14928 14996 +0.5% 1.00x (?)
ArrayValueProp3 4261 4255 -0.1% 1.00x (?)
ArrayValueProp4 4179 4186 +0.2% 1.00x (?)
BinaryFloatingPointPropertiesBinade 88 88 +0.0% 1.00x
BinaryFloatingPointPropertiesNextUp 137 137 +0.0% 1.00x
BinaryFloatingPointPropertiesUlp 130 130 +0.0% 1.00x
BitCount 9108 9102 -0.1% 1.00x (?)
ByteSwap 9681 9653 -0.3% 1.00x (?)
COWArrayGuaranteedParameterOverhead 13869 13934 +0.5% 1.00x (?)
COWTree 11981 11415 -4.7% 1.05x
CSVParsing 2853911 2860946 +0.2% 1.00x (?)
CSVParsingAlt 1446155 1453350 +0.5% 1.00x (?)
CSVParsingAltIndices 2322370 2384705 +2.7% 0.97x (?)
CStringLongAscii 4283 4365 +1.9% 0.98x
CStringShortAscii 6088 6106 +0.3% 1.00x (?)
Calculator 939 963 +2.6% 0.98x
CaptureProp 293130 289267 -1.3% 1.01x
ChainedFilterMap 230029 229254 -0.3% 1.00x (?)
CharIndexing_ascii_unicodeScalars 347087 348611 +0.4% 1.00x (?)
CharIndexing_chinese_unicodeScalars 266906 267362 +0.2% 1.00x (?)
CharIndexing_japanese_unicodeScalars 421256 419150 -0.5% 1.01x (?)
CharIndexing_punctuatedJapanese_unicodeScalars 61573 62355 +1.3% 0.99x (?)
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 71059 72295 +1.7% 0.98x (?)
CharIndexing_punctuated_unicodeScalars 77835 76974 -1.1% 1.01x (?)
CharIndexing_russian_unicodeScalars 297387 291499 -2.0% 1.02x (?)
CharIndexing_russian_unicodeScalars_Backwards 343538 345414 +0.5% 0.99x (?)
CharIndexing_tweet_unicodeScalars 686825 687808 +0.1% 1.00x (?)
CharIndexing_utf16_unicodeScalars 296270 295963 -0.1% 1.00x (?)
CharIteration_ascii_unicodeScalars 149503 147986 -1.0% 1.01x (?)
CharIteration_ascii_unicodeScalars_Backwards 250358 250412 +0.0% 1.00x (?)
CharIteration_chinese_unicodeScalars_Backwards 192362 190981 -0.7% 1.01x (?)
CharIteration_japanese_unicodeScalars 177685 177178 -0.3% 1.00x (?)
CharIteration_japanese_unicodeScalars_Backwards 304848 303918 -0.3% 1.00x (?)
CharIteration_korean_unicodeScalars 142750 144807 +1.4% 0.99x (?)
CharIteration_korean_unicodeScalars_Backwards 243283 241638 -0.7% 1.01x (?)
CharIteration_punctuatedJapanese_unicodeScalars 26378 26296 -0.3% 1.00x (?)
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 43768 43293 -1.1% 1.01x (?)
CharIteration_punctuated_unicodeScalars 32929 33353 +1.3% 0.99x
CharIteration_punctuated_unicodeScalars_Backwards 55285 54889 -0.7% 1.01x (?)
CharIteration_russian_unicodeScalars 123436 123118 -0.3% 1.00x (?)
CharIteration_russian_unicodeScalars_Backwards 208403 206964 -0.7% 1.01x (?)
CharIteration_tweet_unicodeScalars 292910 295375 +0.8% 0.99x
CharIteration_tweet_unicodeScalars_Backwards 498801 492827 -1.2% 1.01x (?)
CharIteration_utf16_unicodeScalars 125166 126118 +0.8% 0.99x (?)
CharacterLiteralsLarge 5774 5748 -0.5% 1.00x (?)
CharacterLiteralsSmall 658 683 +3.8% 0.96x
CharacterPropertiesFetch 5685 5710 +0.4% 1.00x (?)
CharacterPropertiesPrecomputed 3503 3561 +1.7% 0.98x (?)
CharacterPropertiesStashed 2424 2358 -2.7% 1.03x (?)
CharacterPropertiesStashedMemo 4575 4363 -4.6% 1.05x (?)
Chars 35157 35232 +0.2% 1.00x
ClassArrayGetter 967 967 +0.0% 1.00x
Combos 2242 2221 -0.9% 1.01x (?)
DataAccessBytes 2355 2359 +0.2% 1.00x (?)
DataAppendArray 5269 5304 +0.7% 0.99x (?)
DataAppendBytes 5080 5140 +1.2% 0.99x (?)
DataAppendDataLargeToLarge 68458 68447 -0.0% 1.00x (?)
DataAppendDataLargeToMedium 36162 35934 -0.6% 1.01x (?)
DataAppendDataLargeToSmall 34774 34607 -0.5% 1.00x (?)
DataAppendDataMediumToLarge 38514 38433 -0.2% 1.00x (?)
DataAppendDataMediumToMedium 6630 6701 +1.1% 0.99x (?)
DataAppendDataMediumToSmall 6094 5865 -3.8% 1.04x (?)
DataAppendDataSmallToLarge 37104 36995 -0.3% 1.00x (?)
DataAppendDataSmallToMedium 6281 6114 -2.7% 1.03x (?)
DataAppendDataSmallToSmall 5907 6009 +1.7% 0.98x (?)
DataAppendSequence 1959796 1956338 -0.2% 1.00x
DataCopyBytes 460 451 -2.0% 1.02x (?)
DataCount 224 223 -0.4% 1.00x (?)
DataMutateBytes 5302 5109 -3.6% 1.04x (?)
DataReplaceLarge 37000 36773 -0.6% 1.01x (?)
DataReplaceLargeBuffer 57825 58174 +0.6% 0.99x (?)
DataReplaceMedium 7809 8052 +3.1% 0.97x (?)
DataReplaceMediumBuffer 12323 12372 +0.4% 1.00x (?)
DataReplaceSmall 5677 5893 +3.8% 0.96x (?)
DataReplaceSmallBuffer 9314 9580 +2.9% 0.97x (?)
DataReset 2846 2853 +0.2% 1.00x (?)
DataSetCount 571 564 -1.2% 1.01x (?)
DataSubscript 443 443 +0.0% 1.00x
DictOfArraysToArrayOfDicts 3423 3420 -0.1% 1.00x (?)
Dictionary 2352 2328 -1.0% 1.01x (?)
Dictionary2 1275 1270 -0.4% 1.00x (?)
Dictionary2OfObjects 4223 4226 +0.1% 1.00x (?)
Dictionary3 831 843 +1.4% 0.99x (?)
Dictionary3OfObjects 2236 2175 -2.7% 1.03x (?)
Dictionary4 1203 1200 -0.2% 1.00x (?)
Dictionary4Legacy 1508 1521 +0.9% 0.99x (?)
Dictionary4OfObjects 1788 1823 +2.0% 0.98x (?)
Dictionary4OfObjectsLegacy 2130 2145 +0.7% 0.99x (?)
DictionaryBridge 1328 1357 +2.2% 0.98x (?)
DictionaryCopy 310310 311057 +0.2% 1.00x (?)
DictionaryFilter 325728 324923 -0.2% 1.00x (?)
DictionaryGroup 4421 4433 +0.3% 1.00x (?)
DictionaryGroupOfObjects 6936 6939 +0.0% 1.00x (?)
DictionaryKeysContainsNative 54 53 -1.9% 1.02x (?)
DictionaryLiteral 8658 8692 +0.4% 1.00x (?)
DictionaryOfObjects 5950 6151 +3.4% 0.97x (?)
DictionaryRemove 16955 16998 +0.3% 1.00x (?)
DictionaryRemoveOfObjects 52946 52887 -0.1% 1.00x (?)
DictionarySubscriptDefaultMutation 1973 1979 +0.3% 1.00x (?)
DictionarySubscriptDefaultMutationArray 2228 2230 +0.1% 1.00x (?)
DictionarySubscriptDefaultMutationArrayOfObjects 9289 9290 +0.0% 1.00x (?)
DictionarySubscriptDefaultMutationOfObjects 5279 5336 +1.1% 0.99x (?)
DictionarySwap 4873 4902 +0.6% 0.99x (?)
DictionarySwapAt 32901 32410 -1.5% 1.02x (?)
DictionarySwapAtOfObjects 112533 112646 +0.1% 1.00x (?)
DictionarySwapOfObjects 19022 19191 +0.9% 0.99x (?)
DoubleWidthDivision 0 0 +0.0% 1.00x
DropFirstAnyCollection 15693 15534 -1.0% 1.01x
DropFirstAnyCollectionLazy 107493 105881 -1.5% 1.02x (?)
DropFirstAnySeqCRangeIter 24299 23830 -1.9% 1.02x
DropFirstAnySeqCRangeIterLazy 23886 23925 +0.2% 1.00x (?)
DropFirstAnySeqCntRange 15754 15523 -1.5% 1.01x
DropFirstAnySeqCntRangeLazy 15705 15504 -1.3% 1.01x
DropFirstAnySequence 12888 12840 -0.4% 1.00x (?)
DropFirstAnySequenceLazy 12965 12918 -0.4% 1.00x (?)
DropFirstArray 3506 3444 -1.8% 1.02x
DropFirstArrayLazy 29459 29548 +0.3% 1.00x (?)
DropFirstCountableRange 350 350 +0.0% 1.00x
DropFirstCountableRangeLazy 35176 34773 -1.1% 1.01x
DropFirstSequence 12480 12565 +0.7% 0.99x
DropFirstSequenceLazy 12566 12500 -0.5% 1.01x (?)
DropLastAnyCollection 5254 5196 -1.1% 1.01x (?)
DropLastAnyCollectionLazy 35375 34529 -2.4% 1.02x (?)
DropLastAnySeqCRangeIter 39799 39651 -0.4% 1.00x (?)
DropLastAnySeqCRangeIterLazy 39636 39607 -0.1% 1.00x (?)
DropLastAnySeqCntRange 5248 5208 -0.8% 1.01x (?)
DropLastAnySeqCntRangeLazy 5258 5181 -1.5% 1.01x (?)
DropLastAnySequence 29622 29412 -0.7% 1.01x (?)
DropLastAnySequenceLazy 29409 29225 -0.6% 1.01x (?)
DropLastCountableRange 119 119 +0.0% 1.00x
DropLastCountableRangeLazy 11751 11621 -1.1% 1.01x
DropLastSequence 29864 30164 +1.0% 0.99x (?)
DropLastSequenceLazy 29309 29287 -0.1% 1.00x (?)
DropWhileAnyCollection 20188 20118 -0.3% 1.00x
DropWhileAnyCollectionLazy 22871 22852 -0.1% 1.00x (?)
DropWhileAnySeqCRangeIter 24901 24814 -0.3% 1.00x (?)
DropWhileAnySeqCRangeIterLazy 22561 22570 +0.0% 1.00x (?)
DropWhileAnySeqCntRange 20176 20065 -0.6% 1.01x
DropWhileAnySeqCntRangeLazy 22652 22561 -0.4% 1.00x (?)
DropWhileAnySequence 13788 13756 -0.2% 1.00x (?)
DropWhileAnySequenceLazy 12451 12534 +0.7% 0.99x (?)
DropWhileArrayLazy 13706 13737 +0.2% 1.00x (?)
DropWhileCountableRange 5003 4967 -0.7% 1.01x
DropWhileCountableRangeLazy 22293 22250 -0.2% 1.00x (?)
DropWhileSequence 13351 13315 -0.3% 1.00x (?)
DropWhileSequenceLazy 12087 12051 -0.3% 1.00x (?)
EqualStringSubstring 73 74 +1.4% 0.99x
EqualSubstringString 73 74 +1.4% 0.99x
EqualSubstringSubstring 74 74 +0.0% 1.00x
EqualSubstringSubstringGenericEquatable 61 61 +0.0% 1.00x
ErrorHandling 5195 5107 -1.7% 1.02x (?)
ExclusivityGlobal 194 194 +0.0% 1.00x
ExclusivityIndependent 74 73 -1.4% 1.01x (?)
FatCompactMap 290848 290651 -0.1% 1.00x (?)
FilterEvenUsingReduce 3622 3611 -0.3% 1.00x (?)
FilterEvenUsingReduceInto 1848 1838 -0.5% 1.01x (?)
FloatingPointPrinting_Double_description_small 22384 22489 +0.5% 1.00x (?)
FloatingPointPrinting_Double_description_uniform 34142 34871 +2.1% 0.98x (?)
FloatingPointPrinting_Double_interpolated 98984 100800 +1.8% 0.98x (?)
FloatingPointPrinting_Float80_description_small 29238 29385 +0.5% 0.99x (?)
FloatingPointPrinting_Float80_description_uniform 59906 60079 +0.3% 1.00x (?)
FloatingPointPrinting_Float80_interpolated 120209 124807 +3.8% 0.96x (?)
FloatingPointPrinting_Float_description_small 6556 6595 +0.6% 0.99x
FloatingPointPrinting_Float_description_uniform 17292 17155 -0.8% 1.01x
FrequenciesUsingReduce 10621 10557 -0.6% 1.01x (?)
FrequenciesUsingReduceInto 3158 3104 -1.7% 1.02x (?)
Hanoi 19229 19219 -0.1% 1.00x (?)
HashTest 21019 20917 -0.5% 1.00x (?)
Histogram 6161 6176 +0.2% 1.00x (?)
Integrate 588 587 -0.2% 1.00x (?)
IterateData 5042 5013 -0.6% 1.01x (?)
LazilyFilteredArrayContains 735042 738359 +0.5% 1.00x
LazilyFilteredArrays 1419658 1416766 -0.2% 1.00x (?)
LazilyFilteredRange 544491 537432 -1.3% 1.01x
LessSubstringSubstring 74 74 +0.0% 1.00x
LessSubstringSubstringGenericComparable 61 60 -1.6% 1.02x
LinkedList 32652 32500 -0.5% 1.00x (?)
LuhnAlgoEager 5706 5873 +2.9% 0.97x (?)
LuhnAlgoLazy 6106 6174 +1.1% 0.99x (?)
MapReduce 24903 25075 +0.7% 0.99x
MapReduceAnyCollection 24816 25045 +0.9% 0.99x
MapReduceAnyCollectionShort 36007 35863 -0.4% 1.00x (?)
MapReduceClass 28980 29122 +0.5% 1.00x
MapReduceClassShort 39490 39581 +0.2% 1.00x (?)
MapReduceLazyCollection 22240 22340 +0.4% 1.00x (?)
MapReduceLazyCollectionShort 32223 32211 -0.0% 1.00x (?)
MapReduceLazySequence 20155 20293 +0.7% 0.99x
MapReduceSequence 30023 30162 +0.5% 1.00x (?)
MapReduceShort 35560 35613 +0.1% 1.00x (?)
MapReduceShortString 211 216 +2.4% 0.98x (?)
MapReduceString 1705 1711 +0.4% 1.00x (?)
Memset 45071 45046 -0.1% 1.00x (?)
MonteCarloE 1124139 1129100 +0.4% 1.00x (?)
MonteCarloPi 5084191 5122210 +0.7% 0.99x (?)
NSError 598 595 -0.5% 1.01x (?)
NSStringConversion 746 748 +0.3% 1.00x (?)
NibbleSort 511676 513501 +0.4% 1.00x (?)
NopDeinit 201352 200850 -0.2% 1.00x
ObjectAllocation 1260 1255 -0.4% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObject 29342 29280 -0.2% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 9678 9473 -2.1% 1.02x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 49285 50194 +1.8% 0.98x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 46911 47268 +0.8% 0.99x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 111654 114710 +2.7% 0.97x (?)
ObjectiveCBridgeFromNSSetAnyObject 53530 55915 +4.5% 0.96x (?)
ObjectiveCBridgeFromNSSetAnyObjectToString 73795 71569 -3.0% 1.03x (?)
ObjectiveCBridgeFromNSString 2920 2938 +0.6% 0.99x (?)
ObjectiveCBridgeFromNSStringForced 2838 2842 +0.1% 1.00x (?)
ObjectiveCBridgeStubDataAppend 6613 6671 +0.9% 0.99x (?)
ObjectiveCBridgeStubDateMutation 774 773 -0.1% 1.00x
ObjectiveCBridgeStubFromNSDate 6871 6856 -0.2% 1.00x (?)
ObjectiveCBridgeStubFromNSString 1049 1072 +2.2% 0.98x (?)
ObjectiveCBridgeStubFromNSStringRef 196 196 +0.0% 1.00x
ObjectiveCBridgeStubNSDataAppend 2975 3054 +2.7% 0.97x (?)
ObjectiveCBridgeStubNSDateMutationRef 16027 15961 -0.4% 1.00x (?)
ObjectiveCBridgeStubToArrayOfNSString 39264 39707 +1.1% 0.99x (?)
ObjectiveCBridgeStubToNSDate 16058 15902 -1.0% 1.01x (?)
ObjectiveCBridgeStubToNSDateRef 3495 3492 -0.1% 1.00x (?)
ObjectiveCBridgeStubToNSString 2423 2416 -0.3% 1.00x (?)
ObjectiveCBridgeStubToNSStringRef 153 154 +0.7% 0.99x
ObjectiveCBridgeStubURLAppendPath 297562 287418 -3.4% 1.04x (?)
ObjectiveCBridgeStubURLAppendPathRef 296007 293300 -0.9% 1.01x (?)
ObjectiveCBridgeToNSDictionary 29984 29419 -1.9% 1.02x (?)
ObjectiveCBridgeToNSSet 18627 18838 +1.1% 0.99x (?)
ObjectiveCBridgeToNSString 536 532 -0.7% 1.01x
ObserverClosure 6345 6370 +0.4% 1.00x (?)
ObserverForwarderStruct 4150 4166 +0.4% 1.00x (?)
ObserverPartiallyAppliedMethod 7908 7967 +0.7% 0.99x (?)
ObserverUnappliedMethod 7857 7886 +0.4% 1.00x (?)
OpaqueConsumingUsers 13403 13419 +0.1% 1.00x (?)
OpenClose 543 536 -1.3% 1.01x
PartialApplyDynamicType 41355 39388 -4.8% 1.05x (?)
Phonebook 15370 15131 -1.6% 1.02x
PointerArithmetics 117399 123091 +4.8% 0.95x
PolymorphicCalls 2472 2461 -0.4% 1.00x (?)
PopFrontArray 4628 4621 -0.2% 1.00x (?)
PopFrontArrayGeneric 5211 5199 -0.2% 1.00x (?)
PrefixAnyCollection 15713 15521 -1.2% 1.01x (?)
PrefixAnySeqCRangeIter 19260 18991 -1.4% 1.01x
PrefixAnySeqCRangeIterLazy 19003 19023 +0.1% 1.00x (?)
PrefixAnySeqCntRange 15707 15501 -1.3% 1.01x
PrefixAnySeqCntRangeLazy 15766 15521 -1.6% 1.02x
PrefixAnySequence 10611 10491 -1.1% 1.01x
PrefixAnySequenceLazy 10643 10592 -0.5% 1.00x (?)
PrefixArray 3510 3455 -1.6% 1.02x
PrefixArrayLazy 29389 29581 +0.7% 0.99x (?)
PrefixCountableRange 345 345 +0.0% 1.00x
PrefixCountableRangeLazy 35223 34771 -1.3% 1.01x
PrefixSequence 10168 10145 -0.2% 1.00x (?)
PrefixSequenceLazy 10177 10198 +0.2% 1.00x (?)
PrefixWhileAnyCollection 29217 29103 -0.4% 1.00x (?)
PrefixWhileAnyCollectionLazy 18849 18877 +0.1% 1.00x (?)
PrefixWhileAnySeqCRangeIter 33579 33603 +0.1% 1.00x (?)
PrefixWhileAnySeqCRangeIterLazy 18644 18683 +0.2% 1.00x (?)
PrefixWhileAnySeqCntRange 29194 29143 -0.2% 1.00x (?)
PrefixWhileAnySeqCntRangeLazy 18737 18655 -0.4% 1.00x
PrefixWhileAnySequence 25925 25929 +0.0% 1.00x (?)
PrefixWhileAnySequenceLazy 11066 11144 +0.7% 0.99x (?)
PrefixWhileArray 10320 10327 +0.1% 1.00x (?)
PrefixWhileArrayLazy 12239 12080 -1.3% 1.01x
PrefixWhileCountableRange 14185 14025 -1.1% 1.01x
PrefixWhileCountableRangeLazy 18834 18437 -2.1% 1.02x
PrefixWhileSequence 25457 25566 +0.4% 1.00x (?)
PrefixWhileSequenceLazy 10765 10839 +0.7% 0.99x (?)
Prims 9314 9281 -0.4% 1.00x (?)
PrimsSplit 9320 9282 -0.4% 1.00x (?)
QueueConcrete 14073 14012 -0.4% 1.00x (?)
QueueGeneric 18456 18375 -0.4% 1.00x
RC4 16311 16305 -0.0% 1.00x (?)
RGBHistogram 23329 23154 -0.8% 1.01x
RGBHistogramOfObjects 79857 78879 -1.2% 1.01x (?)
Radix2CooleyTukey 42045 42139 +0.2% 1.00x (?)
Radix2CooleyTukeyf 35495 35482 -0.0% 1.00x (?)
RandomDoubleDef 91428 90927 -0.5% 1.01x (?)
RandomDoubleLCG 61910 61620 -0.5% 1.00x (?)
RandomIntegersDef 44854 44888 +0.1% 1.00x (?)
RandomIntegersLCG 35311 34921 -1.1% 1.01x (?)
RandomShuffleDef 2175432 2171688 -0.2% 1.00x (?)
RandomShuffleLCG 1509267 1491507 -1.2% 1.01x
RangeAssignment 2744 2729 -0.5% 1.01x (?)
RangeIterationSigned 14713 14825 +0.8% 0.99x (?)
RangeReplaceableCollectionPlusDefault 10789 10492 -2.8% 1.03x (?)
RecursiveOwnedParameter 6220 6289 +1.1% 0.99x
RemoveWhereFilterInts 2073 2064 -0.4% 1.00x
RemoveWhereFilterString 1349 1333 -1.2% 1.01x
RemoveWhereFilterStrings 2588 2595 +0.3% 1.00x (?)
RemoveWhereMoveInts 3342 3341 -0.0% 1.00x (?)
RemoveWhereMoveStrings 3890 3891 +0.0% 1.00x (?)
RemoveWhereQuadraticInts 8450 8439 -0.1% 1.00x
RemoveWhereQuadraticString 2606 2581 -1.0% 1.01x
RemoveWhereQuadraticStrings 10095 10069 -0.3% 1.00x
RemoveWhereSwapInts 6074 6010 -1.1% 1.01x (?)
RemoveWhereSwapStrings 6727 6729 +0.0% 1.00x (?)
ReversedArray 12581 13104 +4.2% 0.96x
ReversedBidirectional 45199 44921 -0.6% 1.01x (?)
ReversedDictionary 23756 23658 -0.4% 1.00x (?)
RomanNumbers 1346941 1293541 -4.0% 1.04x
SequenceAlgosAnySequence 13159 13162 +0.0% 1.00x (?)
SequenceAlgosArray 736960 733311 -0.5% 1.00x
SequenceAlgosContiguousArray 301241 298192 -1.0% 1.01x (?)
SequenceAlgosList 8804 8705 -1.1% 1.01x (?)
SequenceAlgosRange 1292624 1291552 -0.1% 1.00x (?)
SequenceAlgosUnfoldSequence 6500 6511 +0.2% 1.00x (?)
SetExclusiveOr 16282 16469 +1.1% 0.99x (?)
SetExclusiveOr_OfObjects 41977 42289 +0.7% 0.99x (?)
SetIntersect 6858 6790 -1.0% 1.01x
SetIntersect_OfObjects 10688 10747 +0.6% 0.99x (?)
SetIsSubsetOf 1213 1189 -2.0% 1.02x
SetIsSubsetOf_OfObjects 2269 2279 +0.4% 1.00x (?)
SetUnion 11869 11971 +0.9% 0.99x
SetUnion_OfObjects 30265 30558 +1.0% 0.99x (?)
SevenBoom 1019 1023 +0.4% 1.00x (?)
Sim2DArray 43815 43849 +0.1% 1.00x (?)
SortLargeExistentials 9821 9830 +0.1% 1.00x (?)
SortLettersInPlace 1577 1582 +0.3% 1.00x (?)
SortSortedStrings 882 882 +0.0% 1.00x
SortStrings 1838 1834 -0.2% 1.00x (?)
SortStringsUnicode 2729 2775 +1.7% 0.98x
StackPromo 94433 94806 +0.4% 1.00x (?)
StaticArray 2598 2584 -0.5% 1.01x (?)
StrToInt 79196 79344 +0.2% 1.00x (?)
StringAdder 737 728 -1.2% 1.01x
StringBuilder 4990 5031 +0.8% 0.99x (?)
StringBuilderSmallReservingCapacity 5028 5031 +0.1% 1.00x (?)
StringBuilderWithLongSubstring 3199 3276 +2.4% 0.98x (?)
StringComparison_abnormal 1310 1367 +4.4% 0.96x (?)
StringComparison_ascii 8819 8890 +0.8% 0.99x (?)
StringComparison_emoji 1984 1976 -0.4% 1.00x (?)
StringComparison_fastPrenormal 4859 4858 -0.0% 1.00x (?)
StringComparison_latin1 3781 3781 +0.0% 1.00x
StringComparison_longSharedPrefix 2340 2342 +0.1% 1.00x (?)
StringComparison_nonBMPSlowestPrenormal 3682 3665 -0.5% 1.00x (?)
StringComparison_slowerPrenormal 4132 4112 -0.5% 1.00x (?)
StringComparison_zalgo 123721 123380 -0.3% 1.00x (?)
StringEnumRawValueInitialization 21058 21167 +0.5% 0.99x (?)
StringEqualPointerComparison 1672 1702 +1.8% 0.98x (?)
StringFromLongWholeSubstring 22 22 +0.0% 1.00x
StringFromLongWholeSubstringGeneric 196 198 +1.0% 0.99x (?)
StringHasPrefixAscii 3204 3208 +0.1% 1.00x (?)
StringHasPrefixUnicode 100873 100972 +0.1% 1.00x (?)
StringHasSuffixAscii 3287 3287 +0.0% 1.00x
StringHasSuffixUnicode 101417 102444 +1.0% 0.99x (?)
StringInterpolation 12555 12543 -0.1% 1.00x (?)
StringInterpolationManySmallSegments 18832 18886 +0.3% 1.00x (?)
StringMatch 39186 38993 -0.5% 1.00x (?)
StringRemoveDupes 723 718 -0.7% 1.01x (?)
StringUTF16Builder 7720 7773 +0.7% 0.99x (?)
StringUTF16SubstringBuilder 21388 22240 +4.0% 0.96x (?)
StringWalk 13182 13345 +1.2% 0.99x
StringWithCString 43481 43485 +0.0% 1.00x (?)
StringWordBuilder 2400 2410 +0.4% 1.00x (?)
StringWordBuilderReservingCapacity 1943 2009 +3.4% 0.97x
SubstringComparable 1579 1577 -0.1% 1.00x (?)
SubstringEqualString 1720 1723 +0.2% 1.00x (?)
SubstringEquatable 5361 5421 +1.1% 0.99x (?)
SubstringFromLongString 15 15 +0.0% 1.00x
SubstringFromLongStringGeneric 104 104 +0.0% 1.00x
SuffixAnyCollection 5259 5202 -1.1% 1.01x
SuffixAnyCollectionLazy 35125 33653 -4.2% 1.04x (?)
SuffixAnySeqCRangeIter 35826 35610 -0.6% 1.01x
SuffixAnySeqCRangeIterLazy 35881 35570 -0.9% 1.01x
SuffixAnySeqCntRange 5242 5188 -1.0% 1.01x
SuffixAnySeqCntRangeLazy 5261 5185 -1.4% 1.01x (?)
SuffixAnySequence 25590 25460 -0.5% 1.01x (?)
SuffixAnySequenceLazy 25450 25365 -0.3% 1.00x (?)
SuffixCountableRange 119 119 +0.0% 1.00x
SuffixCountableRangeLazy 11725 11617 -0.9% 1.01x (?)
SuffixSequence 25297 25287 -0.0% 1.00x (?)
SuffixSequenceLazy 25305 25208 -0.4% 1.00x (?)
SumUsingReduce 155832 155506 -0.2% 1.00x (?)
SumUsingReduceInto 149710 149346 -0.2% 1.00x (?)
SuperChars 92569 93119 +0.6% 0.99x (?)
TwoSum 3524 3473 -1.4% 1.01x
UTF8Decode 28884 28862 -0.1% 1.00x (?)
UTF8Decode_InitDecoding 1405 1410 +0.4% 1.00x (?)
UTF8Decode_InitDecoding_ascii 875 875 +0.0% 1.00x
UTF8Decode_InitFromBytes 1192 1176 -1.3% 1.01x (?)
UTF8Decode_InitFromBytes_ascii 535 536 +0.2% 1.00x (?)
UTF8Decode_InitFromData 1250 1257 +0.6% 0.99x (?)
UTF8Decode_InitFromData_ascii 771 737 -4.4% 1.05x (?)
Walsh 12404 12389 -0.1% 1.00x
WordCountHistogramASCII 37498 37565 +0.2% 1.00x (?)
WordCountHistogramUTF16 46695 46674 -0.0% 1.00x (?)
WordCountUniqueASCII 6941 7038 +1.4% 0.99x
WordCountUniqueUTF16 13144 12981 -1.2% 1.01x (?)
WordSplitASCII 11944 11898 -0.4% 1.00x (?)
XorLoop 23787 23804 +0.1% 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

@airspeedswift
Copy link
Member

No benchmarks use first(where:) afaict :) Some stdlib implementations will, but they're inlined to heck so you probably wouldn't see a difference anyway.

I'm going to merge this. We should figure out a realistic benchmark that might push the performance case for the original form, add that, then revert this change and see if it makes any difference. We can always put the old implementation back if it does.

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