Skip to content

Conversation

@lorentey
Copy link
Member

@lorentey lorentey commented Feb 6, 2018

This PR implements an alternative hashing interface that moves the choice of a hash function out of Hashable. Doing this allows us to evolve the hash function in the stdlib without recompiling hashable types.

To achieve this, it defines a streaming interface where hashable types can feed some stateful hash function with a variable number of Ints representing the bits to be hashed:

public protocol Hashable : Equatable {
  var hashValue: Int { get }
  func _hash(into hasher: (Int) -> Void)
}

The new _hash(into:) requirement comes with a default implementation for compatibility. However, it replaces hashValue as the primary hashing API for Set and Dictionary.

I expect we won't need to make the new method public. Outside the stdlib, it will be implemented by synthesized conformances of Hashable. Manually conforming Hashable types will continue to implement hashValue, as they have done since Swift 1.0. (We can't deprecate hashValue without significant source compatibility issues, and it doesn't seem worth the upgrade churn.)

@lorentey
Copy link
Member Author

lorentey commented Feb 6, 2018

@swift-ci please benchmark

@lorentey
Copy link
Member Author

lorentey commented Feb 6, 2018

@swift-ci please smoke test

@lorentey
Copy link
Member Author

lorentey commented Feb 6, 2018

(Some hash values are different from master, so some tests will fail.)

@lorentey
Copy link
Member Author

lorentey commented Feb 6, 2018

cc @airspeedswift

@swift-ci
Copy link
Contributor

swift-ci commented Feb 7, 2018

Build comment file:

Optimized (O)

Regression (63)
TEST OLD NEW DELTA SPEEDUP
DictionarySwap 427 2068 +384.3% 0.21x
SetIntersect 288 1306 +353.5% 0.22x
SetIntersect_OfObjects 1599 6890 +330.9% 0.23x
Histogram 299 1272 +325.4% 0.24x
Dictionary3 208 871 +318.7% 0.24x
SetExclusiveOr_OfObjects 7806 28200 +261.3% 0.28x
DictionarySubscriptDefaultMutation 136 483 +255.1% 0.28x
SetUnion_OfObjects 6507 21414 +229.1% 0.30x
Dictionary 451 1443 +220.0% 0.31x
SetIsSubsetOf_OfObjects 326 989 +203.4% 0.33x
WordCountUniqueASCII 1613 4851 +200.7% 0.33x
DictionaryGroup 119 324 +172.3% 0.37x
DictionaryRemove 2572 6695 +160.3% 0.38x
ReversedDictionary 101 247 +144.6% 0.41x
DictionarySwapOfObjects 6619 15818 +139.0% 0.42x
DictionarySubscriptDefaultMutationOfObjects 1240 2870 +131.5% 0.43x
PrimsSplit 678 1567 +131.1% 0.43x
Prims 680 1566 +130.3% 0.43x
SetExclusiveOr 3042 6906 +127.0% 0.44x
Dictionary3OfObjects 600 1298 +116.3% 0.46x
DictionaryGroupOfObjects 1731 3584 +107.0% 0.48x
DictionarySubscriptDefaultMutationArray 441 840 +90.5% 0.53x
DictionaryRemoveOfObjects 21556 40734 +89.0% 0.53x
RGBHistogram 2759 4935 +78.9% 0.56x
SetUnion 2794 4990 +78.6% 0.56x
Dictionary2 1439 2570 +78.6% 0.56x
TwoSum 892 1588 +78.0% 0.56x
DictionaryOfObjects 1957 3275 +67.3% 0.60x
RGBHistogramOfObjects 21421 35193 +64.3% 0.61x
SetIsSubsetOf 268 431 +60.8% 0.62x
DictionaryLiteral 1440 2244 +55.8% 0.64x
CharacterPropertiesPrecomputed 875 1329 +51.9% 0.66x
FrequenciesUsingReduceInto 2843 4277 +50.4% 0.66x
DictionarySubscriptDefaultMutationArrayOfObjects 3414 5100 +49.4% 0.67x
StringRemoveDupes 1068 1591 +49.0% 0.67x
Dictionary2OfObjects 2656 3908 +47.1% 0.68x
Sim2DArray 371 536 +44.5% 0.69x
WordCountHistogramASCII 7189 10217 +42.1% 0.70x
WordCountUniqueUTF16 19389 27482 +41.7% 0.71x
CharacterPropertiesStashedMemo 1372 1919 +39.9% 0.71x
ObjectiveCBridgeFromNSSetAnyObjectToString 59199 82499 +39.4% 0.72x
DictOfArraysToArrayOfDicts 706 958 +35.7% 0.74x
FrequenciesUsingReduce 5971 7662 +28.3% 0.78x
ObjectiveCBridgeFromNSDictionaryAnyObject 107675 136262 +26.5% 0.79x
ObjectiveCBridgeFromNSSetAnyObject 52639 65471 +24.4% 0.80x
WordSplitUTF16 19690 24128 +22.5% 0.82x (?)
WordSplitASCII 19079 22985 +20.5% 0.83x
StringEdits 109544 128863 +17.6% 0.85x
PrefixWhileCountableRange 41 48 +17.1% 0.85x
DictionaryBridge 1745 1975 +13.2% 0.88x (?)
WordCountHistogramUTF16 48427 53610 +10.7% 0.90x (?)
MapReduceLazyCollectionShort 30 33 +10.0% 0.91x
ObjectiveCBridgeStubToNSStringRef 101 111 +9.9% 0.91x
ObjectiveCBridgeStubFromNSDate 3708 4067 +9.7% 0.91x (?)
ObjectiveCBridgeToNSDictionary 46965 50792 +8.1% 0.92x (?)
NopDeinit 19363 20906 +8.0% 0.93x
MapReduceAnyCollection 333 358 +7.5% 0.93x
DropLastSequence 576 612 +6.2% 0.94x
ObjectiveCBridgeStubURLAppendPathRef 289361 307075 +6.1% 0.94x (?)
DropLastSequenceLazy 578 613 +6.1% 0.94x
ObjectiveCBridgeToNSSet 39955 42229 +5.7% 0.95x (?)
ObjectiveCBridgeStubFromNSStringRef 142 150 +5.6% 0.95x
ObjectiveCBridgeStubURLAppendPath 284023 299668 +5.5% 0.95x (?)
Improvement (11)
TEST OLD NEW DELTA SPEEDUP
PrefixWhileArray 94 79 -16.0% 1.19x
PointerArithmetics 30826 28251 -8.4% 1.09x
StringWalk 1453 1337 -8.0% 1.09x
StringEnumRawValueInitialization 949 884 -6.8% 1.07x
LazilyFilteredRange 3643 3419 -6.1% 1.07x
DropFirstAnySequence 4131 3879 -6.1% 1.06x
PrefixAnySequence 3628 3410 -6.0% 1.06x
LazilyFilteredArrayContains 33605 31819 -5.3% 1.06x
Walsh 396 375 -5.3% 1.06x
NSStringConversion 297 282 -5.1% 1.05x
DropFirstAnySequenceLazy 4078 3878 -4.9% 1.05x
No Changes (286)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 3346 3332 -0.4% 1.00x (?)
AnyHashableWithAClass 62728 61973 -1.2% 1.01x (?)
Array2D 2278 2275 -0.1% 1.00x (?)
ArrayAppend 894 891 -0.3% 1.00x (?)
ArrayAppendArrayOfInt 673 672 -0.1% 1.00x (?)
ArrayAppendAscii 12218 12259 +0.3% 1.00x
ArrayAppendFromGeneric 673 673 +0.0% 1.00x
ArrayAppendGenericStructs 1211 1211 +0.0% 1.00x
ArrayAppendLatin1 34438 34470 +0.1% 1.00x (?)
ArrayAppendLazyMap 1177 1176 -0.1% 1.00x (?)
ArrayAppendOptionals 1213 1209 -0.3% 1.00x (?)
ArrayAppendRepeatCol 1176 1174 -0.2% 1.00x (?)
ArrayAppendReserved 668 667 -0.1% 1.00x (?)
ArrayAppendSequence 990 990 +0.0% 1.00x
ArrayAppendStrings 13658 13662 +0.0% 1.00x (?)
ArrayAppendToFromGeneric 672 673 +0.1% 1.00x (?)
ArrayAppendToGeneric 673 673 +0.0% 1.00x
ArrayAppendUTF16 33809 33925 +0.3% 1.00x (?)
ArrayInClass 77 77 +0.0% 1.00x
ArrayLiteral 0 0 +0.0% 1.00x
ArrayOfGenericPOD2 129 129 +0.0% 1.00x
ArrayOfGenericRef 3906 3904 -0.1% 1.00x (?)
ArrayOfPOD 156 156 +0.0% 1.00x
ArrayOfRef 3899 3897 -0.1% 1.00x (?)
ArrayPlusEqualArrayOfInt 673 672 -0.1% 1.00x (?)
ArrayPlusEqualFiveElementCollection 4842 4796 -1.0% 1.01x
ArrayPlusEqualSingleElementCollection 895 896 +0.1% 1.00x (?)
ArrayPlusEqualThreeElements 1482 1484 +0.1% 1.00x (?)
ArraySubscript 1359 1360 +0.1% 1.00x (?)
ArrayValueProp 7 7 +0.0% 1.00x
ArrayValueProp2 7 7 +0.0% 1.00x
ArrayValueProp3 7 7 +0.0% 1.00x
ArrayValueProp4 7 7 +0.0% 1.00x
BinaryFloatingPointConversionFromBinaryInteger 41 41 +0.0% 1.00x
BitCount 189 189 +0.0% 1.00x
ByteSwap 87 87 +0.0% 1.00x
COWTree 3231 3223 -0.2% 1.00x (?)
CSVParsing 682693 683021 +0.0% 1.00x (?)
CSVParsingAlt 655565 648610 -1.1% 1.01x (?)
CSVParsingAltIndices 330291 326430 -1.2% 1.01x (?)
CStringLongAscii 4281 4283 +0.0% 1.00x (?)
CStringLongNonAscii 1927 1929 +0.1% 1.00x (?)
CStringShortAscii 4263 4262 -0.0% 1.00x (?)
Calculator 395 387 -2.0% 1.02x
CaptureProp 7977 7961 -0.2% 1.00x (?)
CharIndexing_ascii_unicodeScalars 14253 14250 -0.0% 1.00x (?)
CharIndexing_ascii_unicodeScalars_Backwards 12914 12907 -0.1% 1.00x (?)
CharIndexing_chinese_unicodeScalars 10792 10790 -0.0% 1.00x (?)
CharIndexing_chinese_unicodeScalars_Backwards 9788 9777 -0.1% 1.00x (?)
CharIndexing_japanese_unicodeScalars 17051 17049 -0.0% 1.00x (?)
CharIndexing_japanese_unicodeScalars_Backwards 15456 15442 -0.1% 1.00x (?)
CharIndexing_korean_unicodeScalars 13821 13821 +0.0% 1.00x
CharIndexing_korean_unicodeScalars_Backwards 12525 12514 -0.1% 1.00x (?)
CharIndexing_punctuatedJapanese_unicodeScalars 2598 2592 -0.2% 1.00x (?)
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 2364 2358 -0.3% 1.00x
CharIndexing_punctuated_unicodeScalars 3237 3235 -0.1% 1.00x (?)
CharIndexing_punctuated_unicodeScalars_Backwards 2953 2943 -0.3% 1.00x
CharIndexing_russian_unicodeScalars 11884 11874 -0.1% 1.00x (?)
CharIndexing_russian_unicodeScalars_Backwards 10764 10760 -0.0% 1.00x (?)
CharIndexing_tweet_unicodeScalars 28280 28275 -0.0% 1.00x (?)
CharIndexing_tweet_unicodeScalars_Backwards 25557 25559 +0.0% 1.00x (?)
CharIndexing_utf16_unicodeScalars 18659 18652 -0.0% 1.00x (?)
CharIndexing_utf16_unicodeScalars_Backwards 19127 19113 -0.1% 1.00x (?)
CharIteration_ascii_unicodeScalars 18486 18602 +0.6% 0.99x
CharIteration_ascii_unicodeScalars_Backwards 12619 12615 -0.0% 1.00x (?)
CharIteration_chinese_unicodeScalars 14023 14054 +0.2% 1.00x (?)
CharIteration_chinese_unicodeScalars_Backwards 9567 9564 -0.0% 1.00x (?)
CharIteration_japanese_unicodeScalars 22068 22193 +0.6% 0.99x (?)
CharIteration_japanese_unicodeScalars_Backwards 15102 15095 -0.0% 1.00x (?)
CharIteration_korean_unicodeScalars 17911 18057 +0.8% 0.99x
CharIteration_korean_unicodeScalars_Backwards 12235 12231 -0.0% 1.00x (?)
CharIteration_punctuatedJapanese_unicodeScalars 3291 3299 +0.2% 1.00x (?)
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 2320 2316 -0.2% 1.00x
CharIteration_punctuated_unicodeScalars 4139 4163 +0.6% 0.99x (?)
CharIteration_punctuated_unicodeScalars_Backwards 2891 2889 -0.1% 1.00x (?)
CharIteration_russian_unicodeScalars 15382 15491 +0.7% 0.99x
CharIteration_russian_unicodeScalars_Backwards 10518 10519 +0.0% 1.00x (?)
CharIteration_tweet_unicodeScalars 36529 36816 +0.8% 0.99x
CharIteration_tweet_unicodeScalars_Backwards 24638 24637 -0.0% 1.00x (?)
CharIteration_utf16_unicodeScalars 24466 24385 -0.3% 1.00x (?)
CharIteration_utf16_unicodeScalars_Backwards 15204 15467 +1.7% 0.98x
CharacterLiteralsLarge 5487 5467 -0.4% 1.00x (?)
CharacterLiteralsSmall 367 370 +0.8% 0.99x (?)
CharacterPropertiesFetch 4121 4110 -0.3% 1.00x (?)
CharacterPropertiesStashed 1394 1376 -1.3% 1.01x (?)
Chars 869 868 -0.1% 1.00x (?)
ClassArrayGetter 13 13 +0.0% 1.00x
Combos 404 404 +0.0% 1.00x
DoubleWidthDivision 209 210 +0.5% 1.00x (?)
DropFirstAnyCollection 68 68 +0.0% 1.00x
DropFirstAnyCollectionLazy 58210 58544 +0.6% 0.99x (?)
DropFirstAnySeqCRangeIter 16307 16672 +2.2% 0.98x
DropFirstAnySeqCRangeIterLazy 16314 16671 +2.2% 0.98x (?)
DropFirstAnySeqCntRange 64 64 +0.0% 1.00x
DropFirstAnySeqCntRangeLazy 64 64 +0.0% 1.00x
DropFirstArray 31 31 +0.0% 1.00x
DropFirstArrayLazy 31 31 +0.0% 1.00x
DropFirstCountableRange 31 31 +0.0% 1.00x
DropFirstCountableRangeLazy 31 31 +0.0% 1.00x
DropFirstSequence 2420 2420 +0.0% 1.00x
DropFirstSequenceLazy 2504 2499 -0.2% 1.00x (?)
DropLastAnyCollection 25 25 +0.0% 1.00x
DropLastAnyCollectionLazy 19164 19356 +1.0% 0.99x (?)
DropLastAnySeqCRangeIter 3163 3147 -0.5% 1.01x (?)
DropLastAnySeqCRangeIterLazy 3170 3150 -0.6% 1.01x (?)
DropLastAnySeqCntRange 21 21 +0.0% 1.00x
DropLastAnySeqCntRangeLazy 21 21 +0.0% 1.00x
DropLastAnySequence 4626 4572 -1.2% 1.01x
DropLastAnySequenceLazy 4769 4686 -1.7% 1.02x (?)
DropLastCountableRange 10 10 +0.0% 1.00x
DropLastCountableRangeLazy 10 10 +0.0% 1.00x
DropWhileAnyCollection 89 89 +0.0% 1.00x
DropWhileAnyCollectionLazy 132 132 +0.0% 1.00x
DropWhileAnySeqCRangeIter 13663 13270 -2.9% 1.03x
DropWhileAnySeqCRangeIterLazy 132 132 +0.0% 1.00x
DropWhileAnySeqCntRange 85 85 +0.0% 1.00x
DropWhileAnySeqCntRangeLazy 132 132 +0.0% 1.00x
DropWhileAnySequence 4394 4188 -4.7% 1.05x
DropWhileAnySequenceLazy 1664 1664 +0.0% 1.00x
DropWhileArrayLazy 116 115 -0.9% 1.01x
DropWhileCountableRange 32 32 +0.0% 1.00x
DropWhileCountableRangeLazy 100 100 +0.0% 1.00x
DropWhileSequence 1202 1202 +0.0% 1.00x
DropWhileSequenceLazy 79 79 +0.0% 1.00x
EqualStringSubstring 388 388 +0.0% 1.00x
EqualSubstringString 388 388 +0.0% 1.00x
EqualSubstringSubstring 387 388 +0.3% 1.00x (?)
EqualSubstringSubstringGenericEquatable 387 388 +0.3% 1.00x (?)
ErrorHandling 2093 2087 -0.3% 1.00x (?)
ExclusivityGlobal 5 5 +0.0% 1.00x
ExclusivityIndependent 2 2 +0.0% 1.00x
FilterEvenUsingReduce 1175 1184 +0.8% 0.99x (?)
FilterEvenUsingReduceInto 132 133 +0.8% 0.99x (?)
Hanoi 3105 3251 +4.7% 0.96x
HashTest 1609 1586 -1.4% 1.01x (?)
Integrate 195 196 +0.5% 0.99x
IterateData 1247 1240 -0.6% 1.01x (?)
Join 341 341 +0.0% 1.00x
LazilyFilteredArrays 59240 59350 +0.2% 1.00x (?)
LessSubstringSubstring 388 389 +0.3% 1.00x (?)
LessSubstringSubstringGenericComparable 387 388 +0.3% 1.00x (?)
LinkedList 6761 6748 -0.2% 1.00x (?)
LuhnAlgoEager 522 521 -0.2% 1.00x (?)
LuhnAlgoLazy 521 522 +0.2% 1.00x (?)
MapReduce 358 358 +0.0% 1.00x
MapReduceAnyCollectionShort 1879 1829 -2.7% 1.03x (?)
MapReduceClass 2717 2725 +0.3% 1.00x (?)
MapReduceClassShort 4136 4131 -0.1% 1.00x (?)
MapReduceLazyCollection 12 12 +0.0% 1.00x
MapReduceLazySequence 77 77 +0.0% 1.00x
MapReduceSequence 403 405 +0.5% 1.00x (?)
MapReduceShort 1841 1821 -1.1% 1.01x (?)
MapReduceShortString 19 19 +0.0% 1.00x
MapReduceString 73 73 +0.0% 1.00x
Memset 192 193 +0.5% 0.99x (?)
MonteCarloE 9210 9313 +1.1% 0.99x
MonteCarloPi 38508 38641 +0.3% 1.00x (?)
NSDictionaryCastToSwift 4768 4811 +0.9% 0.99x (?)
NSError 275 277 +0.7% 0.99x (?)
NibbleSort 3551 3695 +4.1% 0.96x
ObjectAllocation 168 167 -0.6% 1.01x (?)
ObjectiveCBridgeFromNSArrayAnyObject 17874 17959 +0.5% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 3536 3542 +0.2% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 34447 34485 +0.1% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 29648 30227 +2.0% 0.98x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 3727 3813 +2.3% 0.98x (?)
ObjectiveCBridgeFromNSString 1192 1201 +0.8% 0.99x (?)
ObjectiveCBridgeFromNSStringForced 2112 2150 +1.8% 0.98x (?)
ObjectiveCBridgeStubDataAppend 3510 3528 +0.5% 0.99x (?)
ObjectiveCBridgeStubDateMutation 231 231 +0.0% 1.00x
ObjectiveCBridgeStubFromArrayOfNSString 23153 22711 -1.9% 1.02x (?)
ObjectiveCBridgeStubFromNSString 788 778 -1.3% 1.01x (?)
ObjectiveCBridgeStubNSDataAppend 2220 2233 +0.6% 0.99x (?)
ObjectiveCBridgeStubNSDateMutationRef 12133 12491 +3.0% 0.97x (?)
ObjectiveCBridgeStubToArrayOfNSString 25313 25612 +1.2% 0.99x (?)
ObjectiveCBridgeStubToNSDate 13500 14195 +5.1% 0.95x (?)
ObjectiveCBridgeStubToNSDateRef 3072 3087 +0.5% 1.00x (?)
ObjectiveCBridgeStubToNSString 1381 1384 +0.2% 1.00x (?)
ObjectiveCBridgeToNSArray 26208 26366 +0.6% 0.99x (?)
ObjectiveCBridgeToNSString 1178 1179 +0.1% 1.00x (?)
ObserverClosure 1907 1926 +1.0% 0.99x
ObserverForwarderStruct 840 838 -0.2% 1.00x (?)
ObserverPartiallyAppliedMethod 3288 3345 +1.7% 0.98x
ObserverUnappliedMethod 2086 2081 -0.2% 1.00x (?)
OpenClose 228 233 +2.2% 0.98x
PartialApplyDynamicType 0 0 +0.0% 1.00x
Phonebook 3692 3693 +0.0% 1.00x (?)
PolymorphicCalls 22 22 +0.0% 1.00x
PopFrontArray 1761 1699 -3.5% 1.04x (?)
PopFrontArrayGeneric 1756 1757 +0.1% 1.00x (?)
PopFrontUnsafePointer 8201 8301 +1.2% 0.99x (?)
PrefixAnyCollection 68 68 +0.0% 1.00x
PrefixAnyCollectionLazy 57724 58835 +1.9% 0.98x (?)
PrefixAnySeqCRangeIter 12721 12592 -1.0% 1.01x (?)
PrefixAnySeqCRangeIterLazy 12721 12643 -0.6% 1.01x (?)
PrefixAnySeqCntRange 64 64 +0.0% 1.00x
PrefixAnySeqCntRangeLazy 64 64 +0.0% 1.00x
PrefixAnySequenceLazy 3506 3413 -2.7% 1.03x
PrefixArray 31 31 +0.0% 1.00x
PrefixArrayLazy 31 31 +0.0% 1.00x
PrefixCountableRange 31 31 +0.0% 1.00x
PrefixCountableRangeLazy 31 31 +0.0% 1.00x
PrefixSequence 1188 1188 +0.0% 1.00x
PrefixSequenceLazy 1267 1267 +0.0% 1.00x
PrefixWhileAnyCollection 131 131 +0.0% 1.00x
PrefixWhileAnyCollectionLazy 95 95 +0.0% 1.00x
PrefixWhileAnySeqCRangeIter 8364 8378 +0.2% 1.00x (?)
PrefixWhileAnySeqCRangeIterLazy 95 95 +0.0% 1.00x
PrefixWhileAnySeqCntRange 127 127 +0.0% 1.00x
PrefixWhileAnySeqCntRangeLazy 95 95 +0.0% 1.00x
PrefixWhileAnySequence 9397 9332 -0.7% 1.01x (?)
PrefixWhileAnySequenceLazy 1248 1248 +0.0% 1.00x
PrefixWhileArrayLazy 63 63 +0.0% 1.00x
PrefixWhileCountableRangeLazy 31 31 +0.0% 1.00x
PrefixWhileSequence 320 321 +0.3% 1.00x (?)
PrefixWhileSequenceLazy 47 47 +0.0% 1.00x
QueueConcrete 1170 1169 -0.1% 1.00x (?)
QueueGeneric 1034 1034 +0.0% 1.00x
RC4 149 148 -0.7% 1.01x
RangeAssignment 317 315 -0.6% 1.01x (?)
RangeIterationSigned 154 154 +0.0% 1.00x
RangeIterationSigned64 179 179 +0.0% 1.00x
RangeIterationUnsigned 179 179 +0.0% 1.00x
RangeReplaceableCollectionPlusDefault 871 871 +0.0% 1.00x
RecursiveOwnedParameter 2105 2106 +0.0% 1.00x (?)
ReversedArray 51 51 +0.0% 1.00x
ReversedBidirectional 13732 13700 -0.2% 1.00x (?)
RomanNumbers 102188 100618 -1.5% 1.02x (?)
SevenBoom 1367 1391 +1.8% 0.98x (?)
SortLargeExistentials 6303 6315 +0.2% 1.00x (?)
SortLettersInPlace 1036 1036 +0.0% 1.00x
SortSortedStrings 1052 1029 -2.2% 1.02x
SortStrings 1855 1813 -2.3% 1.02x
SortStringsUnicode 13919 14028 +0.8% 0.99x (?)
StackPromo 19700 19753 +0.3% 1.00x (?)
StaticArray 5 5 +0.0% 1.00x
StrComplexWalk 1404 1403 -0.1% 1.00x (?)
StrToInt 1917 1918 +0.1% 1.00x (?)
StringAdder 3860 3867 +0.2% 1.00x (?)
StringBuilder 1290 1302 +0.9% 0.99x (?)
StringBuilderLong 973 976 +0.3% 1.00x (?)
StringComparison_abnormal 770 774 +0.5% 0.99x (?)
StringComparison_ascii 875 876 +0.1% 1.00x (?)
StringComparison_emoji 2287 2295 +0.3% 1.00x (?)
StringComparison_fastPrenormal 7805 7871 +0.8% 0.99x (?)
StringComparison_latin1 5367 5414 +0.9% 0.99x (?)
StringComparison_longSharedPrefix 10329 10339 +0.1% 1.00x (?)
StringComparison_nonBMPSlowestPrenormal 4202 4198 -0.1% 1.00x (?)
StringComparison_slowerPrenormal 3736 3768 +0.9% 0.99x (?)
StringComparison_zalgo 1547 1552 +0.3% 1.00x (?)
StringEqualPointerComparison 256 256 +0.0% 1.00x
StringFromLongWholeSubstring 18 18 +0.0% 1.00x
StringFromLongWholeSubstringGeneric 9 9 +0.0% 1.00x
StringHasPrefixAscii 1438 1463 +1.7% 0.98x
StringHasPrefixUnicode 25320 25212 -0.4% 1.00x (?)
StringHasSuffixAscii 1541 1567 +1.7% 0.98x
StringHasSuffixUnicode 76479 76507 +0.0% 1.00x (?)
StringInterpolation 8329 8305 -0.3% 1.00x (?)
StringMatch 6721 6807 +1.3% 0.99x
StringUTF16Builder 2172 2185 +0.6% 0.99x (?)
StringWithCString 38459 37973 -1.3% 1.01x
StringWordBuilder 1580 1566 -0.9% 1.01x (?)
StringWordBuilderReservingCapacity 1223 1207 -1.3% 1.01x
SubstringComparable 1903 1915 +0.6% 0.99x (?)
SubstringEqualString 1911 1911 +0.0% 1.00x
SubstringEquatable 2862 2878 +0.6% 0.99x (?)
SubstringFromLongString 9 9 +0.0% 1.00x
SubstringFromLongStringGeneric 62 62 +0.0% 1.00x
SuffixAnyCollection 25 25 +0.0% 1.00x
SuffixAnyCollectionLazy 19514 19552 +0.2% 1.00x (?)
SuffixAnySeqCRangeIter 3422 3408 -0.4% 1.00x (?)
SuffixAnySeqCRangeIterLazy 3424 3412 -0.4% 1.00x (?)
SuffixAnySeqCntRange 21 21 +0.0% 1.00x
SuffixAnySeqCntRangeLazy 21 21 +0.0% 1.00x
SuffixAnySequence 4639 4574 -1.4% 1.01x
SuffixAnySequenceLazy 4702 4642 -1.3% 1.01x
SuffixCountableRange 10 10 +0.0% 1.00x
SuffixCountableRangeLazy 10 10 +0.0% 1.00x
SuffixSequence 3366 3326 -1.2% 1.01x (?)
SuffixSequenceLazy 3367 3339 -0.8% 1.01x (?)
SumUsingReduce 91 91 +0.0% 1.00x
SumUsingReduceInto 91 91 +0.0% 1.00x
SuperChars 36984 36694 -0.8% 1.01x (?)
TypeFlood 0 0 +0.0% 1.00x
UTF8Decode 286 286 +0.0% 1.00x
XorLoop 335 335 +0.0% 1.00x

Unoptimized (Onone)

Regression (90)
TEST OLD NEW DELTA SPEEDUP
DictionarySwap 4761 9485 +99.2% 0.50x
TwoSum 3498 6575 +88.0% 0.53x
SetUnion 10653 19862 +86.4% 0.54x
SetExclusiveOr 15439 27909 +80.8% 0.55x
DictionaryRemove 16286 28492 +74.9% 0.57x
Dictionary 2296 3464 +50.9% 0.66x
DictionarySubscriptDefaultMutation 1931 2912 +50.8% 0.66x
DictionarySubscriptDefaultMutationArray 2122 3189 +50.3% 0.67x
StringRemoveDupes 1275 1871 +46.7% 0.68x
FrequenciesUsingReduceInto 4784 7011 +46.6% 0.68x
SetIntersect 7266 10566 +45.4% 0.69x
SetUnion_OfObjects 26008 37796 +45.3% 0.69x
CharacterPropertiesPrecomputed 3815 5520 +44.7% 0.69x
Histogram 5818 8381 +44.1% 0.69x
SetExclusiveOr_OfObjects 37791 54225 +43.5% 0.70x
Dictionary2 2542 3585 +41.0% 0.71x
CharacterPropertiesStashedMemo 4348 5938 +36.6% 0.73x
SetIntersect_OfObjects 10821 14704 +35.9% 0.74x
CharIteration_russian_unicodeScalars 115127 155858 +35.4% 0.74x
DictionaryRemoveOfObjects 45042 60888 +35.2% 0.74x
CharIteration_korean_unicodeScalars 134153 181268 +35.1% 0.74x
CharIteration_japanese_unicodeScalars 165803 224004 +35.1% 0.74x
CharIteration_ascii_unicodeScalars 138151 186469 +35.0% 0.74x
CharIteration_chinese_unicodeScalars 104573 141083 +34.9% 0.74x
WordCountUniqueUTF16 27510 37022 +34.6% 0.74x
DictionaryLiteral 7714 10329 +33.9% 0.75x
CharIteration_punctuated_unicodeScalars 31039 41537 +33.8% 0.75x
CharIteration_punctuatedJapanese_unicodeScalars 24739 32966 +33.3% 0.75x
RGBHistogram 23960 31801 +32.7% 0.75x
CharIteration_tweet_unicodeScalars 293822 389552 +32.6% 0.75x
SetIsSubsetOf 1202 1591 +32.4% 0.76x
Dictionary3OfObjects 1996 2631 +31.8% 0.76x
SetIsSubsetOf_OfObjects 1392 1833 +31.7% 0.76x
ObjectiveCBridgeFromNSSetAnyObjectToString 65307 85853 +31.5% 0.76x
Dictionary3 1133 1479 +30.5% 0.77x
FrequenciesUsingReduce 9287 12090 +30.2% 0.77x
WordCountUniqueASCII 7144 9231 +29.2% 0.77x
ObjectiveCBridgeFromNSDictionaryAnyObject 112212 142327 +26.8% 0.79x
Dictionary2OfObjects 4899 6213 +26.8% 0.79x
CharIteration_utf16_unicodeScalars 116977 147450 +26.1% 0.79x
DictionaryOfObjects 5484 6886 +25.6% 0.80x
DictionarySubscriptDefaultMutationOfObjects 5023 6306 +25.5% 0.80x
CharIteration_korean_unicodeScalars_Backwards 252816 312711 +23.7% 0.81x (?)
CharIteration_japanese_unicodeScalars_Backwards 309933 382441 +23.4% 0.81x
RGBHistogramOfObjects 86103 106157 +23.3% 0.81x
ObjectiveCBridgeFromNSSetAnyObject 56332 69419 +23.2% 0.81x
DictionaryGroup 3812 4690 +23.0% 0.81x
CharIteration_punctuated_unicodeScalars_Backwards 56940 69692 +22.4% 0.82x
CharIteration_ascii_unicodeScalars_Backwards 261551 319861 +22.3% 0.82x
CharIteration_russian_unicodeScalars_Backwards 217183 263637 +21.4% 0.82x (?)
DictionaryGroupOfObjects 6698 8102 +21.0% 0.83x
CharIteration_tweet_unicodeScalars_Backwards 552450 653474 +18.3% 0.85x (?)
ReversedDictionary 20008 23663 +18.3% 0.85x
DictionarySubscriptDefaultMutationArrayOfObjects 8069 9512 +17.9% 0.85x
WordSplitUTF16 23927 27953 +16.8% 0.86x
WordSplitASCII 22908 26725 +16.7% 0.86x
DictionarySwapOfObjects 20364 23611 +15.9% 0.86x
CharIteration_utf16_unicodeScalars_Backwards 228286 258802 +13.4% 0.88x
PrimsSplit 8641 9779 +13.2% 0.88x
PrefixArray 3420 3850 +12.6% 0.89x
DropFirstArray 3425 3838 +12.1% 0.89x
WordCountHistogramASCII 43071 48212 +11.9% 0.89x
Prims 8689 9607 +10.6% 0.90x
WordCountHistogramUTF16 90418 99944 +10.5% 0.90x
CharIteration_chinese_unicodeScalars_Backwards 217972 239087 +9.7% 0.91x (?)
CharIndexing_tweet_unicodeScalars_Backwards 741753 812852 +9.6% 0.91x (?)
ObjectiveCBridgeToNSDictionary 48213 52643 +9.2% 0.92x
CharIndexing_ascii_unicodeScalars 360524 392180 +8.8% 0.92x (?)
CharIndexing_korean_unicodeScalars_Backwards 361800 392120 +8.4% 0.92x (?)
DictionaryBridge 1850 2002 +8.2% 0.92x
StringEqualPointerComparison 2813 3044 +8.2% 0.92x
DictOfArraysToArrayOfDicts 3001 3247 +8.2% 0.92x
ObjectiveCBridgeFromNSSetAnyObjectForced 5752 6222 +8.2% 0.92x (?)
CharIndexing_japanese_unicodeScalars 420615 453948 +7.9% 0.93x (?)
CharIndexing_ascii_unicodeScalars_Backwards 376506 405965 +7.8% 0.93x (?)
CharIndexing_japanese_unicodeScalars_Backwards 450024 485033 +7.8% 0.93x
CharIndexing_chinese_unicodeScalars 264397 283639 +7.3% 0.93x (?)
CharIndexing_russian_unicodeScalars_Backwards 311795 334273 +7.2% 0.93x (?)
ObjectiveCBridgeToNSSet 42260 45285 +7.2% 0.93x
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 52099 55803 +7.1% 0.93x
CharIndexing_tweet_unicodeScalars 695361 741880 +6.7% 0.94x (?)
OpenClose 495 528 +6.7% 0.94x
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 65791 70151 +6.6% 0.94x (?)
CharIndexing_russian_unicodeScalars 298802 318580 +6.6% 0.94x
CharIndexing_korean_unicodeScalars 349019 372068 +6.6% 0.94x
CharIndexing_chinese_unicodeScalars_Backwards 285439 303935 +6.5% 0.94x (?)
CharIndexing_utf16_unicodeScalars_Backwards 305911 325023 +6.2% 0.94x (?)
SortSortedStrings 1188 1253 +5.5% 0.95x
Hanoi 17620 18567 +5.4% 0.95x
StringEdits 285286 300327 +5.3% 0.95x (?)
Improvement (8)
TEST OLD NEW DELTA SPEEDUP
ReversedBidirectional 42554 37706 -11.4% 1.13x
ArrayOfPOD 752 676 -10.1% 1.11x
ArrayOfGenericPOD2 1063 960 -9.7% 1.11x
SuffixAnyCollectionLazy 31987 29997 -6.2% 1.07x (?)
PrefixAnyCollectionLazy 99224 93883 -5.4% 1.06x (?)
SubstringEquatable 7362 6972 -5.3% 1.06x
DropLastAnyCollectionLazy 33029 31418 -4.9% 1.05x (?)
DropFirstAnyCollectionLazy 94782 90220 -4.8% 1.05x (?)
No Changes (262)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 4563 4561 -0.0% 1.00x (?)
AnyHashableWithAClass 78437 76879 -2.0% 1.02x
Array2D 567006 567979 +0.2% 1.00x (?)
ArrayAppend 4177 4173 -0.1% 1.00x (?)
ArrayAppendArrayOfInt 725 731 +0.8% 0.99x
ArrayAppendAscii 35575 36149 +1.6% 0.98x
ArrayAppendFromGeneric 728 731 +0.4% 1.00x
ArrayAppendGenericStructs 1270 1270 +0.0% 1.00x
ArrayAppendLatin1 56331 57256 +1.6% 0.98x
ArrayAppendLazyMap 151217 151587 +0.2% 1.00x
ArrayAppendOptionals 1271 1272 +0.1% 1.00x (?)
ArrayAppendRepeatCol 151791 157172 +3.5% 0.97x
ArrayAppendReserved 3840 3838 -0.1% 1.00x (?)
ArrayAppendSequence 127793 127839 +0.0% 1.00x (?)
ArrayAppendStrings 13779 13789 +0.1% 1.00x (?)
ArrayAppendToFromGeneric 729 729 +0.0% 1.00x
ArrayAppendToGeneric 731 733 +0.3% 1.00x (?)
ArrayAppendUTF16 55239 56838 +2.9% 0.97x
ArrayInClass 5619 5572 -0.8% 1.01x (?)
ArrayLiteral 1592 1594 +0.1% 1.00x (?)
ArrayOfGenericRef 9000 8961 -0.4% 1.00x (?)
ArrayOfRef 8292 8302 +0.1% 1.00x (?)
ArrayPlusEqualArrayOfInt 726 729 +0.4% 1.00x
ArrayPlusEqualFiveElementCollection 213146 208883 -2.0% 1.02x (?)
ArrayPlusEqualSingleElementCollection 207100 206513 -0.3% 1.00x (?)
ArrayPlusEqualThreeElements 8425 8608 +2.2% 0.98x (?)
ArraySubscript 74274 73240 -1.4% 1.01x (?)
ArrayValueProp 3243 3246 +0.1% 1.00x (?)
ArrayValueProp2 14417 14394 -0.2% 1.00x (?)
ArrayValueProp3 3698 3695 -0.1% 1.00x (?)
ArrayValueProp4 3653 3651 -0.1% 1.00x (?)
BinaryFloatingPointConversionFromBinaryInteger 5372 5309 -1.2% 1.01x (?)
BitCount 1979 1982 +0.2% 1.00x (?)
ByteSwap 3519 3540 +0.6% 0.99x
COWTree 9986 10183 +2.0% 0.98x
CSVParsing 2193045 2159346 -1.5% 1.02x (?)
CSVParsingAlt 1203293 1198558 -0.4% 1.00x (?)
CSVParsingAltIndices 2292334 2286283 -0.3% 1.00x (?)
CStringLongAscii 4353 4338 -0.3% 1.00x (?)
CStringLongNonAscii 1908 1936 +1.5% 0.99x
CStringShortAscii 7109 6886 -3.1% 1.03x (?)
Calculator 1509 1561 +3.4% 0.97x
CaptureProp 228674 232392 +1.6% 0.98x (?)
CharIndexing_punctuatedJapanese_unicodeScalars 63523 66847 +5.2% 0.95x (?)
CharIndexing_punctuated_unicodeScalars 85206 84817 -0.5% 1.00x (?)
CharIndexing_punctuated_unicodeScalars_Backwards 84840 88715 +4.6% 0.96x (?)
CharIndexing_utf16_unicodeScalars 293214 303206 +3.4% 0.97x (?)
CharacterLiteralsLarge 5399 5334 -1.2% 1.01x (?)
CharacterLiteralsSmall 635 635 +0.0% 1.00x
CharacterPropertiesFetch 4895 4993 +2.0% 0.98x (?)
CharacterPropertiesStashed 2085 2102 +0.8% 0.99x (?)
Chars 36035 35002 -2.9% 1.03x
ClassArrayGetter 882 881 -0.1% 1.00x (?)
Combos 1889 1941 +2.8% 0.97x (?)
DoubleWidthDivision 21466 21678 +1.0% 0.99x
DropFirstAnyCollection 12134 12160 +0.2% 1.00x (?)
DropFirstAnySeqCRangeIter 18138 18252 +0.6% 0.99x
DropFirstAnySeqCRangeIterLazy 18225 18201 -0.1% 1.00x (?)
DropFirstAnySeqCntRange 12131 12209 +0.6% 0.99x (?)
DropFirstAnySeqCntRangeLazy 12240 12353 +0.9% 0.99x
DropFirstAnySequence 9765 9720 -0.5% 1.00x
DropFirstAnySequenceLazy 9720 9716 -0.0% 1.00x (?)
DropFirstArrayLazy 22493 22473 -0.1% 1.00x (?)
DropFirstCountableRange 291 291 +0.0% 1.00x
DropFirstCountableRangeLazy 22983 23029 +0.2% 1.00x (?)
DropFirstSequence 9410 9422 +0.1% 1.00x (?)
DropFirstSequenceLazy 9332 9414 +0.9% 0.99x
DropLastAnyCollection 4039 4073 +0.8% 0.99x (?)
DropLastAnySeqCRangeIter 33631 33723 +0.3% 1.00x (?)
DropLastAnySeqCRangeIterLazy 33871 33861 -0.0% 1.00x (?)
DropLastAnySeqCntRange 4048 4065 +0.4% 1.00x (?)
DropLastAnySeqCntRangeLazy 4074 4100 +0.6% 0.99x (?)
DropLastAnySequence 25687 25847 +0.6% 0.99x
DropLastAnySequenceLazy 25810 25873 +0.2% 1.00x (?)
DropLastCountableRange 100 100 +0.0% 1.00x
DropLastCountableRangeLazy 7712 7709 -0.0% 1.00x (?)
DropLastSequence 25737 25959 +0.9% 0.99x (?)
DropLastSequenceLazy 25659 25775 +0.5% 1.00x
DropWhileAnyCollection 15666 15672 +0.0% 1.00x (?)
DropWhileAnyCollectionLazy 16877 17062 +1.1% 0.99x
DropWhileAnySeqCRangeIter 19841 19705 -0.7% 1.01x (?)
DropWhileAnySeqCRangeIterLazy 17078 16901 -1.0% 1.01x
DropWhileAnySeqCntRange 15614 15754 +0.9% 0.99x (?)
DropWhileAnySeqCntRangeLazy 16883 16963 +0.5% 1.00x
DropWhileAnySequence 11009 11126 +1.1% 0.99x
DropWhileAnySequenceLazy 9110 9058 -0.6% 1.01x
DropWhileArrayLazy 12225 12318 +0.8% 0.99x
DropWhileCountableRange 3694 3745 +1.4% 0.99x
DropWhileCountableRangeLazy 16490 16633 +0.9% 0.99x
DropWhileSequence 10756 10824 +0.6% 0.99x
DropWhileSequenceLazy 8899 8743 -1.8% 1.02x
EqualStringSubstring 427 430 +0.7% 0.99x (?)
EqualSubstringString 428 431 +0.7% 0.99x (?)
EqualSubstringSubstring 429 431 +0.5% 1.00x (?)
EqualSubstringSubstringGenericEquatable 434 437 +0.7% 0.99x (?)
ErrorHandling 6274 6455 +2.9% 0.97x (?)
ExclusivityGlobal 159 164 +3.1% 0.97x (?)
ExclusivityIndependent 61 62 +1.6% 0.98x (?)
FilterEvenUsingReduce 3388 3357 -0.9% 1.01x (?)
FilterEvenUsingReduceInto 1777 1791 +0.8% 0.99x (?)
HashTest 14826 15018 +1.3% 0.99x (?)
Integrate 739 745 +0.8% 0.99x
IterateData 6953 6925 -0.4% 1.00x (?)
Join 987 987 +0.0% 1.00x
LazilyFilteredArrayContains 703757 689438 -2.0% 1.02x
LazilyFilteredArrays 1311689 1319731 +0.6% 0.99x (?)
LazilyFilteredRange 420101 420830 +0.2% 1.00x
LessSubstringSubstring 428 430 +0.5% 1.00x (?)
LessSubstringSubstringGenericComparable 433 435 +0.5% 1.00x (?)
LinkedList 28904 28902 -0.0% 1.00x (?)
LuhnAlgoEager 4574 4456 -2.6% 1.03x (?)
LuhnAlgoLazy 4715 4638 -1.6% 1.02x
MapReduce 24550 24475 -0.3% 1.00x (?)
MapReduceAnyCollection 24622 24482 -0.6% 1.01x (?)
MapReduceAnyCollectionShort 34929 34535 -1.1% 1.01x (?)
MapReduceClass 28706 28682 -0.1% 1.00x (?)
MapReduceClassShort 37847 38920 +2.8% 0.97x (?)
MapReduceLazyCollection 21022 20681 -1.6% 1.02x
MapReduceLazyCollectionShort 29898 30453 +1.9% 0.98x (?)
MapReduceLazySequence 16210 16475 +1.6% 0.98x
MapReduceSequence 27287 27160 -0.5% 1.00x (?)
MapReduceShort 34093 34078 -0.0% 1.00x (?)
MapReduceShortString 219 220 +0.5% 1.00x (?)
MapReduceString 1738 1754 +0.9% 0.99x (?)
Memset 40114 40136 +0.1% 1.00x (?)
MonteCarloE 810898 801800 -1.1% 1.01x (?)
MonteCarloPi 3603844 3497992 -2.9% 1.03x
NSDictionaryCastToSwift 5913 6108 +3.3% 0.97x (?)
NSError 638 644 +0.9% 0.99x (?)
NSStringConversion 335 325 -3.0% 1.03x
NibbleSort 267965 272902 +1.8% 0.98x
NopDeinit 145538 150559 +3.4% 0.97x
ObjectAllocation 1205 1207 +0.2% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObject 20228 20437 +1.0% 0.99x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 7707 7903 +2.5% 0.98x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 37100 36913 -0.5% 1.01x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 31554 31895 +1.1% 0.99x (?)
ObjectiveCBridgeFromNSString 2934 2849 -2.9% 1.03x (?)
ObjectiveCBridgeFromNSStringForced 2416 2458 +1.7% 0.98x (?)
ObjectiveCBridgeStubDataAppend 3969 4020 +1.3% 0.99x (?)
ObjectiveCBridgeStubDateMutation 565 568 +0.5% 0.99x
ObjectiveCBridgeStubFromArrayOfNSString 24605 23619 -4.0% 1.04x (?)
ObjectiveCBridgeStubFromNSDate 4408 4406 -0.0% 1.00x (?)
ObjectiveCBridgeStubFromNSString 825 835 +1.2% 0.99x (?)
ObjectiveCBridgeStubFromNSStringRef 184 186 +1.1% 0.99x (?)
ObjectiveCBridgeStubNSDataAppend 2666 2619 -1.8% 1.02x (?)
ObjectiveCBridgeStubNSDateMutationRef 14029 14402 +2.7% 0.97x (?)
ObjectiveCBridgeStubToArrayOfNSString 25934 26018 +0.3% 1.00x (?)
ObjectiveCBridgeStubToNSDate 14588 14335 -1.7% 1.02x (?)
ObjectiveCBridgeStubToNSDateRef 3107 3101 -0.2% 1.00x (?)
ObjectiveCBridgeStubToNSString 1409 1413 +0.3% 1.00x (?)
ObjectiveCBridgeStubToNSStringRef 145 145 +0.0% 1.00x
ObjectiveCBridgeStubURLAppendPath 302146 311453 +3.1% 0.97x
ObjectiveCBridgeStubURLAppendPathRef 307863 309642 +0.6% 0.99x (?)
ObjectiveCBridgeToNSArray 26382 26088 -1.1% 1.01x (?)
ObjectiveCBridgeToNSString 1218 1223 +0.4% 1.00x (?)
ObserverClosure 5663 5670 +0.1% 1.00x (?)
ObserverForwarderStruct 3878 3876 -0.1% 1.00x (?)
ObserverPartiallyAppliedMethod 6948 6974 +0.4% 1.00x (?)
ObserverUnappliedMethod 7323 7334 +0.2% 1.00x (?)
PartialApplyDynamicType 36383 36863 +1.3% 0.99x (?)
Phonebook 18365 18904 +2.9% 0.97x
PointerArithmetics 107888 102792 -4.7% 1.05x
PolymorphicCalls 5376 5548 +3.2% 0.97x (?)
PopFrontArray 4127 4147 +0.5% 1.00x (?)
PopFrontArrayGeneric 5104 5228 +2.4% 0.98x
PopFrontUnsafePointer 10070 10011 -0.6% 1.01x (?)
PrefixAnyCollection 12139 12164 +0.2% 1.00x (?)
PrefixAnySeqCRangeIter 14795 14665 -0.9% 1.01x
PrefixAnySeqCRangeIterLazy 14662 14635 -0.2% 1.00x (?)
PrefixAnySeqCntRange 12075 12125 +0.4% 1.00x (?)
PrefixAnySeqCntRangeLazy 12023 12169 +1.2% 0.99x (?)
PrefixAnySequence 8189 8097 -1.1% 1.01x
PrefixAnySequenceLazy 8146 8083 -0.8% 1.01x
PrefixArrayLazy 22484 22503 +0.1% 1.00x (?)
PrefixCountableRange 291 292 +0.3% 1.00x
PrefixCountableRangeLazy 23041 23027 -0.1% 1.00x (?)
PrefixSequence 8055 7869 -2.3% 1.02x (?)
PrefixSequenceLazy 8000 7875 -1.6% 1.02x (?)
PrefixWhileAnyCollection 22595 22422 -0.8% 1.01x (?)
PrefixWhileAnyCollectionLazy 14121 14417 +2.1% 0.98x
PrefixWhileAnySeqCRangeIter 29477 29880 +1.4% 0.99x
PrefixWhileAnySeqCRangeIterLazy 14154 14449 +2.1% 0.98x
PrefixWhileAnySeqCntRange 22547 22468 -0.4% 1.00x
PrefixWhileAnySeqCntRangeLazy 14214 14583 +2.6% 0.97x
PrefixWhileAnySequence 23712 23834 +0.5% 0.99x
PrefixWhileAnySequenceLazy 8219 8240 +0.3% 1.00x (?)
PrefixWhileArray 10425 10532 +1.0% 0.99x
PrefixWhileArrayLazy 10646 10832 +1.7% 0.98x
PrefixWhileCountableRange 10407 10556 +1.4% 0.99x
PrefixWhileCountableRangeLazy 13817 13968 +1.1% 0.99x
PrefixWhileSequence 23564 23562 -0.0% 1.00x (?)
PrefixWhileSequenceLazy 8011 8023 +0.1% 1.00x (?)
QueueConcrete 13579 13612 +0.2% 1.00x
QueueGeneric 17193 17163 -0.2% 1.00x (?)
RC4 14895 14925 +0.2% 1.00x (?)
RangeAssignment 2415 2494 +3.3% 0.97x
RangeIterationSigned 14966 15255 +1.9% 0.98x (?)
RangeIterationSigned64 34770 35617 +2.4% 0.98x (?)
RangeIterationUnsigned 31126 31446 +1.0% 0.99x (?)
RangeReplaceableCollectionPlusDefault 7793 7645 -1.9% 1.02x (?)
RecursiveOwnedParameter 7238 7030 -2.9% 1.03x (?)
ReversedArray 11882 11644 -2.0% 1.02x
RomanNumbers 1080053 1063446 -1.5% 1.02x (?)
SevenBoom 1498 1502 +0.3% 1.00x (?)
Sim2DArray 39165 39069 -0.2% 1.00x
SortLargeExistentials 14114 14089 -0.2% 1.00x (?)
SortLettersInPlace 2524 2560 +1.4% 0.99x
SortStrings 2278 2301 +1.0% 0.99x
SortStringsUnicode 14636 14743 +0.7% 0.99x (?)
StackPromo 79440 80179 +0.9% 0.99x (?)
StaticArray 2383 2394 +0.5% 1.00x (?)
StrComplexWalk 5972 5779 -3.2% 1.03x
StrToInt 53457 51367 -3.9% 1.04x
StringAdder 4256 4266 +0.2% 1.00x (?)
StringBuilder 6141 6119 -0.4% 1.00x (?)
StringBuilderLong 2461 2441 -0.8% 1.01x
StringComparison_abnormal 1270 1291 +1.7% 0.98x (?)
StringComparison_ascii 9599 9624 +0.3% 1.00x
StringComparison_emoji 3410 3433 +0.7% 0.99x (?)
StringComparison_fastPrenormal 12053 12069 +0.1% 1.00x (?)
StringComparison_latin1 8509 8630 +1.4% 0.99x (?)
StringComparison_longSharedPrefix 11728 11806 +0.7% 0.99x
StringComparison_nonBMPSlowestPrenormal 6203 6270 +1.1% 0.99x (?)
StringComparison_slowerPrenormal 6122 6308 +3.0% 0.97x (?)
StringComparison_zalgo 2630 2576 -2.1% 1.02x (?)
StringEnumRawValueInitialization 18941 19344 +2.1% 0.98x (?)
StringFromLongWholeSubstring 20 20 +0.0% 1.00x
StringFromLongWholeSubstringGeneric 179 181 +1.1% 0.99x
StringHasPrefixAscii 2798 2845 +1.7% 0.98x
StringHasPrefixUnicode 27549 27710 +0.6% 0.99x
StringHasSuffixAscii 2774 2853 +2.8% 0.97x
StringHasSuffixUnicode 79234 79015 -0.3% 1.00x (?)
StringInterpolation 13012 12693 -2.5% 1.03x (?)
StringMatch 29448 29673 +0.8% 0.99x (?)
StringUTF16Builder 6901 6890 -0.2% 1.00x (?)
StringWalk 11489 11458 -0.3% 1.00x
StringWithCString 35274 33629 -4.7% 1.05x
StringWordBuilder 2215 2215 +0.0% 1.00x
StringWordBuilderReservingCapacity 1947 1949 +0.1% 1.00x (?)
SubstringComparable 3674 3718 +1.2% 0.99x (?)
SubstringEqualString 3138 3216 +2.5% 0.98x (?)
SubstringFromLongString 22 22 +0.0% 1.00x
SubstringFromLongStringGeneric 89 89 +0.0% 1.00x
SuffixAnyCollection 4074 4061 -0.3% 1.00x
SuffixAnySeqCRangeIter 30279 30050 -0.8% 1.01x
SuffixAnySeqCRangeIterLazy 30336 30329 -0.0% 1.00x (?)
SuffixAnySeqCntRange 4063 4063 +0.0% 1.00x
SuffixAnySeqCntRangeLazy 4024 4051 +0.7% 0.99x (?)
SuffixAnySequence 22457 22519 +0.3% 1.00x (?)
SuffixAnySequenceLazy 22449 22533 +0.4% 1.00x
SuffixCountableRange 100 100 +0.0% 1.00x
SuffixCountableRangeLazy 7699 7684 -0.2% 1.00x (?)
SuffixSequence 22650 22595 -0.2% 1.00x (?)
SuffixSequenceLazy 22405 22440 +0.2% 1.00x (?)
SumUsingReduce 152486 153631 +0.8% 0.99x
SumUsingReduceInto 149419 152943 +2.4% 0.98x
SuperChars 190886 197653 +3.5% 0.97x
TypeFlood 143 145 +1.4% 0.99x (?)
UTF8Decode 27045 26889 -0.6% 1.01x
Walsh 10761 10755 -0.1% 1.00x (?)
XorLoop 20972 20965 -0.0% 1.00x (?)
Hardware Overview
  Model Name: Mac Pro
  Model Identifier: MacPro6,1
  Processor Name: 8-Core Intel Xeon E5
  Processor Speed: 3 GHz
  Number of Processors: 1
  Total Number of Cores: 8
  L2 Cache (per Core): 256 KB
  L3 Cache: 25 MB
  Memory: 64 GB

- Add the method _hash(into:) as a Hashable requirement. It takes a closure into which the function can feed integer values representing bits to be hashed.
- Implement _hash(into:) in terms of hashValue in an extension, for compatibility.
- Add struct _QuickHasher, for emulating Swift 4 hashes in the new interface.
- Add _defaultHashValue<T>(for:), implementing hashValue in terms of _hash(into:) and _QuickHasher.
We don't need to stream bytes, just words.
@lorentey
Copy link
Member Author

lorentey commented Feb 8, 2018

@swift-ci please benchmark

@swift-ci
Copy link
Contributor

swift-ci commented Feb 8, 2018

Build comment file:

Optimized (O)

Regression (58)
TEST OLD NEW DELTA SPEEDUP
Dictionary4OfObjects 197 1062 +439.1% 0.19x
Dictionary4 147 770 +423.8% 0.19x
DictionarySwap 469 2310 +392.5% 0.20x
SetIntersect 334 1469 +339.8% 0.23x
Histogram 324 1422 +338.9% 0.23x
SetIntersect_OfObjects 1759 7643 +334.5% 0.23x
Dictionary3 235 1003 +326.8% 0.23x
DictionarySubscriptDefaultMutation 149 538 +261.1% 0.28x
SetExclusiveOr_OfObjects 8907 31667 +255.5% 0.28x
SetUnion_OfObjects 7289 23920 +228.2% 0.30x
Dictionary 500 1607 +221.4% 0.31x
SetIsSubsetOf_OfObjects 366 1104 +201.6% 0.33x
WordCountUniqueASCII 1782 5207 +192.2% 0.34x
DictionaryRemove 2739 7794 +184.6% 0.35x
DictionaryGroup 132 361 +173.5% 0.37x
ReversedDictionary 127 318 +150.4% 0.40x
DictionarySwapOfObjects 7422 17663 +138.0% 0.42x
PrimsSplit 754 1752 +132.4% 0.43x
Prims 754 1744 +131.3% 0.43x
DictionarySubscriptDefaultMutationOfObjects 1389 3203 +130.6% 0.43x
SetExclusiveOr 3416 7746 +126.8% 0.44x
Dictionary3OfObjects 671 1413 +110.6% 0.47x
DictionaryGroupOfObjects 1918 4019 +109.5% 0.48x
RGBHistogram 2955 5581 +88.9% 0.53x
DictionaryRemoveOfObjects 23829 44348 +86.1% 0.54x
SetUnion 3109 5671 +82.4% 0.55x
TwoSum 984 1793 +82.2% 0.55x
DictionarySubscriptDefaultMutationArray 492 874 +77.6% 0.56x
Dictionary2 1613 2865 +77.6% 0.56x
DictionaryOfObjects 2178 3621 +66.3% 0.60x
RGBHistogramOfObjects 23757 39451 +66.1% 0.60x
SetIsSubsetOf 300 470 +56.7% 0.64x
DictionaryLiteral 1601 2508 +56.7% 0.64x
FrequenciesUsingReduceInto 3162 4782 +51.2% 0.66x
DictionarySubscriptDefaultMutationArrayOfObjects 3821 5727 +49.9% 0.67x
StringRemoveDupes 1196 1778 +48.7% 0.67x
Dictionary2OfObjects 2960 4339 +46.6% 0.68x
CharacterPropertiesPrecomputed 1075 1529 +42.2% 0.70x
WordCountHistogramASCII 8232 11437 +38.9% 0.72x
DictOfArraysToArrayOfDicts 778 1062 +36.5% 0.73x
CharacterPropertiesStashedMemo 1620 2208 +36.3% 0.73x
WordCountUniqueUTF16 21877 28938 +32.3% 0.76x
ObjectiveCBridgeFromNSSetAnyObject 57804 75659 +30.9% 0.76x
ObjectiveCBridgeFromNSSetAnyObjectToString 67250 87192 +29.7% 0.77x
FrequenciesUsingReduce 6642 8455 +27.3% 0.79x
WordSplitUTF16 21778 26703 +22.6% 0.82x
StringEdits 118194 143272 +21.2% 0.82x
ObjectiveCBridgeFromNSDictionaryAnyObject 122541 147948 +20.7% 0.83x
WordSplitASCII 20973 25169 +20.0% 0.83x
WordCountHistogramUTF16 52060 59420 +14.1% 0.88x
DictionaryBridge 2012 2208 +9.7% 0.91x (?)
ObjectiveCBridgeStubFromNSDate 4136 4536 +9.7% 0.91x (?)
ObjectiveCBridgeToNSDictionary 52471 56702 +8.1% 0.93x (?)
ObjectiveCBridgeStubToNSStringRef 115 124 +7.8% 0.93x
ObjectiveCBridgeStubFromNSStringRef 155 167 +7.7% 0.93x
StringWordBuilderReservingCapacity 1285 1375 +7.0% 0.93x
StringWordBuilder 1723 1843 +7.0% 0.93x
SortSortedStrings 1147 1208 +5.3% 0.95x
Improvement (6)
TEST OLD NEW DELTA SPEEDUP
Sim2DArray 652 412 -36.8% 1.58x
StaticArray 6 5 -16.7% 1.20x
RangeIterationSigned 200 171 -14.5% 1.17x
LazilyFilteredRange 4199 3929 -6.4% 1.07x
Walsh 443 417 -5.9% 1.06x
ObjectiveCBridgeStubToNSDate 15753 14957 -5.1% 1.05x (?)
No Changes (298)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 3704 3727 +0.6% 0.99x (?)
AnyHashableWithAClass 69356 69586 +0.3% 1.00x (?)
Array2D 2526 2524 -0.1% 1.00x (?)
ArrayAppend 1019 1012 -0.7% 1.01x (?)
ArrayAppendArrayOfInt 782 788 +0.8% 0.99x (?)
ArrayAppendAscii 13661 13727 +0.5% 1.00x (?)
ArrayAppendFromGeneric 798 779 -2.4% 1.02x (?)
ArrayAppendGenericStructs 1417 1423 +0.4% 1.00x (?)
ArrayAppendLatin1 38559 38574 +0.0% 1.00x (?)
ArrayAppendLazyMap 1335 1338 +0.2% 1.00x (?)
ArrayAppendOptionals 1429 1405 -1.7% 1.02x (?)
ArrayAppendRepeatCol 1333 1331 -0.2% 1.00x (?)
ArrayAppendReserved 757 751 -0.8% 1.01x (?)
ArrayAppendSequence 1127 1127 +0.0% 1.00x
ArrayAppendStrings 15163 15172 +0.1% 1.00x (?)
ArrayAppendToFromGeneric 788 785 -0.4% 1.00x (?)
ArrayAppendToGeneric 782 789 +0.9% 0.99x (?)
ArrayAppendUTF16 37231 37832 +1.6% 0.98x (?)
ArrayInClass 86 86 +0.0% 1.00x
ArrayLiteral 0 0 +0.0% 1.00x
ArrayOfGenericPOD2 151 150 -0.7% 1.01x (?)
ArrayOfGenericRef 4368 4371 +0.1% 1.00x (?)
ArrayOfPOD 182 181 -0.5% 1.01x (?)
ArrayOfRef 4344 4338 -0.1% 1.00x (?)
ArrayPlusEqualArrayOfInt 788 787 -0.1% 1.00x (?)
ArrayPlusEqualFiveElementCollection 5478 5483 +0.1% 1.00x (?)
ArrayPlusEqualSingleElementCollection 1012 1020 +0.8% 0.99x (?)
ArrayPlusEqualThreeElements 1652 1655 +0.2% 1.00x (?)
ArraySubscript 1515 1523 +0.5% 0.99x (?)
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
BinaryFloatingPointConversionFromBinaryInteger 45 46 +2.2% 0.98x
BitCount 202 202 +0.0% 1.00x
ByteSwap 100 102 +2.0% 0.98x
COWTree 3616 3617 +0.0% 1.00x (?)
CSVParsing 762584 761391 -0.2% 1.00x (?)
CSVParsingAlt 730263 721607 -1.2% 1.01x (?)
CSVParsingAltIndices 360836 358818 -0.6% 1.01x (?)
CStringLongAscii 4780 4777 -0.1% 1.00x (?)
CStringLongNonAscii 2074 2083 +0.4% 1.00x (?)
CStringShortAscii 4807 4766 -0.9% 1.01x (?)
Calculator 444 433 -2.5% 1.03x (?)
CaptureProp 9171 9172 +0.0% 1.00x (?)
CharIndexing_ascii_unicodeScalars 15828 15833 +0.0% 1.00x (?)
CharIndexing_ascii_unicodeScalars_Backwards 14431 14432 +0.0% 1.00x (?)
CharIndexing_chinese_unicodeScalars 11990 12001 +0.1% 1.00x (?)
CharIndexing_chinese_unicodeScalars_Backwards 10938 10937 -0.0% 1.00x (?)
CharIndexing_japanese_unicodeScalars 18959 18954 -0.0% 1.00x (?)
CharIndexing_japanese_unicodeScalars_Backwards 17270 17265 -0.0% 1.00x (?)
CharIndexing_korean_unicodeScalars 15349 15360 +0.1% 1.00x (?)
CharIndexing_korean_unicodeScalars_Backwards 13996 13991 -0.0% 1.00x (?)
CharIndexing_punctuatedJapanese_unicodeScalars 2870 2877 +0.2% 1.00x
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 2646 2646 +0.0% 1.00x
CharIndexing_punctuated_unicodeScalars 3592 3600 +0.2% 1.00x (?)
CharIndexing_punctuated_unicodeScalars_Backwards 3301 3299 -0.1% 1.00x (?)
CharIndexing_russian_unicodeScalars 13187 13195 +0.1% 1.00x (?)
CharIndexing_russian_unicodeScalars_Backwards 12029 12023 -0.0% 1.00x (?)
CharIndexing_tweet_unicodeScalars 31578 31585 +0.0% 1.00x (?)
CharIndexing_tweet_unicodeScalars_Backwards 28553 28546 -0.0% 1.00x (?)
CharIndexing_utf16_unicodeScalars 20868 20870 +0.0% 1.00x (?)
CharIndexing_utf16_unicodeScalars_Backwards 21390 21381 -0.0% 1.00x (?)
CharIteration_ascii_unicodeScalars 20713 20660 -0.3% 1.00x (?)
CharIteration_ascii_unicodeScalars_Backwards 14277 14272 -0.0% 1.00x (?)
CharIteration_chinese_unicodeScalars 15671 15630 -0.3% 1.00x (?)
CharIteration_chinese_unicodeScalars_Backwards 10822 10825 +0.0% 1.00x (?)
CharIteration_japanese_unicodeScalars 24776 24770 -0.0% 1.00x (?)
CharIteration_japanese_unicodeScalars_Backwards 17085 17080 -0.0% 1.00x (?)
CharIteration_korean_unicodeScalars 20047 20034 -0.1% 1.00x (?)
CharIteration_korean_unicodeScalars_Backwards 13841 13844 +0.0% 1.00x (?)
CharIteration_punctuatedJapanese_unicodeScalars 3706 3670 -1.0% 1.01x (?)
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 2619 2620 +0.0% 1.00x (?)
CharIteration_punctuated_unicodeScalars 4630 4612 -0.4% 1.00x (?)
CharIteration_punctuated_unicodeScalars_Backwards 3269 3269 +0.0% 1.00x
CharIteration_russian_unicodeScalars 17223 17288 +0.4% 1.00x (?)
CharIteration_russian_unicodeScalars_Backwards 11900 11900 +0.0% 1.00x
CharIteration_tweet_unicodeScalars 40743 40709 -0.1% 1.00x (?)
CharIteration_tweet_unicodeScalars_Backwards 28162 28160 -0.0% 1.00x (?)
CharIteration_utf16_unicodeScalars 27314 27284 -0.1% 1.00x (?)
CharIteration_utf16_unicodeScalars_Backwards 17891 17955 +0.4% 1.00x
CharacterLiteralsLarge 6371 6140 -3.6% 1.04x (?)
CharacterLiteralsSmall 410 410 +0.0% 1.00x
CharacterPropertiesFetch 4647 4667 +0.4% 1.00x (?)
CharacterPropertiesStashed 1646 1672 +1.6% 0.98x (?)
Chars 970 971 +0.1% 1.00x (?)
ClassArrayGetter 15 15 +0.0% 1.00x
Combos 452 450 -0.4% 1.00x (?)
DoubleWidthDivision 0 0 +0.0% 1.00x
DropFirstAnyCollection 76 76 +0.0% 1.00x
DropFirstAnyCollectionLazy 64804 65590 +1.2% 0.99x (?)
DropFirstAnySeqCRangeIter 18281 18211 -0.4% 1.00x (?)
DropFirstAnySeqCRangeIterLazy 18297 18194 -0.6% 1.01x
DropFirstAnySeqCntRange 71 71 +0.0% 1.00x
DropFirstAnySeqCntRangeLazy 71 71 +0.0% 1.00x
DropFirstAnySequence 4567 4357 -4.6% 1.05x
DropFirstAnySequenceLazy 4562 4348 -4.7% 1.05x
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 2700 2700 +0.0% 1.00x
DropFirstSequenceLazy 2795 2790 -0.2% 1.00x (?)
DropLastAnyCollection 28 28 +0.0% 1.00x
DropLastAnyCollectionLazy 21502 22031 +2.5% 0.98x (?)
DropLastAnySeqCRangeIter 3510 3518 +0.2% 1.00x (?)
DropLastAnySeqCRangeIterLazy 3500 3517 +0.5% 1.00x (?)
DropLastAnySeqCntRange 23 23 +0.0% 1.00x
DropLastAnySeqCntRangeLazy 23 23 +0.0% 1.00x
DropLastAnySequence 5190 5121 -1.3% 1.01x (?)
DropLastAnySequenceLazy 5280 5229 -1.0% 1.01x (?)
DropLastCountableRange 11 11 +0.0% 1.00x
DropLastCountableRangeLazy 12 12 +0.0% 1.00x
DropLastSequence 695 682 -1.9% 1.02x (?)
DropLastSequenceLazy 696 682 -2.0% 1.02x (?)
DropWhileAnyCollection 100 100 +0.0% 1.00x
DropWhileAnyCollectionLazy 147 147 +0.0% 1.00x
DropWhileAnySeqCRangeIter 15187 14822 -2.4% 1.02x (?)
DropWhileAnySeqCRangeIterLazy 148 148 +0.0% 1.00x
DropWhileAnySeqCntRange 95 95 +0.0% 1.00x
DropWhileAnySeqCntRangeLazy 147 147 +0.0% 1.00x
DropWhileAnySequence 4873 4710 -3.3% 1.03x (?)
DropWhileAnySequenceLazy 1857 1856 -0.1% 1.00x (?)
DropWhileArrayLazy 129 129 +0.0% 1.00x
DropWhileCountableRange 36 36 +0.0% 1.00x
DropWhileCountableRangeLazy 111 111 +0.0% 1.00x
DropWhileSequence 1341 1341 +0.0% 1.00x
DropWhileSequenceLazy 88 88 +0.0% 1.00x
EqualStringSubstring 431 432 +0.2% 1.00x (?)
EqualSubstringString 432 433 +0.2% 1.00x (?)
EqualSubstringSubstring 431 433 +0.5% 1.00x
EqualSubstringSubstringGenericEquatable 431 432 +0.2% 1.00x (?)
ErrorHandling 2314 2341 +1.2% 0.99x (?)
ExclusivityGlobal 5 5 +0.0% 1.00x
ExclusivityIndependent 2 2 +0.0% 1.00x
FilterEvenUsingReduce 1326 1317 -0.7% 1.01x (?)
FilterEvenUsingReduceInto 149 147 -1.3% 1.01x (?)
Hanoi 3484 3629 +4.2% 0.96x
HashTest 1778 1762 -0.9% 1.01x (?)
Integrate 218 217 -0.5% 1.00x
IterateData 1423 1383 -2.8% 1.03x
Join 368 373 +1.4% 0.99x (?)
LazilyFilteredArrayContains 38684 37494 -3.1% 1.03x
LazilyFilteredArrays 65643 65636 -0.0% 1.00x (?)
LessSubstringSubstring 431 432 +0.2% 1.00x (?)
LessSubstringSubstringGenericComparable 431 432 +0.2% 1.00x (?)
LinkedList 7528 7548 +0.3% 1.00x (?)
LuhnAlgoEager 582 582 +0.0% 1.00x
LuhnAlgoLazy 582 581 -0.2% 1.00x (?)
MapReduce 399 399 +0.0% 1.00x
MapReduceAnyCollection 372 371 -0.3% 1.00x (?)
MapReduceAnyCollectionShort 2129 2106 -1.1% 1.01x (?)
MapReduceClass 3037 3064 +0.9% 0.99x
MapReduceClassShort 4583 4610 +0.6% 0.99x (?)
MapReduceLazyCollection 13 13 +0.0% 1.00x
MapReduceLazyCollectionShort 34 34 +0.0% 1.00x
MapReduceLazySequence 86 86 +0.0% 1.00x
MapReduceSequence 444 449 +1.1% 0.99x (?)
MapReduceShort 2071 2056 -0.7% 1.01x (?)
MapReduceShortString 21 21 +0.0% 1.00x
MapReduceString 81 81 +0.0% 1.00x
Memset 216 215 -0.5% 1.00x (?)
MonteCarloE 10396 10334 -0.6% 1.01x (?)
MonteCarloPi 43057 42734 -0.8% 1.01x (?)
NSDictionaryCastToSwift 5346 5323 -0.4% 1.00x (?)
NSError 302 310 +2.6% 0.97x (?)
NSStringConversion 326 322 -1.2% 1.01x (?)
NibbleSort 4122 4170 +1.2% 0.99x
NopDeinit 23132 23713 +2.5% 0.98x
ObjectAllocation 187 188 +0.5% 0.99x (?)
ObjectiveCBridgeFromNSArrayAnyObject 19540 19741 +1.0% 0.99x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 3879 3915 +0.9% 0.99x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 37248 38320 +2.9% 0.97x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 32190 33151 +3.0% 0.97x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 4154 4238 +2.0% 0.98x (?)
ObjectiveCBridgeFromNSString 1312 1341 +2.2% 0.98x (?)
ObjectiveCBridgeFromNSStringForced 2341 2356 +0.6% 0.99x (?)
ObjectiveCBridgeStubDataAppend 3876 3904 +0.7% 0.99x (?)
ObjectiveCBridgeStubDateMutation 258 258 +0.0% 1.00x
ObjectiveCBridgeStubFromArrayOfNSString 24960 26182 +4.9% 0.95x (?)
ObjectiveCBridgeStubFromNSString 857 864 +0.8% 0.99x (?)
ObjectiveCBridgeStubNSDataAppend 2513 2466 -1.9% 1.02x (?)
ObjectiveCBridgeStubNSDateMutationRef 13531 13517 -0.1% 1.00x (?)
ObjectiveCBridgeStubToArrayOfNSString 28154 28761 +2.2% 0.98x (?)
ObjectiveCBridgeStubToNSDateRef 3402 3422 +0.6% 0.99x (?)
ObjectiveCBridgeStubToNSString 1542 1557 +1.0% 0.99x (?)
ObjectiveCBridgeStubURLAppendPath 314450 326281 +3.8% 0.96x (?)
ObjectiveCBridgeStubURLAppendPathRef 327453 328996 +0.5% 1.00x (?)
ObjectiveCBridgeToNSArray 28339 28899 +2.0% 0.98x (?)
ObjectiveCBridgeToNSSet 44940 45814 +1.9% 0.98x (?)
ObjectiveCBridgeToNSString 1314 1328 +1.1% 0.99x (?)
ObserverClosure 2157 2169 +0.6% 0.99x (?)
ObserverForwarderStruct 993 990 -0.3% 1.00x (?)
ObserverPartiallyAppliedMethod 3729 3732 +0.1% 1.00x (?)
ObserverUnappliedMethod 2370 2368 -0.1% 1.00x (?)
OpenClose 255 260 +2.0% 0.98x
PartialApplyDynamicType 0 0 +0.0% 1.00x
Phonebook 4101 4116 +0.4% 1.00x (?)
PointerArithmetics 31527 31529 +0.0% 1.00x (?)
PolymorphicCalls 25 25 +0.0% 1.00x
PopFrontArray 1870 1898 +1.5% 0.99x (?)
PopFrontArrayGeneric 1881 1895 +0.7% 0.99x (?)
PopFrontUnsafePointer 8793 8997 +2.3% 0.98x (?)
PrefixAnyCollection 76 76 +0.0% 1.00x
PrefixAnyCollectionLazy 64707 65776 +1.7% 0.98x (?)
PrefixAnySeqCRangeIter 14214 14112 -0.7% 1.01x (?)
PrefixAnySeqCRangeIterLazy 14224 14118 -0.7% 1.01x
PrefixAnySeqCntRange 71 71 +0.0% 1.00x
PrefixAnySeqCntRangeLazy 71 71 +0.0% 1.00x
PrefixAnySequence 3906 3832 -1.9% 1.02x (?)
PrefixAnySequenceLazy 3884 3819 -1.7% 1.02x (?)
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 1326 1327 +0.1% 1.00x (?)
PrefixSequenceLazy 1414 1414 +0.0% 1.00x
PrefixWhileAnyCollection 146 147 +0.7% 0.99x
PrefixWhileAnyCollectionLazy 106 106 +0.0% 1.00x
PrefixWhileAnySeqCRangeIter 9312 9264 -0.5% 1.01x (?)
PrefixWhileAnySeqCRangeIterLazy 106 106 +0.0% 1.00x
PrefixWhileAnySeqCntRange 142 142 +0.0% 1.00x
PrefixWhileAnySeqCntRangeLazy 106 106 +0.0% 1.00x
PrefixWhileAnySequence 10484 10454 -0.3% 1.00x (?)
PrefixWhileAnySequenceLazy 1393 1392 -0.1% 1.00x (?)
PrefixWhileArray 88 88 +0.0% 1.00x
PrefixWhileArrayLazy 70 70 +0.0% 1.00x
PrefixWhileCountableRange 53 53 +0.0% 1.00x
PrefixWhileCountableRangeLazy 35 35 +0.0% 1.00x
PrefixWhileSequence 357 357 +0.0% 1.00x
PrefixWhileSequenceLazy 52 52 +0.0% 1.00x
QueueConcrete 1310 1312 +0.2% 1.00x (?)
QueueGeneric 1157 1159 +0.2% 1.00x (?)
RC4 165 165 +0.0% 1.00x
RangeAssignment 351 351 +0.0% 1.00x
RangeIterationSigned64 200 200 +0.0% 1.00x
RangeIterationUnsigned 200 200 +0.0% 1.00x
RangeReplaceableCollectionPlusDefault 986 975 -1.1% 1.01x (?)
RecursiveOwnedParameter 2348 2382 +1.4% 0.99x
ReversedArray 57 57 +0.0% 1.00x
ReversedBidirectional 15340 15353 +0.1% 1.00x (?)
RomanNumbers 118308 115282 -2.6% 1.03x (?)
SevenBoom 1531 1543 +0.8% 0.99x (?)
SortLargeExistentials 7102 7014 -1.2% 1.01x (?)
SortLettersInPlace 1156 1157 +0.1% 1.00x (?)
SortStrings 2010 2101 +4.5% 0.96x
SortStringsUnicode 15404 15425 +0.1% 1.00x (?)
StackPromo 22001 22224 +1.0% 0.99x (?)
StrComplexWalk 1564 1568 +0.3% 1.00x
StrToInt 2106 2171 +3.1% 0.97x
StringAdder 4283 4304 +0.5% 1.00x (?)
StringBuilder 1442 1465 +1.6% 0.98x (?)
StringBuilderLong 1098 1083 -1.4% 1.01x (?)
StringComparison_abnormal 856 860 +0.5% 1.00x (?)
StringComparison_ascii 977 978 +0.1% 1.00x (?)
StringComparison_emoji 2537 2548 +0.4% 1.00x (?)
StringComparison_fastPrenormal 8655 8696 +0.5% 1.00x (?)
StringComparison_latin1 5956 5987 +0.5% 0.99x (?)
StringComparison_longSharedPrefix 11508 11507 -0.0% 1.00x (?)
StringComparison_nonBMPSlowestPrenormal 4643 4673 +0.6% 0.99x (?)
StringComparison_slowerPrenormal 4139 4165 +0.6% 0.99x (?)
StringComparison_zalgo 1716 1717 +0.1% 1.00x (?)
StringEnumRawValueInitialization 1002 1001 -0.1% 1.00x (?)
StringEqualPointerComparison 286 286 +0.0% 1.00x
StringFromLongWholeSubstring 21 21 +0.0% 1.00x
StringFromLongWholeSubstringGeneric 10 10 +0.0% 1.00x
StringHasPrefixAscii 1604 1633 +1.8% 0.98x
StringHasPrefixUnicode 27966 28066 +0.4% 1.00x (?)
StringHasSuffixAscii 1719 1747 +1.6% 0.98x
StringHasSuffixUnicode 85144 85297 +0.2% 1.00x (?)
StringInterpolation 9257 9269 +0.1% 1.00x (?)
StringMatch 7366 7450 +1.1% 0.99x (?)
StringUTF16Builder 2434 2424 -0.4% 1.00x (?)
StringWalk 1462 1472 +0.7% 0.99x (?)
StringWithCString 43225 42599 -1.4% 1.01x
SubstringComparable 2046 2063 +0.8% 0.99x (?)
SubstringEqualString 2117 2135 +0.9% 0.99x (?)
SubstringEquatable 3130 3158 +0.9% 0.99x (?)
SubstringFromLongString 10 10 +0.0% 1.00x
SubstringFromLongStringGeneric 69 69 +0.0% 1.00x
SuffixAnyCollection 28 28 +0.0% 1.00x
SuffixAnyCollectionLazy 21614 22025 +1.9% 0.98x (?)
SuffixAnySeqCRangeIter 3803 3805 +0.1% 1.00x (?)
SuffixAnySeqCRangeIterLazy 3805 3808 +0.1% 1.00x (?)
SuffixAnySeqCntRange 23 23 +0.0% 1.00x
SuffixAnySeqCntRangeLazy 23 23 +0.0% 1.00x
SuffixAnySequence 5094 5086 -0.2% 1.00x (?)
SuffixAnySequenceLazy 5204 5176 -0.5% 1.01x (?)
SuffixCountableRange 11 11 +0.0% 1.00x
SuffixCountableRangeLazy 11 11 +0.0% 1.00x
SuffixSequence 3837 3719 -3.1% 1.03x (?)
SuffixSequenceLazy 3757 3722 -0.9% 1.01x (?)
SumUsingReduce 97 102 +5.2% 0.95x
SumUsingReduceInto 97 102 +5.2% 0.95x
SuperChars 40984 41261 +0.7% 0.99x (?)
TypeFlood 0 0 +0.0% 1.00x
UTF8Decode 318 319 +0.3% 1.00x (?)
XorLoop 387 388 +0.3% 1.00x (?)

Unoptimized (Onone)

Regression (87)
TEST OLD NEW DELTA SPEEDUP
DictionarySwap 5245 10438 +99.0% 0.50x
SetUnion 11872 22107 +86.2% 0.54x
TwoSum 3920 7282 +85.8% 0.54x
SetExclusiveOr 17273 30928 +79.1% 0.56x
DictionaryRemove 18139 31962 +76.2% 0.57x
DictionarySubscriptDefaultMutation 2102 3264 +55.3% 0.64x
DictionarySubscriptDefaultMutationArray 2366 3650 +54.3% 0.65x
CharacterPropertiesPrecomputed 4213 6209 +47.4% 0.68x
SetExclusiveOr_OfObjects 41541 60355 +45.3% 0.69x
StringRemoveDupes 1412 2050 +45.2% 0.69x
SetUnion_OfObjects 29202 42354 +45.0% 0.69x
SetIntersect 8171 11797 +44.4% 0.69x
FrequenciesUsingReduceInto 5773 8288 +43.6% 0.70x
Histogram 6498 9224 +42.0% 0.70x
CharacterPropertiesStashedMemo 5044 7139 +41.5% 0.71x
Dictionary4 1189 1669 +40.4% 0.71x
DictionaryLiteral 8546 11785 +37.9% 0.73x
DictionaryRemoveOfObjects 49227 67695 +37.5% 0.73x
SetIntersect_OfObjects 12151 16439 +35.3% 0.74x
Dictionary2 3012 4048 +34.4% 0.74x
RGBHistogram 26795 35654 +33.1% 0.75x
SetIsSubsetOf_OfObjects 1554 2059 +32.5% 0.75x
SetIsSubsetOf 1345 1782 +32.5% 0.75x
Dictionary2OfObjects 5513 7188 +30.4% 0.77x
Dictionary 2572 3350 +30.2% 0.77x
Dictionary3 1275 1647 +29.2% 0.77x
Dictionary4OfObjects 1829 2361 +29.1% 0.77x
WordCountUniqueASCII 8000 10321 +29.0% 0.78x
ObjectiveCBridgeFromNSSetAnyObjectToString 74390 95238 +28.0% 0.78x
ObjectiveCBridgeFromNSDictionaryAnyObject 122554 156099 +27.4% 0.79x
ObjectiveCBridgeFromNSSetAnyObject 64656 81038 +25.3% 0.80x
Dictionary3OfObjects 2273 2836 +24.8% 0.80x
DictionarySubscriptDefaultMutationOfObjects 5664 7052 +24.5% 0.80x
CharIndexing_korean_unicodeScalars 340686 420959 +23.6% 0.81x
WordCountUniqueUTF16 33647 41255 +22.6% 0.82x
FrequenciesUsingReduce 10703 13039 +21.8% 0.82x
DictionaryGroup 4260 5127 +20.4% 0.83x
DictionaryGroupOfObjects 7455 8972 +20.3% 0.83x
RGBHistogramOfObjects 97262 116601 +19.9% 0.83x
ReversedDictionary 23028 27445 +19.2% 0.84x
DictionaryOfObjects 6068 7220 +19.0% 0.84x
WordSplitUTF16 26738 31419 +17.5% 0.85x
DictionarySubscriptDefaultMutationArrayOfObjects 9062 10586 +16.8% 0.86x
WordSplitASCII 25803 30140 +16.8% 0.86x
StringEdits 320010 373727 +16.8% 0.86x
DictionarySwapOfObjects 22657 26400 +16.5% 0.86x
CharIndexing_japanese_unicodeScalars_Backwards 455979 525942 +15.3% 0.87x
MapReduceString 1939 2229 +15.0% 0.87x (?)
CharIndexing_punctuated_unicodeScalars 78341 89715 +14.5% 0.87x
CharIndexing_chinese_unicodeScalars 267571 306223 +14.4% 0.87x
CharIndexing_punctuatedJapanese_unicodeScalars 62425 71276 +14.2% 0.88x
DropFirstArray 3725 4242 +13.9% 0.88x
StringMatch 32920 37332 +13.4% 0.88x
CharIndexing_punctuated_unicodeScalars_Backwards 82984 94007 +13.3% 0.88x
CharIndexing_ascii_unicodeScalars 352930 399546 +13.2% 0.88x
CharIndexing_russian_unicodeScalars 295015 333499 +13.0% 0.88x
PrefixArray 3730 4209 +12.8% 0.89x
CharIndexing_russian_unicodeScalars_Backwards 316441 355122 +12.2% 0.89x (?)
StrToInt 57344 64137 +11.8% 0.89x
StringEqualPointerComparison 3079 3442 +11.8% 0.89x
PrimsSplit 9622 10740 +11.6% 0.90x
CharIndexing_tweet_unicodeScalars 711681 792923 +11.4% 0.90x
CharIndexing_tweet_unicodeScalars_Backwards 755031 838655 +11.1% 0.90x (?)
CharIndexing_korean_unicodeScalars_Backwards 369911 410507 +11.0% 0.90x
RangeReplaceableCollectionPlusDefault 8063 8914 +10.6% 0.90x (?)
Calculator 1596 1755 +10.0% 0.91x
CharIndexing_japanese_unicodeScalars 436973 478961 +9.6% 0.91x (?)
Combos 2095 2285 +9.1% 0.92x (?)
CharIndexing_chinese_unicodeScalars_Backwards 293974 320604 +9.1% 0.92x (?)
Prims 9746 10626 +9.0% 0.92x
CharIndexing_utf16_unicodeScalars 301351 327853 +8.8% 0.92x (?)
CharIndexing_ascii_unicodeScalars_Backwards 389937 423645 +8.6% 0.92x (?)
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 51125 55500 +8.6% 0.92x (?)
CharIndexing_utf16_unicodeScalars_Backwards 324438 350314 +8.0% 0.93x
ObjectiveCBridgeFromNSArrayAnyObjectForced 7982 8616 +7.9% 0.93x (?)
MapReduceShortString 241 260 +7.9% 0.93x (?)
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 68386 73737 +7.8% 0.93x
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 35261 37813 +7.2% 0.93x (?)
DictionaryBridge 2118 2270 +7.2% 0.93x
WordCountHistogramUTF16 103359 110702 +7.1% 0.93x
WordCountHistogramASCII 47931 51324 +7.1% 0.93x
StringWalk 12388 13219 +6.7% 0.94x
DictOfArraysToArrayOfDicts 3399 3615 +6.4% 0.94x
COWTree 11207 11846 +5.7% 0.95x (?)
PopFrontArrayGeneric 5632 5946 +5.6% 0.95x
CStringShortAscii 7622 8040 +5.5% 0.95x
PolymorphicCalls 6205 6545 +5.5% 0.95x (?)
Improvement (7)
TEST OLD NEW DELTA SPEEDUP
SuffixAnyCollectionLazy 36488 32002 -12.3% 1.14x (?)
ArrayOfPOD 843 758 -10.1% 1.11x
ArrayOfGenericPOD2 1187 1073 -9.6% 1.11x
DropLastAnyCollectionLazy 36301 33391 -8.0% 1.09x
PrefixAnyCollectionLazy 107056 99266 -7.3% 1.08x (?)
NSError 752 710 -5.6% 1.06x (?)
PopFrontUnsafePointer 11170 10624 -4.9% 1.05x (?)
No Changes (268)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 5116 5077 -0.8% 1.01x (?)
AnyHashableWithAClass 85838 85577 -0.3% 1.00x (?)
Array2D 633618 631846 -0.3% 1.00x (?)
ArrayAppend 4668 4662 -0.1% 1.00x (?)
ArrayAppendArrayOfInt 871 855 -1.8% 1.02x (?)
ArrayAppendAscii 39831 40128 +0.7% 0.99x
ArrayAppendFromGeneric 874 873 -0.1% 1.00x (?)
ArrayAppendGenericStructs 1488 1499 +0.7% 0.99x (?)
ArrayAppendLatin1 63817 63521 -0.5% 1.00x (?)
ArrayAppendLazyMap 167683 168731 +0.6% 0.99x
ArrayAppendOptionals 1486 1490 +0.3% 1.00x (?)
ArrayAppendRepeatCol 173252 172955 -0.2% 1.00x (?)
ArrayAppendReserved 4285 4295 +0.2% 1.00x
ArrayAppendSequence 140327 143856 +2.5% 0.98x
ArrayAppendStrings 15390 15426 +0.2% 1.00x (?)
ArrayAppendToFromGeneric 854 866 +1.4% 0.99x (?)
ArrayAppendToGeneric 857 865 +0.9% 0.99x (?)
ArrayAppendUTF16 64094 63844 -0.4% 1.00x
ArrayInClass 6195 6203 +0.1% 1.00x (?)
ArrayLiteral 1777 1780 +0.2% 1.00x (?)
ArrayOfGenericRef 10063 10040 -0.2% 1.00x (?)
ArrayOfRef 9271 9257 -0.2% 1.00x (?)
ArrayPlusEqualArrayOfInt 868 844 -2.8% 1.03x (?)
ArrayPlusEqualFiveElementCollection 233449 233918 +0.2% 1.00x (?)
ArrayPlusEqualSingleElementCollection 229665 229622 -0.0% 1.00x (?)
ArrayPlusEqualThreeElements 9251 9183 -0.7% 1.01x (?)
ArraySubscript 81855 82724 +1.1% 0.99x
ArrayValueProp 3632 3622 -0.3% 1.00x (?)
ArrayValueProp2 16100 16015 -0.5% 1.01x (?)
ArrayValueProp3 4137 4140 +0.1% 1.00x (?)
ArrayValueProp4 4073 4092 +0.5% 1.00x (?)
BinaryFloatingPointConversionFromBinaryInteger 5966 6046 +1.3% 0.99x (?)
BitCount 2260 2264 +0.2% 1.00x (?)
ByteSwap 3945 3957 +0.3% 1.00x
CSVParsing 2548864 2672449 +4.8% 0.95x
CSVParsingAlt 1317713 1315290 -0.2% 1.00x (?)
CSVParsingAltIndices 2549835 2525288 -1.0% 1.01x (?)
CStringLongAscii 4770 4601 -3.5% 1.04x
CStringLongNonAscii 2074 2100 +1.3% 0.99x
CaptureProp 257636 252288 -2.1% 1.02x
CharIteration_ascii_unicodeScalars 156296 155026 -0.8% 1.01x (?)
CharIteration_ascii_unicodeScalars_Backwards 291276 291867 +0.2% 1.00x (?)
CharIteration_chinese_unicodeScalars 118396 117349 -0.9% 1.01x (?)
CharIteration_chinese_unicodeScalars_Backwards 221734 231595 +4.4% 0.96x (?)
CharIteration_japanese_unicodeScalars 187448 185504 -1.0% 1.01x (?)
CharIteration_japanese_unicodeScalars_Backwards 349299 354601 +1.5% 0.99x (?)
CharIteration_korean_unicodeScalars 151681 150914 -0.5% 1.01x (?)
CharIteration_korean_unicodeScalars_Backwards 284867 283418 -0.5% 1.01x (?)
CharIteration_punctuatedJapanese_unicodeScalars 28106 27864 -0.9% 1.01x (?)
CharIteration_punctuated_unicodeScalars 35300 34967 -0.9% 1.01x (?)
CharIteration_punctuated_unicodeScalars_Backwards 64991 64455 -0.8% 1.01x (?)
CharIteration_russian_unicodeScalars 130400 129542 -0.7% 1.01x (?)
CharIteration_russian_unicodeScalars_Backwards 242762 243148 +0.2% 1.00x (?)
CharIteration_tweet_unicodeScalars 339446 335680 -1.1% 1.01x (?)
CharIteration_tweet_unicodeScalars_Backwards 585189 594855 +1.7% 0.98x (?)
CharIteration_utf16_unicodeScalars 130262 132074 +1.4% 0.99x (?)
CharIteration_utf16_unicodeScalars_Backwards 247053 251740 +1.9% 0.98x
CharacterLiteralsLarge 5992 6011 +0.3% 1.00x (?)
CharacterLiteralsSmall 747 765 +2.4% 0.98x
CharacterPropertiesFetch 5455 5551 +1.8% 0.98x (?)
CharacterPropertiesStashed 2260 2271 +0.5% 1.00x (?)
Chars 40754 39934 -2.0% 1.02x (?)
ClassArrayGetter 981 988 +0.7% 0.99x
DoubleWidthDivision 0 0 +0.0% 1.00x
DropFirstAnyCollection 13734 13478 -1.9% 1.02x
DropFirstAnyCollectionLazy 108508 104227 -3.9% 1.04x (?)
DropFirstAnySeqCRangeIter 20796 20144 -3.1% 1.03x
DropFirstAnySeqCRangeIterLazy 20605 20207 -1.9% 1.02x
DropFirstAnySeqCntRange 13810 13413 -2.9% 1.03x
DropFirstAnySeqCntRangeLazy 13790 13606 -1.3% 1.01x
DropFirstAnySequence 11035 10752 -2.6% 1.03x
DropFirstAnySequenceLazy 11021 10708 -2.8% 1.03x
DropFirstArrayLazy 25131 25247 +0.5% 1.00x (?)
DropFirstCountableRange 325 324 -0.3% 1.00x
DropFirstCountableRangeLazy 25867 26764 +3.5% 0.97x (?)
DropFirstSequence 10584 10382 -1.9% 1.02x
DropFirstSequenceLazy 10724 10399 -3.0% 1.03x
DropLastAnyCollection 4591 4497 -2.0% 1.02x (?)
DropLastAnySeqCRangeIter 37924 37392 -1.4% 1.01x
DropLastAnySeqCRangeIterLazy 37915 37423 -1.3% 1.01x (?)
DropLastAnySeqCntRange 4587 4504 -1.8% 1.02x
DropLastAnySeqCntRangeLazy 4611 4569 -0.9% 1.01x (?)
DropLastAnySequence 29103 28740 -1.2% 1.01x
DropLastAnySequenceLazy 29040 28788 -0.9% 1.01x
DropLastCountableRange 111 111 +0.0% 1.00x
DropLastCountableRangeLazy 8764 8895 +1.5% 0.99x (?)
DropLastSequence 28988 28622 -1.3% 1.01x (?)
DropLastSequenceLazy 28965 28596 -1.3% 1.01x
DropWhileAnyCollection 17700 17383 -1.8% 1.02x
DropWhileAnyCollectionLazy 19183 18715 -2.4% 1.03x
DropWhileAnySeqCRangeIter 22085 21686 -1.8% 1.02x
DropWhileAnySeqCRangeIterLazy 19275 18828 -2.3% 1.02x
DropWhileAnySeqCntRange 17638 17339 -1.7% 1.02x
DropWhileAnySeqCntRangeLazy 19166 18777 -2.0% 1.02x
DropWhileAnySequence 12473 12233 -1.9% 1.02x
DropWhileAnySequenceLazy 10282 10033 -2.4% 1.02x
DropWhileArrayLazy 13638 13761 +0.9% 0.99x
DropWhileCountableRange 4238 4173 -1.5% 1.02x
DropWhileCountableRangeLazy 18752 18313 -2.3% 1.02x
DropWhileSequence 12143 11868 -2.3% 1.02x (?)
DropWhileSequenceLazy 9897 9701 -2.0% 1.02x
EqualStringSubstring 476 477 +0.2% 1.00x
EqualSubstringString 476 478 +0.4% 1.00x (?)
EqualSubstringSubstring 480 479 -0.2% 1.00x
EqualSubstringSubstringGenericEquatable 485 485 +0.0% 1.00x
ErrorHandling 7046 7350 +4.3% 0.96x (?)
ExclusivityGlobal 180 186 +3.3% 0.97x
ExclusivityIndependent 69 69 +0.0% 1.00x
FilterEvenUsingReduce 3726 3718 -0.2% 1.00x (?)
FilterEvenUsingReduceInto 1973 2017 +2.2% 0.98x
Hanoi 19551 20258 +3.6% 0.97x (?)
HashTest 16644 17333 +4.1% 0.96x (?)
Integrate 826 822 -0.5% 1.00x
IterateData 7888 7857 -0.4% 1.00x (?)
Join 1102 1103 +0.1% 1.00x (?)
LazilyFilteredArrayContains 781115 773765 -0.9% 1.01x (?)
LazilyFilteredArrays 1480016 1478720 -0.1% 1.00x (?)
LazilyFilteredRange 477693 463861 -2.9% 1.03x (?)
LessSubstringSubstring 477 478 +0.2% 1.00x
LessSubstringSubstringGenericComparable 483 484 +0.2% 1.00x
LinkedList 32193 32078 -0.4% 1.00x
LuhnAlgoEager 5157 5110 -0.9% 1.01x (?)
LuhnAlgoLazy 5113 5236 +2.4% 0.98x (?)
MapReduce 27197 27413 +0.8% 0.99x (?)
MapReduceAnyCollection 27182 27351 +0.6% 0.99x
MapReduceAnyCollectionShort 38830 38709 -0.3% 1.00x (?)
MapReduceClass 31933 31933 +0.0% 1.00x
MapReduceClassShort 42642 42361 -0.7% 1.01x (?)
MapReduceLazyCollection 23501 23332 -0.7% 1.01x (?)
MapReduceLazyCollectionShort 33094 34066 +2.9% 0.97x (?)
MapReduceLazySequence 18251 18161 -0.5% 1.00x (?)
MapReduceSequence 30619 30585 -0.1% 1.00x (?)
MapReduceShort 38344 38182 -0.4% 1.00x (?)
Memset 44782 44762 -0.0% 1.00x (?)
MonteCarloE 896251 912471 +1.8% 0.98x
MonteCarloPi 3905518 3961189 +1.4% 0.99x (?)
NSDictionaryCastToSwift 6640 6523 -1.8% 1.02x (?)
NSStringConversion 368 368 +0.0% 1.00x
NibbleSort 304586 308036 +1.1% 0.99x
NopDeinit 163695 169323 +3.4% 0.97x (?)
ObjectAllocation 1349 1346 -0.2% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObject 22493 23531 +4.6% 0.96x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 41115 41838 +1.8% 0.98x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 7161 6996 -2.3% 1.02x (?)
ObjectiveCBridgeFromNSString 3140 3086 -1.7% 1.02x (?)
ObjectiveCBridgeFromNSStringForced 2664 2687 +0.9% 0.99x (?)
ObjectiveCBridgeStubDataAppend 4425 4484 +1.3% 0.99x (?)
ObjectiveCBridgeStubDateMutation 603 602 -0.2% 1.00x
ObjectiveCBridgeStubFromArrayOfNSString 25703 26336 +2.5% 0.98x (?)
ObjectiveCBridgeStubFromNSDate 4537 4595 +1.3% 0.99x
ObjectiveCBridgeStubFromNSString 916 911 -0.5% 1.01x (?)
ObjectiveCBridgeStubFromNSStringRef 199 196 -1.5% 1.02x
ObjectiveCBridgeStubNSDataAppend 2956 2962 +0.2% 1.00x (?)
ObjectiveCBridgeStubNSDateMutationRef 15710 15294 -2.6% 1.03x (?)
ObjectiveCBridgeStubToArrayOfNSString 28660 28976 +1.1% 0.99x (?)
ObjectiveCBridgeStubToNSDate 15205 15511 +2.0% 0.98x (?)
ObjectiveCBridgeStubToNSDateRef 3443 3466 +0.7% 0.99x (?)
ObjectiveCBridgeStubToNSString 1572 1590 +1.1% 0.99x (?)
ObjectiveCBridgeStubToNSStringRef 159 156 -1.9% 1.02x
ObjectiveCBridgeStubURLAppendPath 342830 338564 -1.2% 1.01x (?)
ObjectiveCBridgeStubURLAppendPathRef 330427 338043 +2.3% 0.98x (?)
ObjectiveCBridgeToNSArray 29249 29530 +1.0% 0.99x (?)
ObjectiveCBridgeToNSDictionary 55863 57268 +2.5% 0.98x (?)
ObjectiveCBridgeToNSSet 46804 48422 +3.5% 0.97x (?)
ObjectiveCBridgeToNSString 1347 1353 +0.4% 1.00x (?)
ObserverClosure 6226 6210 -0.3% 1.00x (?)
ObserverForwarderStruct 4369 4395 +0.6% 0.99x (?)
ObserverPartiallyAppliedMethod 7793 7787 -0.1% 1.00x (?)
ObserverUnappliedMethod 7932 7890 -0.5% 1.01x
OpenClose 544 559 +2.8% 0.97x
PartialApplyDynamicType 40572 41764 +2.9% 0.97x (?)
Phonebook 20543 21115 +2.8% 0.97x
PointerArithmetics 114660 120389 +5.0% 0.95x
PopFrontArray 4620 4587 -0.7% 1.01x (?)
PrefixAnyCollection 13737 13403 -2.4% 1.02x
PrefixAnySeqCRangeIter 16472 16312 -1.0% 1.01x (?)
PrefixAnySeqCRangeIterLazy 16571 16228 -2.1% 1.02x
PrefixAnySeqCntRange 13725 13511 -1.6% 1.02x
PrefixAnySeqCntRangeLazy 13853 13628 -1.6% 1.02x (?)
PrefixAnySequence 9163 8933 -2.5% 1.03x (?)
PrefixAnySequenceLazy 9176 8958 -2.4% 1.02x
PrefixArrayLazy 25105 25292 +0.7% 0.99x
PrefixCountableRange 325 324 -0.3% 1.00x
PrefixCountableRangeLazy 26185 26794 +2.3% 0.98x (?)
PrefixSequence 8741 8732 -0.1% 1.00x (?)
PrefixSequenceLazy 8884 8734 -1.7% 1.02x (?)
PrefixWhileAnyCollection 25318 24835 -1.9% 1.02x
PrefixWhileAnyCollectionLazy 15881 15670 -1.3% 1.01x
PrefixWhileAnySeqCRangeIter 33273 33079 -0.6% 1.01x (?)
PrefixWhileAnySeqCRangeIterLazy 16045 15653 -2.4% 1.03x
PrefixWhileAnySeqCntRange 25290 24774 -2.0% 1.02x
PrefixWhileAnySeqCntRangeLazy 15776 15651 -0.8% 1.01x
PrefixWhileAnySequence 26475 26540 +0.2% 1.00x (?)
PrefixWhileAnySequenceLazy 9342 9134 -2.2% 1.02x
PrefixWhileArray 11485 11503 +0.2% 1.00x (?)
PrefixWhileArrayLazy 11924 12080 +1.3% 0.99x
PrefixWhileCountableRange 11922 11658 -2.2% 1.02x
PrefixWhileCountableRangeLazy 15737 15385 -2.2% 1.02x
PrefixWhileSequence 26167 26266 +0.4% 1.00x
PrefixWhileSequenceLazy 9129 8860 -2.9% 1.03x
QueueConcrete 15301 15312 +0.1% 1.00x (?)
QueueGeneric 19030 19158 +0.7% 0.99x (?)
RC4 16867 16460 -2.4% 1.02x
RangeAssignment 2775 2692 -3.0% 1.03x (?)
RangeIterationSigned 16694 16971 +1.7% 0.98x
RangeIterationSigned64 39132 39188 +0.1% 1.00x (?)
RangeIterationUnsigned 34820 34903 +0.2% 1.00x
RecursiveOwnedParameter 7899 7909 +0.1% 1.00x (?)
ReversedArray 13156 13001 -1.2% 1.01x
ReversedBidirectional 42713 42766 +0.1% 1.00x (?)
RomanNumbers 1175334 1204590 +2.5% 0.98x
SevenBoom 1667 1634 -2.0% 1.02x (?)
Sim2DArray 43657 43631 -0.1% 1.00x (?)
SortLargeExistentials 15712 15693 -0.1% 1.00x (?)
SortLettersInPlace 2830 2839 +0.3% 1.00x (?)
SortSortedStrings 1352 1376 +1.8% 0.98x
SortStrings 2535 2510 -1.0% 1.01x (?)
SortStringsUnicode 16274 16323 +0.3% 1.00x (?)
StackPromo 89079 89065 -0.0% 1.00x (?)
StaticArray 2645 2665 +0.8% 0.99x (?)
StrComplexWalk 6442 6660 +3.4% 0.97x
StringAdder 4739 4736 -0.1% 1.00x (?)
StringBuilder 6881 6806 -1.1% 1.01x (?)
StringBuilderLong 2706 2752 +1.7% 0.98x (?)
StringComparison_abnormal 1411 1431 +1.4% 0.99x
StringComparison_ascii 9538 9570 +0.3% 1.00x (?)
StringComparison_emoji 3793 3889 +2.5% 0.98x
StringComparison_fastPrenormal 13174 13218 +0.3% 1.00x (?)
StringComparison_latin1 9418 9509 +1.0% 0.99x (?)
StringComparison_longSharedPrefix 13051 13110 +0.5% 1.00x
StringComparison_nonBMPSlowestPrenormal 6924 6993 +1.0% 0.99x (?)
StringComparison_slowerPrenormal 6758 6818 +0.9% 0.99x (?)
StringComparison_zalgo 2831 2865 +1.2% 0.99x (?)
StringEnumRawValueInitialization 20788 21370 +2.8% 0.97x
StringFromLongWholeSubstring 23 23 +0.0% 1.00x
StringFromLongWholeSubstringGeneric 201 201 +0.0% 1.00x
StringHasPrefixAscii 3058 3125 +2.2% 0.98x
StringHasPrefixUnicode 31031 30983 -0.2% 1.00x (?)
StringHasSuffixAscii 3047 3183 +4.5% 0.96x
StringHasSuffixUnicode 88009 88165 +0.2% 1.00x (?)
StringInterpolation 13423 13889 +3.5% 0.97x (?)
StringUTF16Builder 7991 7705 -3.6% 1.04x (?)
StringWithCString 39464 37726 -4.4% 1.05x
StringWordBuilder 2521 2535 +0.6% 0.99x (?)
StringWordBuilderReservingCapacity 2178 2191 +0.6% 0.99x
SubstringComparable 4111 4108 -0.1% 1.00x (?)
SubstringEqualString 3488 3493 +0.1% 1.00x (?)
SubstringEquatable 7764 7789 +0.3% 1.00x (?)
SubstringFromLongString 24 24 +0.0% 1.00x
SubstringFromLongStringGeneric 105 102 -2.9% 1.03x
SuffixAnyCollection 4576 4476 -2.2% 1.02x
SuffixAnySeqCRangeIter 33871 33481 -1.2% 1.01x
SuffixAnySeqCRangeIterLazy 33796 33532 -0.8% 1.01x (?)
SuffixAnySeqCntRange 4585 4511 -1.6% 1.02x
SuffixAnySeqCntRangeLazy 4599 4573 -0.6% 1.01x (?)
SuffixAnySequence 25230 25099 -0.5% 1.01x (?)
SuffixAnySequenceLazy 25108 25126 +0.1% 1.00x (?)
SuffixCountableRange 111 111 +0.0% 1.00x
SuffixCountableRangeLazy 8729 8915 +2.1% 0.98x (?)
SuffixSequence 25128 25016 -0.4% 1.00x (?)
SuffixSequenceLazy 25017 24960 -0.2% 1.00x
SumUsingReduce 170392 171528 +0.7% 0.99x
SumUsingReduceInto 166765 166812 +0.0% 1.00x (?)
SuperChars 216675 218115 +0.7% 0.99x (?)
TypeFlood 162 158 -2.5% 1.03x (?)
UTF8Decode 30128 29837 -1.0% 1.01x
Walsh 12054 12019 -0.3% 1.00x
XorLoop 23384 23391 +0.0% 1.00x (?)
Hardware Overview
  Model Name: Mac Pro
  Model Identifier: MacPro6,1
  Processor Name: 12-Core Intel Xeon E5
  Processor Speed: 2.7 GHz
  Number of Processors: 1
  Total Number of Cores: 12
  L2 Cache (per Core): 256 KB
  L3 Cache: 30 MB
  Memory: 64 GB

This is a version for hasher that uses a nonmutating append, so that we can mark it @effects(readonly), reducing retain/releases around its calls.
@lorentey
Copy link
Member Author

lorentey commented Feb 9, 2018

@swift-ci please benchmark

@lorentey
Copy link
Member Author

lorentey commented Feb 9, 2018

c433efd applies the lesson from #14466 directly onto the _hash(into:) interface, making the hash combinator a pure function, marked with @effects(readonly).

This may speed things up a bit, but in exchange, we lose the ability to select a hasher at runtime, and the size of the hasher state likely becomes a limiting factor. (SipHash has a state that is 5 words wide.)

This restores speed of String hashing, among other types.
@lorentey
Copy link
Member Author

lorentey commented Feb 9, 2018

@swift-ci please benchmark

@swift-ci
Copy link
Contributor

swift-ci commented Feb 9, 2018

Build comment file:

Optimized (O)

Regression (50)
TEST OLD NEW DELTA SPEEDUP
Sim2DArray 411 599 +45.7% 0.69x
Dictionary4OfObjects 197 271 +37.6% 0.73x
Dictionary4 146 194 +32.9% 0.75x
ArrayAppendReserved 797 1035 +29.9% 0.77x
ArrayPlusEqualFiveElementCollection 5582 7071 +26.7% 0.79x
DictionarySwap 466 582 +24.9% 0.80x
StaticArray 5 6 +20.0% 0.83x
SetIntersect 330 384 +16.4% 0.86x
ArrayAppend 1058 1227 +16.0% 0.86x
ArrayPlusEqualSingleElementCollection 1064 1228 +15.4% 0.87x
PrefixWhileCountableRange 46 53 +15.2% 0.87x
Hanoi 3325 3829 +15.2% 0.87x
DictionaryRemove 2761 3130 +13.4% 0.88x
LazilyFilteredRange 3825 4332 +13.3% 0.88x
SetExclusiveOr 3449 3875 +12.4% 0.89x
DictionaryGroup 132 146 +10.6% 0.90x
SetUnion 3202 3529 +10.2% 0.91x
SetIntersect_OfObjects 1764 1937 +9.8% 0.91x
RGBHistogramOfObjects 23787 26099 +9.7% 0.91x
SetExclusiveOr_OfObjects 8860 9716 +9.7% 0.91x
SetUnion_OfObjects 7322 8020 +9.5% 0.91x
StringHasPrefixAscii 1517 1660 +9.4% 0.91x
MapReduceSequence 457 500 +9.4% 0.91x (?)
WordCountUniqueASCII 1750 1912 +9.3% 0.92x
DropLastCountableRange 11 12 +9.1% 0.92x
ReversedDictionary 127 138 +8.7% 0.92x
CharIteration_utf16_unicodeScalars_Backwards 16564 17958 +8.4% 0.92x
NopDeinit 21579 23288 +7.9% 0.93x
Histogram 323 348 +7.7% 0.93x
CharIteration_punctuated_unicodeScalars_Backwards 3045 3267 +7.3% 0.93x
CharIteration_tweet_unicodeScalars_Backwards 26227 28139 +7.3% 0.93x
CharIteration_russian_unicodeScalars_Backwards 11084 11890 +7.3% 0.93x
CharIteration_ascii_unicodeScalars_Backwards 13301 14259 +7.2% 0.93x
CharIteration_korean_unicodeScalars_Backwards 12913 13835 +7.1% 0.93x
CharIteration_japanese_unicodeScalars_Backwards 15926 17060 +7.1% 0.93x
Prims 752 805 +7.0% 0.93x
MapReduce 399 427 +7.0% 0.93x
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 2447 2617 +6.9% 0.94x
StringHasSuffixAscii 1660 1775 +6.9% 0.94x
StringComparison_ascii 945 1008 +6.7% 0.94x
SetIsSubsetOf_OfObjects 366 390 +6.6% 0.94x
PrimsSplit 758 807 +6.5% 0.94x (?)
TwoSum 991 1054 +6.4% 0.94x (?)
CharIteration_chinese_unicodeScalars_Backwards 10174 10812 +6.3% 0.94x
DictionarySubscriptDefaultMutation 144 153 +6.2% 0.94x
Dictionary 500 531 +6.2% 0.94x
StrToInt 2095 2220 +6.0% 0.94x
OpenClose 254 269 +5.9% 0.94x
StringWithCString 42555 44980 +5.7% 0.95x
CharIndexing_tweet_unicodeScalars 29890 31563 +5.6% 0.95x
Improvement (4)
TEST OLD NEW DELTA SPEEDUP
PrefixWhileArray 105 88 -16.2% 1.19x
MapReduceLazyCollectionShort 38 34 -10.5% 1.12x
PointerArithmetics 34356 31488 -8.3% 1.09x
SuffixCountableRange 12 11 -8.3% 1.09x
No Changes (308)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 3751 3719 -0.9% 1.01x (?)
AnyHashableWithAClass 69536 69242 -0.4% 1.00x (?)
Array2D 2554 2597 +1.7% 0.98x
ArrayAppendArrayOfInt 788 792 +0.5% 0.99x (?)
ArrayAppendAscii 13532 13772 +1.8% 0.98x
ArrayAppendFromGeneric 783 791 +1.0% 0.99x (?)
ArrayAppendGenericStructs 1401 1429 +2.0% 0.98x (?)
ArrayAppendLatin1 38483 38511 +0.1% 1.00x (?)
ArrayAppendLazyMap 1343 1340 -0.2% 1.00x (?)
ArrayAppendOptionals 1423 1426 +0.2% 1.00x (?)
ArrayAppendRepeatCol 1329 1337 +0.6% 0.99x (?)
ArrayAppendSequence 1132 1134 +0.2% 1.00x (?)
ArrayAppendStrings 15224 15189 -0.2% 1.00x (?)
ArrayAppendToFromGeneric 799 795 -0.5% 1.01x (?)
ArrayAppendToGeneric 797 791 -0.8% 1.01x (?)
ArrayAppendUTF16 37687 37283 -1.1% 1.01x (?)
ArrayInClass 85 85 +0.0% 1.00x
ArrayLiteral 0 0 +0.0% 1.00x
ArrayOfGenericPOD2 150 150 +0.0% 1.00x
ArrayOfGenericRef 4383 4381 -0.0% 1.00x (?)
ArrayOfPOD 183 183 +0.0% 1.00x
ArrayOfRef 4347 4343 -0.1% 1.00x (?)
ArrayPlusEqualArrayOfInt 797 798 +0.1% 1.00x (?)
ArrayPlusEqualThreeElements 1660 1657 -0.2% 1.00x (?)
ArraySubscript 1526 1525 -0.1% 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
BinaryFloatingPointConversionFromBinaryInteger 38 38 +0.0% 1.00x
BitCount 202 211 +4.5% 0.96x
ByteSwap 102 98 -3.9% 1.04x (?)
COWTree 3601 3595 -0.2% 1.00x (?)
CSVParsing 762219 761379 -0.1% 1.00x (?)
CSVParsingAlt 723395 725659 +0.3% 1.00x (?)
CSVParsingAltIndices 361161 361427 +0.1% 1.00x (?)
CStringLongAscii 4781 4936 +3.2% 0.97x (?)
CStringLongNonAscii 2153 2137 -0.7% 1.01x (?)
CStringShortAscii 4808 4775 -0.7% 1.01x (?)
Calculator 445 448 +0.7% 0.99x
CaptureProp 8908 8609 -3.4% 1.03x
CharIndexing_ascii_unicodeScalars 15166 15807 +4.2% 0.96x
CharIndexing_ascii_unicodeScalars_Backwards 14816 14410 -2.7% 1.03x
CharIndexing_chinese_unicodeScalars 11517 11972 +4.0% 0.96x
CharIndexing_chinese_unicodeScalars_Backwards 11227 10927 -2.7% 1.03x
CharIndexing_japanese_unicodeScalars 18151 18925 +4.3% 0.96x
CharIndexing_japanese_unicodeScalars_Backwards 17733 17250 -2.7% 1.03x
CharIndexing_korean_unicodeScalars 14704 15337 +4.3% 0.96x
CharIndexing_korean_unicodeScalars_Backwards 14373 13976 -2.8% 1.03x
CharIndexing_punctuatedJapanese_unicodeScalars 2766 2869 +3.7% 0.96x
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 2706 2643 -2.3% 1.02x
CharIndexing_punctuated_unicodeScalars 3450 3590 +4.1% 0.96x
CharIndexing_punctuated_unicodeScalars_Backwards 3376 3297 -2.3% 1.02x
CharIndexing_russian_unicodeScalars 12638 13173 +4.2% 0.96x
CharIndexing_russian_unicodeScalars_Backwards 12353 12017 -2.7% 1.03x
CharIndexing_tweet_unicodeScalars_Backwards 29211 28528 -2.3% 1.02x
CharIndexing_utf16_unicodeScalars 20618 20829 +1.0% 0.99x
CharIndexing_utf16_unicodeScalars_Backwards 21460 21354 -0.5% 1.00x (?)
CharIteration_ascii_unicodeScalars 20867 20747 -0.6% 1.01x
CharIteration_chinese_unicodeScalars 15810 15684 -0.8% 1.01x
CharIteration_japanese_unicodeScalars 25013 24820 -0.8% 1.01x (?)
CharIteration_korean_unicodeScalars 20251 20139 -0.6% 1.01x
CharIteration_punctuatedJapanese_unicodeScalars 3722 3726 +0.1% 1.00x (?)
CharIteration_punctuated_unicodeScalars 4683 4664 -0.4% 1.00x (?)
CharIteration_russian_unicodeScalars 17386 17256 -0.7% 1.01x
CharIteration_tweet_unicodeScalars 41405 40965 -1.1% 1.01x
CharIteration_utf16_unicodeScalars 27430 27202 -0.8% 1.01x (?)
CharacterLiteralsLarge 6173 6129 -0.7% 1.01x (?)
CharacterLiteralsSmall 404 411 +1.7% 0.98x
CharacterPropertiesFetch 4648 4627 -0.5% 1.00x (?)
CharacterPropertiesPrecomputed 1065 1113 +4.5% 0.96x
CharacterPropertiesStashed 1647 1645 -0.1% 1.00x (?)
CharacterPropertiesStashedMemo 1605 1660 +3.4% 0.97x (?)
Chars 968 969 +0.1% 1.00x (?)
ClassArrayGetter 15 15 +0.0% 1.00x
Combos 454 453 -0.2% 1.00x (?)
DictOfArraysToArrayOfDicts 778 791 +1.7% 0.98x (?)
Dictionary2 1617 1630 +0.8% 0.99x (?)
Dictionary2OfObjects 2981 2969 -0.4% 1.00x (?)
Dictionary3 233 245 +5.2% 0.95x
Dictionary3OfObjects 673 675 +0.3% 1.00x (?)
DictionaryBridge 1946 1988 +2.2% 0.98x (?)
DictionaryGroupOfObjects 1910 1975 +3.4% 0.97x
DictionaryLiteral 1596 1624 +1.8% 0.98x (?)
DictionaryOfObjects 2184 2207 +1.1% 0.99x (?)
DictionaryRemoveOfObjects 23873 24545 +2.8% 0.97x
DictionarySubscriptDefaultMutationArray 492 501 +1.8% 0.98x (?)
DictionarySubscriptDefaultMutationArrayOfObjects 3820 3886 +1.7% 0.98x
DictionarySubscriptDefaultMutationOfObjects 1398 1428 +2.1% 0.98x
DictionarySwapOfObjects 7428 7722 +4.0% 0.96x (?)
DoubleWidthDivision 0 0 +0.0% 1.00x
DropFirstAnyCollection 76 76 +0.0% 1.00x
DropFirstAnyCollectionLazy 65182 64468 -1.1% 1.01x (?)
DropFirstAnySeqCRangeIter 18069 18392 +1.8% 0.98x (?)
DropFirstAnySeqCRangeIterLazy 18163 18391 +1.3% 0.99x (?)
DropFirstAnySeqCntRange 71 71 +0.0% 1.00x
DropFirstAnySeqCntRangeLazy 71 71 +0.0% 1.00x
DropFirstAnySequence 4533 4391 -3.1% 1.03x
DropFirstAnySequenceLazy 4529 4377 -3.4% 1.03x
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 2700 2697 -0.1% 1.00x (?)
DropFirstSequenceLazy 2792 2791 -0.0% 1.00x (?)
DropLastAnyCollection 28 28 +0.0% 1.00x
DropLastAnyCollectionLazy 21795 21500 -1.4% 1.01x (?)
DropLastAnySeqCRangeIter 3512 3525 +0.4% 1.00x (?)
DropLastAnySeqCRangeIterLazy 3516 3519 +0.1% 1.00x (?)
DropLastAnySeqCntRange 23 23 +0.0% 1.00x
DropLastAnySeqCntRangeLazy 23 23 +0.0% 1.00x
DropLastAnySequence 5171 5091 -1.5% 1.02x (?)
DropLastAnySequenceLazy 5259 5208 -1.0% 1.01x (?)
DropLastCountableRangeLazy 11 11 +0.0% 1.00x
DropLastSequence 637 653 +2.5% 0.98x
DropLastSequenceLazy 636 659 +3.6% 0.97x
DropWhileAnyCollection 100 99 -1.0% 1.01x
DropWhileAnyCollectionLazy 147 147 +0.0% 1.00x
DropWhileAnySeqCRangeIter 15042 14998 -0.3% 1.00x (?)
DropWhileAnySeqCRangeIterLazy 147 147 +0.0% 1.00x
DropWhileAnySeqCntRange 95 95 +0.0% 1.00x
DropWhileAnySeqCntRangeLazy 147 147 +0.0% 1.00x
DropWhileAnySequence 4930 4708 -4.5% 1.05x
DropWhileAnySequenceLazy 1855 1855 +0.0% 1.00x
DropWhileArrayLazy 129 129 +0.0% 1.00x
DropWhileCountableRange 36 36 +0.0% 1.00x
DropWhileCountableRangeLazy 111 111 +0.0% 1.00x
DropWhileSequence 1340 1340 +0.0% 1.00x
DropWhileSequenceLazy 88 88 +0.0% 1.00x
EqualStringSubstring 432 433 +0.2% 1.00x (?)
EqualSubstringString 432 434 +0.5% 1.00x (?)
EqualSubstringSubstring 432 433 +0.2% 1.00x (?)
EqualSubstringSubstringGenericEquatable 431 433 +0.5% 1.00x (?)
ErrorHandling 2329 2356 +1.2% 0.99x (?)
ExclusivityGlobal 5 5 +0.0% 1.00x
ExclusivityIndependent 2 2 +0.0% 1.00x
FilterEvenUsingReduce 1327 1316 -0.8% 1.01x (?)
FilterEvenUsingReduceInto 149 147 -1.3% 1.01x (?)
FrequenciesUsingReduce 6677 6654 -0.3% 1.00x (?)
FrequenciesUsingReduceInto 3156 3171 +0.5% 1.00x (?)
HashTest 1751 1760 +0.5% 0.99x (?)
Integrate 217 218 +0.5% 1.00x (?)
IterateData 1378 1422 +3.2% 0.97x
Join 371 368 -0.8% 1.01x (?)
LazilyFilteredArrayContains 36659 36263 -1.1% 1.01x
LazilyFilteredArrays 65610 65692 +0.1% 1.00x (?)
LessSubstringSubstring 432 433 +0.2% 1.00x (?)
LessSubstringSubstringGenericComparable 432 433 +0.2% 1.00x (?)
LinkedList 7521 7539 +0.2% 1.00x (?)
LuhnAlgoEager 584 585 +0.2% 1.00x (?)
LuhnAlgoLazy 581 588 +1.2% 0.99x (?)
MapReduceAnyCollection 399 399 +0.0% 1.00x
MapReduceAnyCollectionShort 2077 2110 +1.6% 0.98x (?)
MapReduceClass 3059 3039 -0.7% 1.01x (?)
MapReduceClassShort 4602 4598 -0.1% 1.00x (?)
MapReduceLazyCollection 13 13 +0.0% 1.00x
MapReduceLazySequence 86 86 +0.0% 1.00x
MapReduceShort 2082 2045 -1.8% 1.02x (?)
MapReduceShortString 21 21 +0.0% 1.00x
MapReduceString 83 83 +0.0% 1.00x
Memset 215 214 -0.5% 1.00x (?)
MonteCarloE 10374 10480 +1.0% 0.99x
MonteCarloPi 42893 42997 +0.2% 1.00x (?)
NSDictionaryCastToSwift 5314 5570 +4.8% 0.95x (?)
NSError 308 307 -0.3% 1.00x (?)
NSStringConversion 327 325 -0.6% 1.01x (?)
NibbleSort 3958 4121 +4.1% 0.96x
ObjectAllocation 186 187 +0.5% 0.99x (?)
ObjectiveCBridgeFromNSArrayAnyObject 19750 19596 -0.8% 1.01x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 3909 3980 +1.8% 0.98x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 38730 38443 -0.7% 1.01x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 33031 33095 +0.2% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 120119 121310 +1.0% 0.99x (?)
ObjectiveCBridgeFromNSSetAnyObject 58140 57777 -0.6% 1.01x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 4153 4259 +2.6% 0.98x (?)
ObjectiveCBridgeFromNSSetAnyObjectToString 68187 68871 +1.0% 0.99x (?)
ObjectiveCBridgeFromNSString 1330 1344 +1.1% 0.99x (?)
ObjectiveCBridgeFromNSStringForced 2329 2393 +2.7% 0.97x (?)
ObjectiveCBridgeStubDataAppend 3863 3882 +0.5% 1.00x (?)
ObjectiveCBridgeStubDateMutation 257 257 +0.0% 1.00x
ObjectiveCBridgeStubFromArrayOfNSString 25864 25562 -1.2% 1.01x (?)
ObjectiveCBridgeStubFromNSDate 4082 4130 +1.2% 0.99x (?)
ObjectiveCBridgeStubFromNSString 852 884 +3.8% 0.96x (?)
ObjectiveCBridgeStubFromNSStringRef 158 155 -1.9% 1.02x (?)
ObjectiveCBridgeStubNSDataAppend 2457 2499 +1.7% 0.98x (?)
ObjectiveCBridgeStubNSDateMutationRef 13330 13491 +1.2% 0.99x (?)
ObjectiveCBridgeStubToArrayOfNSString 28526 28855 +1.2% 0.99x (?)
ObjectiveCBridgeStubToNSDate 15823 15618 -1.3% 1.01x (?)
ObjectiveCBridgeStubToNSDateRef 3392 3410 +0.5% 0.99x (?)
ObjectiveCBridgeStubToNSString 1541 1539 -0.1% 1.00x (?)
ObjectiveCBridgeStubToNSStringRef 112 115 +2.7% 0.97x (?)
ObjectiveCBridgeStubURLAppendPath 320688 321200 +0.2% 1.00x (?)
ObjectiveCBridgeStubURLAppendPathRef 332131 327342 -1.4% 1.01x (?)
ObjectiveCBridgeToNSArray 28503 29102 +2.1% 0.98x (?)
ObjectiveCBridgeToNSDictionary 54680 54661 -0.0% 1.00x (?)
ObjectiveCBridgeToNSSet 44754 43926 -1.9% 1.02x (?)
ObjectiveCBridgeToNSString 1314 1314 +0.0% 1.00x
ObserverClosure 2162 2173 +0.5% 0.99x (?)
ObserverForwarderStruct 986 997 +1.1% 0.99x (?)
ObserverPartiallyAppliedMethod 3717 3758 +1.1% 0.99x (?)
ObserverUnappliedMethod 2367 2372 +0.2% 1.00x (?)
PartialApplyDynamicType 0 0 +0.0% 1.00x
Phonebook 4044 4183 +3.4% 0.97x
PolymorphicCalls 25 25 +0.0% 1.00x
PopFrontArray 1938 1941 +0.2% 1.00x (?)
PopFrontArrayGeneric 1956 1885 -3.6% 1.04x (?)
PopFrontUnsafePointer 8986 8978 -0.1% 1.00x (?)
PrefixAnyCollection 76 76 +0.0% 1.00x
PrefixAnyCollectionLazy 65166 64296 -1.3% 1.01x (?)
PrefixAnySeqCRangeIter 14126 14301 +1.2% 0.99x (?)
PrefixAnySeqCRangeIterLazy 14190 14464 +1.9% 0.98x (?)
PrefixAnySeqCntRange 71 71 +0.0% 1.00x
PrefixAnySeqCntRangeLazy 71 71 +0.0% 1.00x
PrefixAnySequence 3901 3801 -2.6% 1.03x
PrefixAnySequenceLazy 3890 3794 -2.5% 1.03x
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 1325 1325 +0.0% 1.00x
PrefixSequenceLazy 1413 1413 +0.0% 1.00x
PrefixWhileAnyCollection 146 146 +0.0% 1.00x
PrefixWhileAnyCollectionLazy 106 106 +0.0% 1.00x
PrefixWhileAnySeqCRangeIter 9321 9341 +0.2% 1.00x (?)
PrefixWhileAnySeqCRangeIterLazy 106 106 +0.0% 1.00x
PrefixWhileAnySeqCntRange 142 142 +0.0% 1.00x
PrefixWhileAnySeqCntRangeLazy 106 106 +0.0% 1.00x
PrefixWhileAnySequence 10506 10464 -0.4% 1.00x (?)
PrefixWhileAnySequenceLazy 1392 1391 -0.1% 1.00x (?)
PrefixWhileArrayLazy 70 70 +0.0% 1.00x
PrefixWhileCountableRangeLazy 35 35 +0.0% 1.00x
PrefixWhileSequence 357 374 +4.8% 0.95x (?)
PrefixWhileSequenceLazy 52 52 +0.0% 1.00x
QueueConcrete 1308 1313 +0.4% 1.00x (?)
QueueGeneric 1155 1160 +0.4% 1.00x (?)
RC4 168 165 -1.8% 1.02x
RGBHistogram 3011 3159 +4.9% 0.95x
RangeAssignment 353 371 +5.1% 0.95x (?)
RangeIterationSigned 171 171 +0.0% 1.00x
RangeIterationSigned64 200 200 +0.0% 1.00x
RangeIterationUnsigned 200 200 +0.0% 1.00x
RangeReplaceableCollectionPlusDefault 981 984 +0.3% 1.00x (?)
RecursiveOwnedParameter 2346 2346 +0.0% 1.00x
ReversedArray 57 57 +0.0% 1.00x
ReversedBidirectional 15254 15376 +0.8% 0.99x (?)
RomanNumbers 117610 119293 +1.4% 0.99x (?)
SetIsSubsetOf 299 305 +2.0% 0.98x
SevenBoom 1536 1530 -0.4% 1.00x (?)
SortLargeExistentials 7038 7084 +0.7% 0.99x
SortLettersInPlace 1155 1157 +0.2% 1.00x (?)
SortSortedStrings 1167 1166 -0.1% 1.00x (?)
SortStrings 2027 2046 +0.9% 0.99x
SortStringsUnicode 15517 15527 +0.1% 1.00x (?)
StackPromo 21973 22036 +0.3% 1.00x (?)
StrComplexWalk 1565 1564 -0.1% 1.00x (?)
StringAdder 4258 4272 +0.3% 1.00x (?)
StringBuilder 1447 1452 +0.3% 1.00x (?)
StringBuilderLong 1086 1083 -0.3% 1.00x (?)
StringComparison_abnormal 858 859 +0.1% 1.00x (?)
StringComparison_emoji 2549 2556 +0.3% 1.00x (?)
StringComparison_fastPrenormal 8692 8704 +0.1% 1.00x (?)
StringComparison_latin1 5973 5988 +0.3% 1.00x (?)
StringComparison_longSharedPrefix 11512 11502 -0.1% 1.00x (?)
StringComparison_nonBMPSlowestPrenormal 4667 4684 +0.4% 1.00x (?)
StringComparison_slowerPrenormal 4154 4171 +0.4% 1.00x (?)
StringComparison_zalgo 1732 1721 -0.6% 1.01x (?)
StringEdits 120716 117037 -3.0% 1.03x (?)
StringEnumRawValueInitialization 974 986 +1.2% 0.99x (?)
StringEqualPointerComparison 286 286 +0.0% 1.00x
StringFromLongWholeSubstring 21 21 +0.0% 1.00x
StringFromLongWholeSubstringGeneric 10 10 +0.0% 1.00x
StringHasPrefixUnicode 27990 28222 +0.8% 0.99x (?)
StringHasSuffixUnicode 85183 85133 -0.1% 1.00x (?)
StringInterpolation 9265 9300 +0.4% 1.00x (?)
StringMatch 7474 7688 +2.9% 0.97x
StringRemoveDupes 1205 1201 -0.3% 1.00x (?)
StringUTF16Builder 2417 2429 +0.5% 1.00x (?)
StringWalk 1424 1457 +2.3% 0.98x
StringWordBuilder 1708 1781 +4.3% 0.96x
StringWordBuilderReservingCapacity 1270 1327 +4.5% 0.96x
SubstringComparable 2067 2082 +0.7% 0.99x (?)
SubstringEqualString 2138 2121 -0.8% 1.01x (?)
SubstringEquatable 3147 3157 +0.3% 1.00x (?)
SubstringFromLongString 10 10 +0.0% 1.00x
SubstringFromLongStringGeneric 70 69 -1.4% 1.01x
SuffixAnyCollection 28 28 +0.0% 1.00x
SuffixAnyCollectionLazy 21720 21589 -0.6% 1.01x (?)
SuffixAnySeqCRangeIter 3811 3817 +0.2% 1.00x (?)
SuffixAnySeqCRangeIterLazy 3808 3817 +0.2% 1.00x (?)
SuffixAnySeqCntRange 23 23 +0.0% 1.00x
SuffixAnySeqCntRangeLazy 23 23 +0.0% 1.00x
SuffixAnySequence 5132 5090 -0.8% 1.01x (?)
SuffixAnySequenceLazy 5278 5159 -2.3% 1.02x
SuffixCountableRangeLazy 11 11 +0.0% 1.00x
SuffixSequence 3804 3747 -1.5% 1.02x (?)
SuffixSequenceLazy 3779 3747 -0.8% 1.01x (?)
SumUsingReduce 102 101 -1.0% 1.01x
SumUsingReduceInto 102 101 -1.0% 1.01x
SuperChars 41048 41028 -0.0% 1.00x (?)
TypeFlood 0 0 +0.0% 1.00x
UTF8Decode 313 313 +0.0% 1.00x
Walsh 420 405 -3.6% 1.04x
WordCountHistogramASCII 8006 8252 +3.1% 0.97x (?)
WordCountHistogramUTF16 52057 54495 +4.7% 0.96x (?)
WordCountUniqueUTF16 21952 22145 +0.9% 0.99x (?)
WordSplitASCII 21222 20897 -1.5% 1.02x (?)
WordSplitUTF16 22072 21809 -1.2% 1.01x (?)
XorLoop 393 392 -0.3% 1.00x (?)

Unoptimized (Onone)

Regression (17)
TEST OLD NEW DELTA SPEEDUP
RGBHistogramOfObjects 97210 109622 +12.8% 0.89x
ArrayOfPOD 755 846 +12.1% 0.89x
Chars 40343 44750 +10.9% 0.90x
SetExclusiveOr_OfObjects 41685 45815 +9.9% 0.91x
ObjectiveCBridgeFromNSString 3120 3414 +9.4% 0.91x (?)
StringEqualPointerComparison 3048 3324 +9.1% 0.92x
NSDictionaryCastToSwift 6427 6986 +8.7% 0.92x (?)
SetUnion_OfObjects 29241 31528 +7.8% 0.93x
CharIndexing_russian_unicodeScalars_Backwards 313625 336711 +7.4% 0.93x
CaptureProp 262008 281010 +7.3% 0.93x
ObjectiveCBridgeFromNSArrayAnyObjectToString 41269 44208 +7.1% 0.93x (?)
SetIntersect_OfObjects 12054 12870 +6.8% 0.94x
CharIndexing_punctuated_unicodeScalars_Backwards 84849 90366 +6.5% 0.94x (?)
ExclusivityGlobal 180 191 +6.1% 0.94x
ObjectiveCBridgeFromNSArrayAnyObject 21817 23079 +5.8% 0.95x (?)
RomanNumbers 1178181 1240897 +5.3% 0.95x
CStringLongAscii 4599 4842 +5.3% 0.95x
Improvement (4)
TEST OLD NEW DELTA SPEEDUP
DictionarySwapOfObjects 22248 19246 -13.5% 1.16x
StringInterpolation 14406 13536 -6.0% 1.06x (?)
PrefixAnyCollectionLazy 109504 103112 -5.8% 1.06x (?)
BitCount 2262 2151 -4.9% 1.05x
No Changes (341)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 5126 5117 -0.2% 1.00x (?)
AnyHashableWithAClass 86656 85666 -1.1% 1.01x (?)
Array2D 632051 631648 -0.1% 1.00x (?)
ArrayAppend 4658 4669 +0.2% 1.00x (?)
ArrayAppendArrayOfInt 856 864 +0.9% 0.99x
ArrayAppendAscii 39930 40617 +1.7% 0.98x
ArrayAppendFromGeneric 865 869 +0.5% 1.00x (?)
ArrayAppendGenericStructs 1499 1502 +0.2% 1.00x (?)
ArrayAppendLatin1 62988 64158 +1.9% 0.98x
ArrayAppendLazyMap 169425 168241 -0.7% 1.01x
ArrayAppendOptionals 1475 1500 +1.7% 0.98x (?)
ArrayAppendRepeatCol 174011 172035 -1.1% 1.01x
ArrayAppendReserved 4279 4396 +2.7% 0.97x
ArrayAppendSequence 145140 144098 -0.7% 1.01x
ArrayAppendStrings 15415 15426 +0.1% 1.00x (?)
ArrayAppendToFromGeneric 864 868 +0.5% 1.00x (?)
ArrayAppendToGeneric 868 871 +0.3% 1.00x (?)
ArrayAppendUTF16 62683 64730 +3.3% 0.97x
ArrayInClass 6192 6194 +0.0% 1.00x (?)
ArrayLiteral 1779 1788 +0.5% 0.99x (?)
ArrayOfGenericPOD2 1130 1129 -0.1% 1.00x (?)
ArrayOfGenericRef 10070 10092 +0.2% 1.00x (?)
ArrayOfRef 9286 9283 -0.0% 1.00x (?)
ArrayPlusEqualArrayOfInt 848 866 +2.1% 0.98x
ArrayPlusEqualFiveElementCollection 232550 241027 +3.6% 0.96x (?)
ArrayPlusEqualSingleElementCollection 229777 231854 +0.9% 0.99x (?)
ArrayPlusEqualThreeElements 9234 9416 +2.0% 0.98x (?)
ArraySubscript 81460 82205 +0.9% 0.99x
ArrayValueProp 3623 3630 +0.2% 1.00x (?)
ArrayValueProp2 16019 15943 -0.5% 1.00x (?)
ArrayValueProp3 4136 4126 -0.2% 1.00x (?)
ArrayValueProp4 4050 4063 +0.3% 1.00x (?)
BinaryFloatingPointConversionFromBinaryInteger 6071 5982 -1.5% 1.01x (?)
ByteSwap 3933 3903 -0.8% 1.01x
COWTree 10955 10960 +0.0% 1.00x (?)
CSVParsing 2557659 2452947 -4.1% 1.04x (?)
CSVParsingAlt 1317886 1352545 +2.6% 0.97x (?)
CSVParsingAltIndices 2503025 2632000 +5.2% 0.95x
CStringLongNonAscii 2148 2072 -3.5% 1.04x (?)
CStringShortAscii 7664 7779 +1.5% 0.99x (?)
Calculator 1675 1749 +4.4% 0.96x
CharIndexing_ascii_unicodeScalars 352391 350799 -0.5% 1.00x (?)
CharIndexing_ascii_unicodeScalars_Backwards 387180 379309 -2.0% 1.02x (?)
CharIndexing_chinese_unicodeScalars 263775 264908 +0.4% 1.00x (?)
CharIndexing_chinese_unicodeScalars_Backwards 289652 288376 -0.4% 1.00x (?)
CharIndexing_japanese_unicodeScalars 419361 420218 +0.2% 1.00x (?)
CharIndexing_japanese_unicodeScalars_Backwards 464263 456674 -1.6% 1.02x (?)
CharIndexing_korean_unicodeScalars 342052 349235 +2.1% 0.98x (?)
CharIndexing_korean_unicodeScalars_Backwards 370552 375140 +1.2% 0.99x (?)
CharIndexing_punctuatedJapanese_unicodeScalars 61471 62406 +1.5% 0.99x (?)
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 67368 70095 +4.0% 0.96x (?)
CharIndexing_punctuated_unicodeScalars 77887 78074 +0.2% 1.00x (?)
CharIndexing_russian_unicodeScalars 291507 291756 +0.1% 1.00x (?)
CharIndexing_tweet_unicodeScalars 695320 700468 +0.7% 0.99x (?)
CharIndexing_tweet_unicodeScalars_Backwards 747448 758388 +1.5% 0.99x (?)
CharIndexing_utf16_unicodeScalars 300544 304114 +1.2% 0.99x (?)
CharIndexing_utf16_unicodeScalars_Backwards 345812 334559 -3.3% 1.03x (?)
CharIteration_ascii_unicodeScalars 155183 155714 +0.3% 1.00x (?)
CharIteration_ascii_unicodeScalars_Backwards 292152 290617 -0.5% 1.01x (?)
CharIteration_chinese_unicodeScalars 117316 116974 -0.3% 1.00x (?)
CharIteration_chinese_unicodeScalars_Backwards 222452 219217 -1.5% 1.01x (?)
CharIteration_japanese_unicodeScalars 185594 185235 -0.2% 1.00x (?)
CharIteration_japanese_unicodeScalars_Backwards 349563 347186 -0.7% 1.01x (?)
CharIteration_korean_unicodeScalars 150696 150962 +0.2% 1.00x (?)
CharIteration_korean_unicodeScalars_Backwards 285344 283787 -0.5% 1.01x (?)
CharIteration_punctuatedJapanese_unicodeScalars 27849 28028 +0.6% 0.99x
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 51324 50676 -1.3% 1.01x (?)
CharIteration_punctuated_unicodeScalars 34956 34781 -0.5% 1.01x (?)
CharIteration_punctuated_unicodeScalars_Backwards 64655 63836 -1.3% 1.01x
CharIteration_russian_unicodeScalars 129679 128665 -0.8% 1.01x (?)
CharIteration_russian_unicodeScalars_Backwards 242660 243253 +0.2% 1.00x (?)
CharIteration_tweet_unicodeScalars 336108 335294 -0.2% 1.00x (?)
CharIteration_tweet_unicodeScalars_Backwards 588780 584473 -0.7% 1.01x (?)
CharIteration_utf16_unicodeScalars 129397 130500 +0.9% 0.99x (?)
CharIteration_utf16_unicodeScalars_Backwards 248651 249165 +0.2% 1.00x (?)
CharacterLiteralsLarge 6052 6067 +0.2% 1.00x (?)
CharacterLiteralsSmall 746 711 -4.7% 1.05x
CharacterPropertiesFetch 5508 5484 -0.4% 1.00x (?)
CharacterPropertiesPrecomputed 4211 4299 +2.1% 0.98x (?)
CharacterPropertiesStashed 2299 2260 -1.7% 1.02x (?)
CharacterPropertiesStashedMemo 5022 4886 -2.7% 1.03x (?)
ClassArrayGetter 984 986 +0.2% 1.00x (?)
Combos 2168 2234 +3.0% 0.97x (?)
DictOfArraysToArrayOfDicts 3434 3377 -1.7% 1.02x (?)
Dictionary 2591 2632 +1.6% 0.98x (?)
Dictionary2 2889 2886 -0.1% 1.00x (?)
Dictionary2OfObjects 5541 5669 +2.3% 0.98x (?)
Dictionary3 1279 1279 +0.0% 1.00x
Dictionary3OfObjects 2266 2274 +0.4% 1.00x (?)
Dictionary4 1194 1185 -0.8% 1.01x (?)
Dictionary4OfObjects 1826 1894 +3.7% 0.96x
DictionaryBridge 2114 2106 -0.4% 1.00x (?)
DictionaryGroup 4242 4260 +0.4% 1.00x (?)
DictionaryGroupOfObjects 7814 7554 -3.3% 1.03x (?)
DictionaryLiteral 8481 8636 +1.8% 0.98x (?)
DictionaryOfObjects 6199 6365 +2.7% 0.97x
DictionaryRemove 18094 18267 +1.0% 0.99x
DictionaryRemoveOfObjects 49635 50203 +1.1% 0.99x (?)
DictionarySubscriptDefaultMutation 2105 2117 +0.6% 0.99x (?)
DictionarySubscriptDefaultMutationArray 2373 2375 +0.1% 1.00x (?)
DictionarySubscriptDefaultMutationArrayOfObjects 9154 9371 +2.4% 0.98x (?)
DictionarySubscriptDefaultMutationOfObjects 5695 5571 -2.2% 1.02x (?)
DictionarySwap 5296 5351 +1.0% 0.99x
DoubleWidthDivision 0 0 +0.0% 1.00x
DropFirstAnyCollection 13639 13586 -0.4% 1.00x
DropFirstAnyCollectionLazy 109407 104610 -4.4% 1.05x (?)
DropFirstAnySeqCRangeIter 20658 20390 -1.3% 1.01x
DropFirstAnySeqCRangeIterLazy 20372 20658 +1.4% 0.99x (?)
DropFirstAnySeqCntRange 13587 13712 +0.9% 0.99x
DropFirstAnySeqCntRangeLazy 13770 13710 -0.4% 1.00x (?)
DropFirstAnySequence 11067 10930 -1.2% 1.01x
DropFirstAnySequenceLazy 10869 10727 -1.3% 1.01x
DropFirstArray 3764 3788 +0.6% 0.99x
DropFirstArrayLazy 25393 25153 -0.9% 1.01x
DropFirstCountableRange 325 325 +0.0% 1.00x
DropFirstCountableRangeLazy 26178 25820 -1.4% 1.01x (?)
DropFirstSequence 10409 10454 +0.4% 1.00x (?)
DropFirstSequenceLazy 10563 10414 -1.4% 1.01x
DropLastAnyCollection 4566 4535 -0.7% 1.01x
DropLastAnyCollectionLazy 36475 35483 -2.7% 1.03x (?)
DropLastAnySeqCRangeIter 37707 37641 -0.2% 1.00x (?)
DropLastAnySeqCRangeIterLazy 37690 37632 -0.2% 1.00x (?)
DropLastAnySeqCntRange 4543 4540 -0.1% 1.00x (?)
DropLastAnySeqCntRangeLazy 4577 4555 -0.5% 1.00x (?)
DropLastAnySequence 28914 29043 +0.4% 1.00x (?)
DropLastAnySequenceLazy 28850 29100 +0.9% 0.99x (?)
DropLastCountableRange 112 112 +0.0% 1.00x
DropLastCountableRangeLazy 8727 8632 -1.1% 1.01x
DropLastSequence 29025 28935 -0.3% 1.00x (?)
DropLastSequenceLazy 28863 28893 +0.1% 1.00x (?)
DropWhileAnyCollection 17567 17433 -0.8% 1.01x
DropWhileAnyCollectionLazy 19062 19148 +0.5% 1.00x (?)
DropWhileAnySeqCRangeIter 21901 22168 +1.2% 0.99x
DropWhileAnySeqCRangeIterLazy 19118 19046 -0.4% 1.00x
DropWhileAnySeqCntRange 17452 17543 +0.5% 0.99x
DropWhileAnySeqCntRangeLazy 19039 18857 -1.0% 1.01x
DropWhileAnySequence 12425 12186 -1.9% 1.02x
DropWhileAnySequenceLazy 10125 10213 +0.9% 0.99x
DropWhileArrayLazy 13616 13697 +0.6% 0.99x (?)
DropWhileCountableRange 4167 4228 +1.5% 0.99x
DropWhileCountableRangeLazy 18551 18465 -0.5% 1.00x (?)
DropWhileSequence 12110 11977 -1.1% 1.01x
DropWhileSequenceLazy 9825 9759 -0.7% 1.01x
EqualStringSubstring 476 477 +0.2% 1.00x
EqualSubstringString 476 478 +0.4% 1.00x (?)
EqualSubstringSubstring 479 479 +0.0% 1.00x
EqualSubstringSubstringGenericEquatable 485 485 +0.0% 1.00x
ErrorHandling 7447 7099 -4.7% 1.05x (?)
ExclusivityIndependent 69 70 +1.4% 0.99x
FilterEvenUsingReduce 3710 3760 +1.3% 0.99x
FilterEvenUsingReduceInto 1968 1974 +0.3% 1.00x (?)
FrequenciesUsingReduce 10976 10967 -0.1% 1.00x (?)
FrequenciesUsingReduceInto 5627 5534 -1.7% 1.02x (?)
Hanoi 19587 20502 +4.7% 0.96x
HashTest 16658 16826 +1.0% 0.99x (?)
Histogram 6575 6578 +0.0% 1.00x (?)
Integrate 813 814 +0.1% 1.00x (?)
IterateData 7857 7699 -2.0% 1.02x
Join 1107 1104 -0.3% 1.00x (?)
LazilyFilteredArrayContains 779197 773439 -0.7% 1.01x
LazilyFilteredArrays 1480742 1455805 -1.7% 1.02x
LazilyFilteredRange 476063 476332 +0.1% 1.00x (?)
LessSubstringSubstring 477 479 +0.4% 1.00x (?)
LessSubstringSubstringGenericComparable 483 485 +0.4% 1.00x
LinkedList 32144 32083 -0.2% 1.00x (?)
LuhnAlgoEager 4979 5090 +2.2% 0.98x (?)
LuhnAlgoLazy 5032 5145 +2.2% 0.98x (?)
MapReduce 27118 27579 +1.7% 0.98x
MapReduceAnyCollection 27369 27366 -0.0% 1.00x (?)
MapReduceAnyCollectionShort 38333 38479 +0.4% 1.00x (?)
MapReduceClass 31973 31979 +0.0% 1.00x (?)
MapReduceClassShort 42442 42532 +0.2% 1.00x (?)
MapReduceLazyCollection 23463 23411 -0.2% 1.00x
MapReduceLazyCollectionShort 33131 33927 +2.4% 0.98x
MapReduceLazySequence 18096 18004 -0.5% 1.01x (?)
MapReduceSequence 30605 30598 -0.0% 1.00x (?)
MapReduceShort 37818 38329 +1.4% 0.99x (?)
MapReduceShortString 246 236 -4.1% 1.04x (?)
MapReduceString 1933 1929 -0.2% 1.00x (?)
Memset 44733 44779 +0.1% 1.00x
MonteCarloE 888979 894379 +0.6% 0.99x
MonteCarloPi 3880165 3894812 +0.4% 1.00x
NSError 719 714 -0.7% 1.01x (?)
NSStringConversion 369 363 -1.6% 1.02x
NibbleSort 298880 306107 +2.4% 0.98x
NopDeinit 163710 170892 +4.4% 0.96x
ObjectAllocation 1340 1360 +1.5% 0.99x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 8334 8581 +3.0% 0.97x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 34207 34741 +1.6% 0.98x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 131444 129046 -1.8% 1.02x (?)
ObjectiveCBridgeFromNSSetAnyObject 65795 65127 -1.0% 1.01x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 6400 6599 +3.1% 0.97x (?)
ObjectiveCBridgeFromNSSetAnyObjectToString 73638 74956 +1.8% 0.98x (?)
ObjectiveCBridgeFromNSStringForced 2670 2725 +2.1% 0.98x (?)
ObjectiveCBridgeStubDataAppend 4394 4406 +0.3% 1.00x (?)
ObjectiveCBridgeStubDateMutation 602 630 +4.7% 0.96x
ObjectiveCBridgeStubFromArrayOfNSString 26551 25754 -3.0% 1.03x (?)
ObjectiveCBridgeStubFromNSDate 4535 4336 -4.4% 1.05x
ObjectiveCBridgeStubFromNSString 902 927 +2.8% 0.97x (?)
ObjectiveCBridgeStubFromNSStringRef 199 196 -1.5% 1.02x (?)
ObjectiveCBridgeStubNSDataAppend 2955 2947 -0.3% 1.00x (?)
ObjectiveCBridgeStubNSDateMutationRef 15432 15909 +3.1% 0.97x (?)
ObjectiveCBridgeStubToArrayOfNSString 28922 29017 +0.3% 1.00x (?)
ObjectiveCBridgeStubToNSDate 15303 15817 +3.4% 0.97x (?)
ObjectiveCBridgeStubToNSDateRef 3451 3428 -0.7% 1.01x (?)
ObjectiveCBridgeStubToNSString 1574 1572 -0.1% 1.00x (?)
ObjectiveCBridgeStubToNSStringRef 159 153 -3.8% 1.04x
ObjectiveCBridgeStubURLAppendPath 326904 333635 +2.1% 0.98x (?)
ObjectiveCBridgeStubURLAppendPathRef 327798 336586 +2.7% 0.97x (?)
ObjectiveCBridgeToNSArray 29170 29353 +0.6% 0.99x (?)
ObjectiveCBridgeToNSDictionary 56159 57041 +1.6% 0.98x (?)
ObjectiveCBridgeToNSSet 47320 46140 -2.5% 1.03x (?)
ObjectiveCBridgeToNSString 1347 1345 -0.1% 1.00x (?)
ObserverClosure 6327 6323 -0.1% 1.00x (?)
ObserverForwarderStruct 4356 4380 +0.6% 0.99x (?)
ObserverPartiallyAppliedMethod 7780 7840 +0.8% 0.99x
ObserverUnappliedMethod 7923 7941 +0.2% 1.00x (?)
OpenClose 561 567 +1.1% 0.99x
PartialApplyDynamicType 40760 40191 -1.4% 1.01x (?)
Phonebook 20245 20906 +3.3% 0.97x
PointerArithmetics 120410 123162 +2.3% 0.98x (?)
PolymorphicCalls 6128 6384 +4.2% 0.96x (?)
PopFrontArray 4527 4554 +0.6% 0.99x (?)
PopFrontArrayGeneric 5716 5816 +1.7% 0.98x
PopFrontUnsafePointer 11272 11272 +0.0% 1.00x
PrefixAnyCollection 13646 13582 -0.5% 1.00x
PrefixAnySeqCRangeIter 16368 16650 +1.7% 0.98x
PrefixAnySeqCRangeIterLazy 16498 16416 -0.5% 1.00x (?)
PrefixAnySeqCntRange 13695 13431 -1.9% 1.02x
PrefixAnySeqCntRangeLazy 13739 13735 -0.0% 1.00x (?)
PrefixAnySequence 9346 9017 -3.5% 1.04x (?)
PrefixAnySequenceLazy 9169 9071 -1.1% 1.01x (?)
PrefixArray 3728 3786 +1.6% 0.98x
PrefixArrayLazy 25373 25099 -1.1% 1.01x (?)
PrefixCountableRange 325 325 +0.0% 1.00x
PrefixCountableRangeLazy 26176 25812 -1.4% 1.01x
PrefixSequence 8701 8850 +1.7% 0.98x (?)
PrefixSequenceLazy 8884 8817 -0.8% 1.01x (?)
PrefixWhileAnyCollection 25182 24979 -0.8% 1.01x
PrefixWhileAnyCollectionLazy 15813 16054 +1.5% 0.98x
PrefixWhileAnySeqCRangeIter 33235 33104 -0.4% 1.00x
PrefixWhileAnySeqCRangeIterLazy 16082 15785 -1.8% 1.02x
PrefixWhileAnySeqCntRange 25046 25137 +0.4% 1.00x
PrefixWhileAnySeqCntRangeLazy 15852 15805 -0.3% 1.00x (?)
PrefixWhileAnySequence 26424 26473 +0.2% 1.00x (?)
PrefixWhileAnySequenceLazy 9187 9162 -0.3% 1.00x (?)
PrefixWhileArray 11607 11504 -0.9% 1.01x
PrefixWhileArrayLazy 11980 12061 +0.7% 0.99x
PrefixWhileCountableRange 11833 11951 +1.0% 0.99x
PrefixWhileCountableRangeLazy 15670 15462 -1.3% 1.01x
PrefixWhileSequence 26161 26344 +0.7% 0.99x
PrefixWhileSequenceLazy 9051 8976 -0.8% 1.01x (?)
Prims 9599 9596 -0.0% 1.00x (?)
PrimsSplit 9662 9742 +0.8% 0.99x (?)
QueueConcrete 15342 15341 -0.0% 1.00x (?)
QueueGeneric 19067 19193 +0.7% 0.99x (?)
RC4 16796 17056 +1.5% 0.98x
RGBHistogram 26691 27396 +2.6% 0.97x (?)
RangeAssignment 2661 2738 +2.9% 0.97x
RangeIterationSigned 16723 16827 +0.6% 0.99x (?)
RangeIterationSigned64 39299 39207 -0.2% 1.00x (?)
RangeIterationUnsigned 34851 34940 +0.3% 1.00x (?)
RangeReplaceableCollectionPlusDefault 8004 8118 +1.4% 0.99x (?)
RecursiveOwnedParameter 7924 7885 -0.5% 1.00x (?)
ReversedArray 13126 12996 -1.0% 1.01x
ReversedBidirectional 42931 42665 -0.6% 1.01x (?)
ReversedDictionary 23141 23085 -0.2% 1.00x (?)
SetExclusiveOr 17357 17454 +0.6% 0.99x
SetIntersect 8225 8312 +1.1% 0.99x
SetIsSubsetOf 1340 1354 +1.0% 0.99x
SetIsSubsetOf_OfObjects 1551 1615 +4.1% 0.96x
SetUnion 11842 11980 +1.2% 0.99x
SevenBoom 1679 1676 -0.2% 1.00x (?)
Sim2DArray 43630 43571 -0.1% 1.00x (?)
SortLargeExistentials 15652 15789 +0.9% 0.99x
SortLettersInPlace 2815 2856 +1.5% 0.99x
SortSortedStrings 1316 1352 +2.7% 0.97x
SortStrings 2411 2481 +2.9% 0.97x (?)
SortStringsUnicode 16303 16437 +0.8% 0.99x
StackPromo 88467 88410 -0.1% 1.00x (?)
StaticArray 2658 2615 -1.6% 1.02x (?)
StrComplexWalk 6649 6654 +0.1% 1.00x (?)
StrToInt 57282 57088 -0.3% 1.00x (?)
StringAdder 4767 4723 -0.9% 1.01x
StringBuilder 6972 6901 -1.0% 1.01x (?)
StringBuilderLong 2752 2725 -1.0% 1.01x (?)
StringComparison_abnormal 1414 1423 +0.6% 0.99x (?)
StringComparison_ascii 9486 9558 +0.8% 0.99x
StringComparison_emoji 3796 3828 +0.8% 0.99x (?)
StringComparison_fastPrenormal 13106 13248 +1.1% 0.99x
StringComparison_latin1 9438 9683 +2.6% 0.97x
StringComparison_longSharedPrefix 13054 13271 +1.7% 0.98x
StringComparison_nonBMPSlowestPrenormal 6889 6950 +0.9% 0.99x (?)
StringComparison_slowerPrenormal 6733 6799 +1.0% 0.99x
StringComparison_zalgo 2840 2858 +0.6% 0.99x
StringEdits 329621 326739 -0.9% 1.01x (?)
StringEnumRawValueInitialization 20761 21174 +2.0% 0.98x
StringFromLongWholeSubstring 23 23 +0.0% 1.00x
StringFromLongWholeSubstringGeneric 201 200 -0.5% 1.00x
StringHasPrefixAscii 2950 3047 +3.3% 0.97x
StringHasPrefixUnicode 30946 31046 +0.3% 1.00x (?)
StringHasSuffixAscii 3070 3177 +3.5% 0.97x
StringHasSuffixUnicode 88325 88100 -0.3% 1.00x (?)
StringMatch 33105 33487 +1.2% 0.99x
StringRemoveDupes 1410 1417 +0.5% 1.00x (?)
StringUTF16Builder 7686 7827 +1.8% 0.98x (?)
StringWalk 12865 13139 +2.1% 0.98x
StringWithCString 37711 39615 +5.0% 0.95x
StringWordBuilder 2505 2518 +0.5% 0.99x (?)
StringWordBuilderReservingCapacity 2166 2181 +0.7% 0.99x (?)
SubstringComparable 4130 4189 +1.4% 0.99x
SubstringEqualString 3542 3550 +0.2% 1.00x (?)
SubstringEquatable 7750 7754 +0.1% 1.00x (?)
SubstringFromLongString 24 24 +0.0% 1.00x
SubstringFromLongStringGeneric 106 105 -0.9% 1.01x (?)
SuffixAnyCollection 4570 4552 -0.4% 1.00x (?)
SuffixAnyCollectionLazy 36961 35517 -3.9% 1.04x (?)
SuffixAnySeqCRangeIter 33675 33805 +0.4% 1.00x (?)
SuffixAnySeqCRangeIterLazy 33631 33557 -0.2% 1.00x (?)
SuffixAnySeqCntRange 4559 4534 -0.5% 1.01x
SuffixAnySeqCntRangeLazy 4583 4592 +0.2% 1.00x (?)
SuffixAnySequence 25165 25204 +0.2% 1.00x (?)
SuffixAnySequenceLazy 25004 25059 +0.2% 1.00x (?)
SuffixCountableRange 111 112 +0.9% 0.99x
SuffixCountableRangeLazy 8727 8608 -1.4% 1.01x (?)
SuffixSequence 25179 25015 -0.7% 1.01x (?)
SuffixSequenceLazy 24907 25003 +0.4% 1.00x
SumUsingReduce 170286 170349 +0.0% 1.00x (?)
SumUsingReduceInto 166702 165979 -0.4% 1.00x
SuperChars 213712 217043 +1.6% 0.98x (?)
TwoSum 3878 3955 +2.0% 0.98x
TypeFlood 156 161 +3.2% 0.97x (?)
UTF8Decode 30057 30003 -0.2% 1.00x
Walsh 12016 12016 +0.0% 1.00x
WordCountHistogramASCII 48156 48863 +1.5% 0.99x
WordCountHistogramUTF16 102699 103125 +0.4% 1.00x (?)
WordCountUniqueASCII 8007 8077 +0.9% 0.99x
WordCountUniqueUTF16 34094 32604 -4.4% 1.05x (?)
WordSplitASCII 25926 25267 -2.5% 1.03x (?)
WordSplitUTF16 27365 26596 -2.8% 1.03x (?)
XorLoop 23370 23363 -0.0% 1.00x (?)
Hardware Overview
  Model Name: Mac Pro
  Model Identifier: MacPro6,1
  Processor Name: 12-Core Intel Xeon E5
  Processor Speed: 2.7 GHz
  Number of Processors: 1
  Total Number of Cores: 12
  L2 Cache (per Core): 256 KB
  L3 Cache: 30 MB
  Memory: 64 GB

@lorentey
Copy link
Member Author

Very good! We're down to +40% on synthetic microbenchmarks.

@lorentey
Copy link
Member Author

The latest commit should have equivalent or better performance, while hopefully also giving a boost to #14511's benchmarks. (This also enables us to remove the size of the hash state from the ABI.)

@lorentey
Copy link
Member Author

@swift-ci please benchmark

var hasher = _Hasher(_inlineable: ())
return withUnsafeMutablePointer(to: &hasher) { p in
return _UnsafeHasher(p).appending(value).finalized()
}
Copy link
Member Author

Choose a reason for hiding this comment

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

@swift-ci
Copy link
Contributor

Build comment file:

Build failed before running benchmark.


@lorentey
Copy link
Member Author

@swift-ci please benchmark

@swift-ci
Copy link
Contributor

Build comment file:

Optimized (O)

Regression (51)
TEST OLD NEW DELTA SPEEDUP
SetIntersect 331 1829 +452.6% 0.18x
DictionarySwap 480 2302 +379.6% 0.21x
Histogram 328 1477 +350.3% 0.22x
DictionarySubscriptDefaultMutation 151 510 +237.7% 0.30x
DictionaryGroup 132 370 +180.3% 0.36x
Dictionary4OfObjects 205 568 +177.1% 0.36x
DictionaryRemove 2744 7358 +168.1% 0.37x
ReversedDictionary 125 307 +145.6% 0.41x
SetIntersect_OfObjects 1760 3977 +126.0% 0.44x
SetExclusiveOr 3483 7704 +121.2% 0.45x
Dictionary3 235 505 +114.9% 0.47x
Dictionary4 147 297 +102.0% 0.49x
RGBHistogram 2970 5592 +88.3% 0.53x
SetUnion 3128 5633 +80.1% 0.56x
SetIsSubsetOf_OfObjects 366 655 +79.0% 0.56x
SetExclusiveOr_OfObjects 8885 15873 +78.6% 0.56x
TwoSum 1013 1806 +78.3% 0.56x
DictionarySubscriptDefaultMutationArray 495 882 +78.2% 0.56x
SetUnion_OfObjects 7256 12010 +65.5% 0.60x
SetIsSubsetOf 299 476 +59.2% 0.63x
Dictionary 499 789 +58.1% 0.63x
DictionaryLiteral 1604 2516 +56.9% 0.64x
Sim2DArray 413 618 +49.6% 0.67x
WordCountUniqueASCII 1760 2560 +45.5% 0.69x
CharacterPropertiesPrecomputed 1067 1544 +44.7% 0.69x
DictionarySwapOfObjects 7378 10659 +44.5% 0.69x
CharacterPropertiesStashedMemo 1617 2223 +37.5% 0.73x
DictionarySubscriptDefaultMutationOfObjects 1383 1866 +34.9% 0.74x
PrimsSplit 758 987 +30.2% 0.77x
Prims 760 987 +29.9% 0.77x
Dictionary3OfObjects 675 865 +28.1% 0.78x
DictionaryGroupOfObjects 1925 2463 +27.9% 0.78x
RGBHistogramOfObjects 23932 30599 +27.9% 0.78x
StaticArray 5 6 +20.0% 0.83x
Dictionary2 1614 1876 +16.2% 0.86x
DictionaryRemoveOfObjects 23633 27153 +14.9% 0.87x
DictionaryOfObjects 2183 2492 +14.2% 0.88x
DictionarySubscriptDefaultMutationArrayOfObjects 3831 4300 +12.2% 0.89x
WordCountHistogramASCII 7963 8859 +11.3% 0.90x
DropLastCountableRangeLazy 11 12 +9.1% 0.92x
StringWordBuilderReservingCapacity 1270 1377 +8.4% 0.92x
Dictionary2OfObjects 2959 3207 +8.4% 0.92x
StringWordBuilder 1704 1843 +8.2% 0.92x
DictOfArraysToArrayOfDicts 791 855 +8.1% 0.93x (?)
DropLastSequence 639 686 +7.4% 0.93x
WordCountUniqueUTF16 21657 23238 +7.3% 0.93x (?)
DropLastSequenceLazy 640 686 +7.2% 0.93x
NopDeinit 21570 23065 +6.9% 0.94x
StringEdits 120462 128484 +6.7% 0.94x (?)
WordCountHistogramUTF16 51643 54506 +5.5% 0.95x (?)
NibbleSort 3959 4170 +5.3% 0.95x
Improvement (7)
TEST OLD NEW DELTA SPEEDUP
Chars 1033 910 -11.9% 1.14x
DropLastCountableRange 12 11 -8.3% 1.09x
MapReduceLazyCollectionShort 37 34 -8.1% 1.09x
MapReduceAnyCollection 398 370 -7.0% 1.08x (?)
SortSortedStrings 1183 1118 -5.5% 1.06x
ArrayAppendReserved 802 760 -5.2% 1.06x
ObjectiveCBridgeFromNSArrayAnyObject 20620 19611 -4.9% 1.05x (?)
No Changes (304)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 3645 3652 +0.2% 1.00x (?)
AnyHashableWithAClass 68562 69324 +1.1% 0.99x (?)
Array2D 2526 2523 -0.1% 1.00x (?)
ArrayAppend 1064 1032 -3.0% 1.03x
ArrayAppendArrayOfInt 796 795 -0.1% 1.00x (?)
ArrayAppendAscii 13689 13606 -0.6% 1.01x
ArrayAppendFromGeneric 800 798 -0.2% 1.00x (?)
ArrayAppendGenericStructs 1428 1423 -0.4% 1.00x (?)
ArrayAppendLatin1 38432 38360 -0.2% 1.00x (?)
ArrayAppendLazyMap 1341 1340 -0.1% 1.00x (?)
ArrayAppendOptionals 1429 1406 -1.6% 1.02x (?)
ArrayAppendRepeatCol 1338 1339 +0.1% 1.00x (?)
ArrayAppendSequence 1135 1130 -0.4% 1.00x (?)
ArrayAppendStrings 15283 15255 -0.2% 1.00x (?)
ArrayAppendToFromGeneric 799 798 -0.1% 1.00x (?)
ArrayAppendToGeneric 799 799 +0.0% 1.00x
ArrayAppendUTF16 37275 37709 +1.2% 0.99x (?)
ArrayInClass 85 85 +0.0% 1.00x
ArrayLiteral 0 0 +0.0% 1.00x
ArrayOfGenericPOD2 148 150 +1.4% 0.99x (?)
ArrayOfGenericRef 4362 4391 +0.7% 0.99x (?)
ArrayOfPOD 183 183 +0.0% 1.00x
ArrayOfRef 4336 4345 +0.2% 1.00x (?)
ArrayPlusEqualArrayOfInt 795 799 +0.5% 0.99x (?)
ArrayPlusEqualFiveElementCollection 5672 5505 -2.9% 1.03x
ArrayPlusEqualSingleElementCollection 1070 1021 -4.6% 1.05x
ArrayPlusEqualThreeElements 1659 1655 -0.2% 1.00x (?)
ArraySubscript 1515 1522 +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
BinaryFloatingPointConversionFromBinaryInteger 37 38 +2.7% 0.97x
BitCount 211 211 +0.0% 1.00x
ByteSwap 98 98 +0.0% 1.00x
COWTree 3718 3660 -1.6% 1.02x (?)
CSVParsing 834397 830721 -0.4% 1.00x (?)
CSVParsingAlt 727260 723719 -0.5% 1.00x (?)
CSVParsingAltIndices 357424 355847 -0.4% 1.00x (?)
CStringLongAscii 4771 4777 +0.1% 1.00x (?)
CStringLongNonAscii 2073 2150 +3.7% 0.96x (?)
CStringShortAscii 4701 4765 +1.4% 0.99x (?)
Calculator 442 430 -2.7% 1.03x
CaptureProp 8878 9164 +3.2% 0.97x
CharIndexing_ascii_unicodeScalars 15813 15820 +0.0% 1.00x (?)
CharIndexing_ascii_unicodeScalars_Backwards 14417 14428 +0.1% 1.00x (?)
CharIndexing_chinese_unicodeScalars 11985 11987 +0.0% 1.00x (?)
CharIndexing_chinese_unicodeScalars_Backwards 10927 10937 +0.1% 1.00x (?)
CharIndexing_japanese_unicodeScalars 18927 18941 +0.1% 1.00x (?)
CharIndexing_japanese_unicodeScalars_Backwards 17249 17257 +0.0% 1.00x (?)
CharIndexing_korean_unicodeScalars 15337 15351 +0.1% 1.00x (?)
CharIndexing_korean_unicodeScalars_Backwards 13980 13988 +0.1% 1.00x (?)
CharIndexing_punctuatedJapanese_unicodeScalars 2870 2884 +0.5% 1.00x (?)
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 2643 2654 +0.4% 1.00x (?)
CharIndexing_punctuated_unicodeScalars 3593 3601 +0.2% 1.00x (?)
CharIndexing_punctuated_unicodeScalars_Backwards 3296 3305 +0.3% 1.00x (?)
CharIndexing_russian_unicodeScalars 13183 13187 +0.0% 1.00x (?)
CharIndexing_russian_unicodeScalars_Backwards 12018 12024 +0.0% 1.00x (?)
CharIndexing_tweet_unicodeScalars 31568 31540 -0.1% 1.00x (?)
CharIndexing_tweet_unicodeScalars_Backwards 28532 28529 -0.0% 1.00x (?)
CharIndexing_utf16_unicodeScalars 20873 20832 -0.2% 1.00x (?)
CharIndexing_utf16_unicodeScalars_Backwards 21558 21375 -0.8% 1.01x (?)
CharIteration_ascii_unicodeScalars 20573 21087 +2.5% 0.98x
CharIteration_ascii_unicodeScalars_Backwards 14259 14260 +0.0% 1.00x (?)
CharIteration_chinese_unicodeScalars 15553 15922 +2.4% 0.98x
CharIteration_chinese_unicodeScalars_Backwards 10816 10802 -0.1% 1.00x (?)
CharIteration_japanese_unicodeScalars 24670 25226 +2.3% 0.98x
CharIteration_japanese_unicodeScalars_Backwards 17062 17055 -0.0% 1.00x (?)
CharIteration_korean_unicodeScalars 19948 20456 +2.5% 0.98x
CharIteration_korean_unicodeScalars_Backwards 13827 13825 -0.0% 1.00x (?)
CharIteration_punctuatedJapanese_unicodeScalars 3690 3771 +2.2% 0.98x
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 2616 2611 -0.2% 1.00x (?)
CharIteration_punctuated_unicodeScalars 4626 4742 +2.5% 0.98x
CharIteration_punctuated_unicodeScalars_Backwards 3265 3260 -0.2% 1.00x (?)
CharIteration_russian_unicodeScalars 17129 17554 +2.5% 0.98x
CharIteration_russian_unicodeScalars_Backwards 11889 11886 -0.0% 1.00x (?)
CharIteration_tweet_unicodeScalars 40725 41609 +2.2% 0.98x
CharIteration_tweet_unicodeScalars_Backwards 28132 28128 -0.0% 1.00x (?)
CharIteration_utf16_unicodeScalars 27436 27371 -0.2% 1.00x (?)
CharIteration_utf16_unicodeScalars_Backwards 17934 17958 +0.1% 1.00x (?)
CharacterLiteralsLarge 6117 6113 -0.1% 1.00x (?)
CharacterLiteralsSmall 412 411 -0.2% 1.00x (?)
CharacterPropertiesFetch 4592 4587 -0.1% 1.00x (?)
CharacterPropertiesStashed 1646 1638 -0.5% 1.00x (?)
ClassArrayGetter 15 15 +0.0% 1.00x
Combos 451 450 -0.2% 1.00x (?)
DictionaryBridge 2004 1979 -1.2% 1.01x (?)
DoubleWidthDivision 0 0 +0.0% 1.00x
DropFirstAnyCollection 76 76 +0.0% 1.00x
DropFirstAnyCollectionLazy 64991 64282 -1.1% 1.01x (?)
DropFirstAnySeqCRangeIter 163 163 +0.0% 1.00x
DropFirstAnySeqCRangeIterLazy 163 163 +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 2708 2707 -0.0% 1.00x (?)
DropFirstSequenceLazy 2786 2785 -0.0% 1.00x (?)
DropLastAnyCollection 28 28 +0.0% 1.00x
DropLastAnyCollectionLazy 21707 21692 -0.1% 1.00x (?)
DropLastAnySeqCRangeIter 3533 3531 -0.1% 1.00x (?)
DropLastAnySeqCRangeIterLazy 3540 3527 -0.4% 1.00x (?)
DropLastAnySeqCntRange 23 23 +0.0% 1.00x
DropLastAnySeqCntRangeLazy 23 23 +0.0% 1.00x
DropLastAnySequence 5093 5147 +1.1% 0.99x (?)
DropLastAnySequenceLazy 5237 5257 +0.4% 1.00x (?)
DropWhileAnyCollection 100 99 -1.0% 1.01x
DropWhileAnyCollectionLazy 153 153 +0.0% 1.00x
DropWhileAnySeqCRangeIter 157 157 +0.0% 1.00x
DropWhileAnySeqCRangeIterLazy 153 153 +0.0% 1.00x
DropWhileAnySeqCntRange 95 95 +0.0% 1.00x
DropWhileAnySeqCntRangeLazy 153 153 +0.0% 1.00x
DropWhileAnySequence 1860 1859 -0.1% 1.00x (?)
DropWhileAnySequenceLazy 1855 1855 +0.0% 1.00x
DropWhileArrayLazy 129 129 +0.0% 1.00x
DropWhileCountableRange 36 36 +0.0% 1.00x
DropWhileCountableRangeLazy 111 111 +0.0% 1.00x
DropWhileSequence 1340 1340 +0.0% 1.00x
DropWhileSequenceLazy 88 88 +0.0% 1.00x
EqualStringSubstring 431 432 +0.2% 1.00x (?)
EqualSubstringString 431 432 +0.2% 1.00x (?)
EqualSubstringSubstring 431 432 +0.2% 1.00x (?)
EqualSubstringSubstringGenericEquatable 430 432 +0.5% 1.00x (?)
ErrorHandling 2307 2326 +0.8% 0.99x (?)
ExclusivityGlobal 5 5 +0.0% 1.00x
ExclusivityIndependent 2 2 +0.0% 1.00x
FilterEvenUsingReduce 1307 1310 +0.2% 1.00x (?)
FilterEvenUsingReduceInto 148 149 +0.7% 0.99x (?)
FrequenciesUsingReduce 6818 6872 +0.8% 0.99x (?)
FrequenciesUsingReduceInto 3178 3193 +0.5% 1.00x (?)
Hanoi 3491 3342 -4.3% 1.04x
HashTest 1769 1755 -0.8% 1.01x (?)
Integrate 217 217 +0.0% 1.00x
IterateData 1429 1379 -3.5% 1.04x
Join 370 370 +0.0% 1.00x
LazilyFilteredArrayContains 36669 37459 +2.2% 0.98x (?)
LazilyFilteredArrays 64986 64885 -0.2% 1.00x (?)
LazilyFilteredRange 3827 4018 +5.0% 0.95x
LessSubstringSubstring 431 432 +0.2% 1.00x (?)
LessSubstringSubstringGenericComparable 430 432 +0.5% 1.00x (?)
LinkedList 7593 7555 -0.5% 1.01x (?)
LuhnAlgoEager 593 592 -0.2% 1.00x (?)
LuhnAlgoLazy 592 590 -0.3% 1.00x (?)
MapReduce 399 398 -0.3% 1.00x (?)
MapReduceAnyCollectionShort 2046 2101 +2.7% 0.97x (?)
MapReduceClass 3032 3034 +0.1% 1.00x (?)
MapReduceClassShort 4593 4595 +0.0% 1.00x (?)
MapReduceLazyCollection 13 13 +0.0% 1.00x
MapReduceLazySequence 86 86 +0.0% 1.00x
MapReduceSequence 457 449 -1.8% 1.02x (?)
MapReduceShort 2029 2055 +1.3% 0.99x (?)
MapReduceShortString 21 21 +0.0% 1.00x
MapReduceString 83 80 -3.6% 1.04x (?)
Memset 215 214 -0.5% 1.00x (?)
MonteCarloE 10268 10530 +2.6% 0.98x
MonteCarloPi 42899 42875 -0.1% 1.00x (?)
NSDictionaryCastToSwift 5238 5290 +1.0% 0.99x (?)
NSError 304 297 -2.3% 1.02x (?)
NSStringConversion 315 309 -1.9% 1.02x (?)
ObjectAllocation 182 183 +0.5% 0.99x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 4089 3914 -4.3% 1.04x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 37086 37178 +0.2% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 33984 32708 -3.8% 1.04x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 117815 121645 +3.3% 0.97x (?)
ObjectiveCBridgeFromNSSetAnyObject 59019 59184 +0.3% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 4262 4153 -2.6% 1.03x (?)
ObjectiveCBridgeFromNSSetAnyObjectToString 67681 68383 +1.0% 0.99x (?)
ObjectiveCBridgeFromNSString 1266 1278 +0.9% 0.99x (?)
ObjectiveCBridgeFromNSStringForced 2360 2370 +0.4% 1.00x (?)
ObjectiveCBridgeStubDataAppend 3989 3862 -3.2% 1.03x (?)
ObjectiveCBridgeStubDateMutation 257 257 +0.0% 1.00x
ObjectiveCBridgeStubFromArrayOfNSString 25988 25640 -1.3% 1.01x (?)
ObjectiveCBridgeStubFromNSDate 4188 4132 -1.3% 1.01x (?)
ObjectiveCBridgeStubFromNSString 867 837 -3.5% 1.04x (?)
ObjectiveCBridgeStubFromNSStringRef 156 158 +1.3% 0.99x
ObjectiveCBridgeStubNSDataAppend 2481 2494 +0.5% 0.99x (?)
ObjectiveCBridgeStubNSDateMutationRef 13138 12568 -4.3% 1.05x (?)
ObjectiveCBridgeStubToArrayOfNSString 29074 29074 +0.0% 1.00x
ObjectiveCBridgeStubToNSDate 15126 14643 -3.2% 1.03x (?)
ObjectiveCBridgeStubToNSDateRef 3414 3417 +0.1% 1.00x (?)
ObjectiveCBridgeStubToNSString 1541 1540 -0.1% 1.00x (?)
ObjectiveCBridgeStubToNSStringRef 112 112 +0.0% 1.00x
ObjectiveCBridgeStubURLAppendPath 322786 322581 -0.1% 1.00x (?)
ObjectiveCBridgeStubURLAppendPathRef 330153 325035 -1.6% 1.02x (?)
ObjectiveCBridgeToNSArray 28766 28983 +0.8% 0.99x (?)
ObjectiveCBridgeToNSDictionary 52061 53260 +2.3% 0.98x (?)
ObjectiveCBridgeToNSSet 44737 44365 -0.8% 1.01x (?)
ObjectiveCBridgeToNSString 1313 1314 +0.1% 1.00x (?)
ObserverClosure 2165 2155 -0.5% 1.00x (?)
ObserverForwarderStruct 996 988 -0.8% 1.01x (?)
ObserverPartiallyAppliedMethod 3755 3704 -1.4% 1.01x
ObserverUnappliedMethod 2368 2383 +0.6% 0.99x (?)
OpenClose 254 257 +1.2% 0.99x
PartialApplyDynamicType 0 0 +0.0% 1.00x
Phonebook 4098 4058 -1.0% 1.01x
PointerArithmetics 34370 34361 -0.0% 1.00x (?)
PolymorphicCalls 25 25 +0.0% 1.00x
PopFrontArray 1916 1858 -3.0% 1.03x (?)
PopFrontArrayGeneric 1956 1961 +0.3% 1.00x (?)
PopFrontUnsafePointer 8997 8748 -2.8% 1.03x (?)
PrefixAnyCollection 76 76 +0.0% 1.00x
PrefixAnyCollectionLazy 65073 65027 -0.1% 1.00x (?)
PrefixAnySeqCRangeIter 128 128 +0.0% 1.00x
PrefixAnySeqCRangeIterLazy 128 128 +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 1377 1377 +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 1328 1325 -0.2% 1.00x (?)
PrefixSequenceLazy 1427 1421 -0.4% 1.00x (?)
PrefixWhileAnyCollection 146 147 +0.7% 0.99x (?)
PrefixWhileAnyCollectionLazy 106 106 +0.0% 1.00x
PrefixWhileAnySeqCRangeIter 414 415 +0.2% 1.00x (?)
PrefixWhileAnySeqCRangeIterLazy 106 106 +0.0% 1.00x
PrefixWhileAnySeqCntRange 142 142 +0.0% 1.00x
PrefixWhileAnySeqCntRangeLazy 106 106 +0.0% 1.00x
PrefixWhileAnySequence 1538 1539 +0.1% 1.00x (?)
PrefixWhileAnySequenceLazy 1391 1391 +0.0% 1.00x
PrefixWhileArray 88 88 +0.0% 1.00x
PrefixWhileArrayLazy 70 70 +0.0% 1.00x
PrefixWhileCountableRange 53 53 +0.0% 1.00x
PrefixWhileCountableRangeLazy 35 35 +0.0% 1.00x
PrefixWhileSequence 358 356 -0.6% 1.01x (?)
PrefixWhileSequenceLazy 52 52 +0.0% 1.00x
QueueConcrete 1310 1311 +0.1% 1.00x (?)
QueueGeneric 1158 1159 +0.1% 1.00x (?)
RC4 166 166 +0.0% 1.00x
RangeAssignment 351 351 +0.0% 1.00x
RangeIterationSigned 171 171 +0.0% 1.00x
RangeIterationSigned64 200 200 +0.0% 1.00x
RangeIterationUnsigned 200 200 +0.0% 1.00x
RangeReplaceableCollectionPlusDefault 979 982 +0.3% 1.00x (?)
RecursiveOwnedParameter 2374 2401 +1.1% 0.99x
ReversedArray 57 57 +0.0% 1.00x
ReversedBidirectional 15382 15257 -0.8% 1.01x (?)
RomanNumbers 115560 114816 -0.6% 1.01x (?)
SevenBoom 1507 1523 +1.1% 0.99x (?)
SortLargeExistentials 7017 7009 -0.1% 1.00x (?)
SortLettersInPlace 1157 1156 -0.1% 1.00x (?)
SortStrings 2062 1966 -4.7% 1.05x
SortStringsUnicode 15374 15589 +1.4% 0.99x (?)
StackPromo 22024 22009 -0.1% 1.00x (?)
StrComplexWalk 1565 1563 -0.1% 1.00x (?)
StrToInt 2109 2106 -0.1% 1.00x (?)
StringAdder 4258 4255 -0.1% 1.00x (?)
StringBuilder 1448 1438 -0.7% 1.01x (?)
StringBuilderLong 1088 1072 -1.5% 1.01x (?)
StringComparison_abnormal 857 861 +0.5% 1.00x (?)
StringComparison_ascii 976 944 -3.3% 1.03x
StringComparison_emoji 2542 2552 +0.4% 1.00x (?)
StringComparison_fastPrenormal 8722 8743 +0.2% 1.00x (?)
StringComparison_latin1 5964 5988 +0.4% 1.00x (?)
StringComparison_longSharedPrefix 11504 11530 +0.2% 1.00x (?)
StringComparison_nonBMPSlowestPrenormal 4675 4697 +0.5% 1.00x (?)
StringComparison_slowerPrenormal 4169 4196 +0.6% 0.99x (?)
StringComparison_zalgo 1717 1736 +1.1% 0.99x (?)
StringEnumRawValueInitialization 1002 1031 +2.9% 0.97x
StringEqualPointerComparison 286 286 +0.0% 1.00x
StringFromLongWholeSubstring 21 21 +0.0% 1.00x
StringFromLongWholeSubstringGeneric 10 10 +0.0% 1.00x
StringHasPrefixAscii 1603 1574 -1.8% 1.02x
StringHasPrefixUnicode 28248 28328 +0.3% 1.00x (?)
StringHasSuffixAscii 1717 1689 -1.6% 1.02x
StringHasSuffixUnicode 85198 85390 +0.2% 1.00x (?)
StringInterpolation 10863 10780 -0.8% 1.01x (?)
StringMatch 7330 7296 -0.5% 1.00x (?)
StringRemoveDupes 1199 1211 +1.0% 0.99x (?)
StringUTF16Builder 2406 2381 -1.0% 1.01x (?)
StringWalk 1458 1455 -0.2% 1.00x (?)
StringWithCString 42986 43021 +0.1% 1.00x (?)
SubstringComparable 2056 2082 +1.3% 0.99x
SubstringEqualString 2124 2120 -0.2% 1.00x (?)
SubstringEquatable 3151 3183 +1.0% 0.99x (?)
SubstringFromLongString 10 10 +0.0% 1.00x
SubstringFromLongStringGeneric 70 69 -1.4% 1.01x (?)
SuffixAnyCollection 28 28 +0.0% 1.00x
SuffixAnyCollectionLazy 21725 21468 -1.2% 1.01x (?)
SuffixAnySeqCRangeIter 3824 3809 -0.4% 1.00x (?)
SuffixAnySeqCRangeIterLazy 3818 3816 -0.1% 1.00x (?)
SuffixAnySeqCntRange 23 23 +0.0% 1.00x
SuffixAnySeqCntRangeLazy 23 23 +0.0% 1.00x
SuffixAnySequence 5115 5150 +0.7% 0.99x (?)
SuffixAnySequenceLazy 5229 5248 +0.4% 1.00x (?)
SuffixCountableRange 11 11 +0.0% 1.00x
SuffixCountableRangeLazy 11 11 +0.0% 1.00x
SuffixSequence 3747 3724 -0.6% 1.01x (?)
SuffixSequenceLazy 3754 3731 -0.6% 1.01x (?)
SumUsingReduce 102 99 -2.9% 1.03x
SumUsingReduceInto 102 102 +0.0% 1.00x
SuperChars 42769 42066 -1.6% 1.02x (?)
TypeFlood 0 0 +0.0% 1.00x
UTF8Decode 340 329 -3.2% 1.03x
Walsh 437 428 -2.1% 1.02x
WordSplitASCII 21085 21057 -0.1% 1.00x (?)
WordSplitUTF16 21919 22067 +0.7% 0.99x (?)
XorLoop 394 394 +0.0% 1.00x

Unoptimized (Onone)

Regression (15)
TEST OLD NEW DELTA SPEEDUP
RGBHistogramOfObjects 96339 109371 +13.5% 0.88x
WordCountUniqueUTF16 31591 34856 +10.3% 0.91x (?)
SetExclusiveOr_OfObjects 41695 45820 +9.9% 0.91x
PointerArithmetics 112697 123147 +9.3% 0.92x (?)
CStringLongNonAscii 2070 2261 +9.2% 0.92x
ArrayAppendUTF16 64272 70169 +9.2% 0.92x (?)
SetUnion_OfObjects 28931 31532 +9.0% 0.92x
ArrayAppendLatin1 63667 68981 +8.3% 0.92x
PopFrontArray 4531 4872 +7.5% 0.93x (?)
RangeAssignment 2696 2887 +7.1% 0.93x
ExclusivityGlobal 183 194 +6.0% 0.94x
CharIndexing_punctuated_unicodeScalars_Backwards 94549 100066 +5.8% 0.94x (?)
Memset 44706 47156 +5.5% 0.95x
SetIntersect_OfObjects 12221 12884 +5.4% 0.95x (?)
ArraySubscript 81630 85993 +5.3% 0.95x
Improvement (18)
TEST OLD NEW DELTA SPEEDUP
DictionarySwapOfObjects 23410 19311 -17.5% 1.21x
CharIndexing_korean_unicodeScalars 396255 346060 -12.7% 1.15x (?)
StringEdits 344830 309179 -10.3% 1.12x (?)
DropWhileAnySeqCRangeIter 24777 22228 -10.3% 1.11x (?)
CharIndexing_chinese_unicodeScalars 301340 270581 -10.2% 1.11x (?)
PrefixAnySeqCRangeIterLazy 18336 16629 -9.3% 1.10x
PrefixAnySeqCRangeIter 18187 16577 -8.9% 1.10x
CharIndexing_tweet_unicodeScalars 772310 713855 -7.6% 1.08x (?)
SubstringFromLongStringGeneric 110 102 -7.3% 1.08x
DropFirstAnySeqCRangeIterLazy 22322 20714 -7.2% 1.08x (?)
DropFirstAnySeqCRangeIter 22141 20669 -6.6% 1.07x
RomanNumbers 1237367 1157494 -6.5% 1.07x
ObjectiveCBridgeStubToNSDate 16428 15376 -6.4% 1.07x (?)
StackPromo 95644 89627 -6.3% 1.07x (?)
ArrayPlusEqualThreeElements 9759 9166 -6.1% 1.06x (?)
ErrorHandling 7619 7203 -5.5% 1.06x (?)
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 59883 56637 -5.4% 1.06x (?)
StringWithCString 39432 37542 -4.8% 1.05x
No Changes (329)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 5092 5101 +0.2% 1.00x (?)
AnyHashableWithAClass 85584 86643 +1.2% 0.99x
Array2D 632640 633321 +0.1% 1.00x (?)
ArrayAppend 4553 4556 +0.1% 1.00x (?)
ArrayAppendArrayOfInt 863 862 -0.1% 1.00x (?)
ArrayAppendAscii 40516 40192 -0.8% 1.01x
ArrayAppendFromGeneric 865 864 -0.1% 1.00x (?)
ArrayAppendGenericStructs 1504 1491 -0.9% 1.01x (?)
ArrayAppendLazyMap 168094 167651 -0.3% 1.00x
ArrayAppendOptionals 1486 1498 +0.8% 0.99x (?)
ArrayAppendRepeatCol 173670 176673 +1.7% 0.98x
ArrayAppendReserved 4168 4164 -0.1% 1.00x (?)
ArrayAppendSequence 140674 142601 +1.4% 0.99x
ArrayAppendStrings 15428 15427 -0.0% 1.00x (?)
ArrayAppendToFromGeneric 863 861 -0.2% 1.00x (?)
ArrayAppendToGeneric 868 866 -0.2% 1.00x (?)
ArrayInClass 6188 6160 -0.5% 1.00x (?)
ArrayLiteral 1780 1790 +0.6% 0.99x
ArrayOfGenericPOD2 1128 1129 +0.1% 1.00x (?)
ArrayOfGenericRef 10082 10113 +0.3% 1.00x (?)
ArrayOfPOD 841 842 +0.1% 1.00x (?)
ArrayOfRef 9410 9343 -0.7% 1.01x (?)
ArrayPlusEqualArrayOfInt 864 859 -0.6% 1.01x (?)
ArrayPlusEqualFiveElementCollection 233553 232420 -0.5% 1.00x (?)
ArrayPlusEqualSingleElementCollection 230793 230006 -0.3% 1.00x (?)
ArrayValueProp 3622 3647 +0.7% 0.99x (?)
ArrayValueProp2 16071 16096 +0.2% 1.00x (?)
ArrayValueProp3 4137 4140 +0.1% 1.00x (?)
ArrayValueProp4 4076 4084 +0.2% 1.00x (?)
BinaryFloatingPointConversionFromBinaryInteger 6011 6036 +0.4% 1.00x (?)
BitCount 2209 2265 +2.5% 0.98x
ByteSwap 3940 3947 +0.2% 1.00x (?)
COWTree 11624 11521 -0.9% 1.01x (?)
CSVParsing 2472317 2494182 +0.9% 0.99x (?)
CSVParsingAlt 1332676 1314623 -1.4% 1.01x (?)
CSVParsingAltIndices 2530866 2491348 -1.6% 1.02x (?)
CStringLongAscii 4769 4607 -3.4% 1.04x
CStringShortAscii 7761 7731 -0.4% 1.00x (?)
Calculator 1598 1650 +3.3% 0.97x
CaptureProp 254872 256495 +0.6% 0.99x (?)
CharIndexing_ascii_unicodeScalars 352710 356363 +1.0% 0.99x (?)
CharIndexing_ascii_unicodeScalars_Backwards 427306 433528 +1.5% 0.99x (?)
CharIndexing_chinese_unicodeScalars_Backwards 327435 322098 -1.6% 1.02x (?)
CharIndexing_japanese_unicodeScalars 430062 427343 -0.6% 1.01x (?)
CharIndexing_japanese_unicodeScalars_Backwards 533798 521922 -2.2% 1.02x (?)
CharIndexing_korean_unicodeScalars_Backwards 419592 414467 -1.2% 1.01x (?)
CharIndexing_punctuatedJapanese_unicodeScalars 62697 63063 +0.6% 0.99x (?)
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 74067 74821 +1.0% 0.99x (?)
CharIndexing_punctuated_unicodeScalars 82650 79598 -3.7% 1.04x (?)
CharIndexing_russian_unicodeScalars 294163 298985 +1.6% 0.98x (?)
CharIndexing_russian_unicodeScalars_Backwards 358245 363051 +1.3% 0.99x (?)
CharIndexing_tweet_unicodeScalars_Backwards 850153 855124 +0.6% 0.99x (?)
CharIndexing_utf16_unicodeScalars 303340 301488 -0.6% 1.01x (?)
CharIndexing_utf16_unicodeScalars_Backwards 346679 346313 -0.1% 1.00x (?)
CharIteration_ascii_unicodeScalars 154504 156001 +1.0% 0.99x (?)
CharIteration_ascii_unicodeScalars_Backwards 336039 325928 -3.0% 1.03x (?)
CharIteration_chinese_unicodeScalars 116747 118076 +1.1% 0.99x (?)
CharIteration_chinese_unicodeScalars_Backwards 253900 247215 -2.6% 1.03x (?)
CharIteration_japanese_unicodeScalars 184910 186515 +0.9% 0.99x (?)
CharIteration_japanese_unicodeScalars_Backwards 403223 393693 -2.4% 1.02x (?)
CharIteration_korean_unicodeScalars 149765 151113 +0.9% 0.99x (?)
CharIteration_korean_unicodeScalars_Backwards 330124 325906 -1.3% 1.01x (?)
CharIteration_punctuatedJapanese_unicodeScalars 27649 27979 +1.2% 0.99x (?)
CharIteration_punctuated_unicodeScalars 34677 35039 +1.0% 0.99x (?)
CharIteration_punctuated_unicodeScalars_Backwards 74925 72620 -3.1% 1.03x (?)
CharIteration_russian_unicodeScalars 128709 129863 +0.9% 0.99x (?)
CharIteration_russian_unicodeScalars_Backwards 283718 272701 -3.9% 1.04x (?)
CharIteration_tweet_unicodeScalars 304860 307282 +0.8% 0.99x (?)
CharIteration_tweet_unicodeScalars_Backwards 674393 651696 -3.4% 1.03x (?)
CharIteration_utf16_unicodeScalars 130977 129899 -0.8% 1.01x (?)
CharIteration_utf16_unicodeScalars_Backwards 275998 270699 -1.9% 1.02x (?)
CharacterLiteralsLarge 5923 5972 +0.8% 0.99x (?)
CharacterLiteralsSmall 739 737 -0.3% 1.00x
CharacterPropertiesFetch 5373 5361 -0.2% 1.00x (?)
CharacterPropertiesPrecomputed 4220 4351 +3.1% 0.97x
CharacterPropertiesStashed 2263 2275 +0.5% 0.99x (?)
CharacterPropertiesStashedMemo 4865 4999 +2.8% 0.97x (?)
Chars 39924 39872 -0.1% 1.00x (?)
ClassArrayGetter 986 988 +0.2% 1.00x (?)
Combos 2280 2201 -3.5% 1.04x (?)
DictOfArraysToArrayOfDicts 3345 3416 +2.1% 0.98x (?)
Dictionary 2566 2644 +3.0% 0.97x (?)
Dictionary2 2888 2916 +1.0% 0.99x (?)
Dictionary2OfObjects 5646 5593 -0.9% 1.01x (?)
Dictionary3 1271 1260 -0.9% 1.01x (?)
Dictionary3OfObjects 2204 2239 +1.6% 0.98x (?)
Dictionary4 1200 1200 +0.0% 1.00x
Dictionary4OfObjects 1833 1921 +4.8% 0.95x (?)
DictionaryBridge 2138 2145 +0.3% 1.00x (?)
DictionaryGroup 4242 4244 +0.0% 1.00x (?)
DictionaryGroupOfObjects 7428 7563 +1.8% 0.98x (?)
DictionaryLiteral 8519 8592 +0.9% 0.99x (?)
DictionaryOfObjects 6140 6270 +2.1% 0.98x (?)
DictionaryRemove 18090 18552 +2.6% 0.98x
DictionaryRemoveOfObjects 49384 50902 +3.1% 0.97x (?)
DictionarySubscriptDefaultMutation 2112 2119 +0.3% 1.00x (?)
DictionarySubscriptDefaultMutationArray 2371 2373 +0.1% 1.00x (?)
DictionarySubscriptDefaultMutationArrayOfObjects 9101 9231 +1.4% 0.99x (?)
DictionarySubscriptDefaultMutationOfObjects 5848 5745 -1.8% 1.02x (?)
DictionarySwap 5212 5425 +4.1% 0.96x
DoubleWidthDivision 0 0 +0.0% 1.00x
DropFirstAnyCollection 13805 13766 -0.3% 1.00x
DropFirstAnyCollectionLazy 102444 102252 -0.2% 1.00x (?)
DropFirstAnySeqCntRange 13763 13763 +0.0% 1.00x
DropFirstAnySeqCntRangeLazy 13824 13943 +0.9% 0.99x
DropFirstAnySequence 10856 10922 +0.6% 0.99x
DropFirstAnySequenceLazy 10888 10952 +0.6% 0.99x
DropFirstArray 4301 4129 -4.0% 1.04x
DropFirstArrayLazy 25097 25316 +0.9% 0.99x (?)
DropFirstCountableRange 324 326 +0.6% 0.99x
DropFirstCountableRangeLazy 26185 26053 -0.5% 1.01x (?)
DropFirstSequence 10637 10432 -1.9% 1.02x
DropFirstSequenceLazy 10505 10721 +2.1% 0.98x
DropLastAnyCollection 4613 4604 -0.2% 1.00x
DropLastAnyCollectionLazy 32925 33084 +0.5% 1.00x (?)
DropLastAnySeqCRangeIter 37979 37498 -1.3% 1.01x (?)
DropLastAnySeqCRangeIterLazy 37807 37614 -0.5% 1.01x (?)
DropLastAnySeqCntRange 4604 4604 +0.0% 1.00x
DropLastAnySeqCntRangeLazy 4615 4652 +0.8% 0.99x (?)
DropLastAnySequence 28866 29157 +1.0% 0.99x (?)
DropLastAnySequenceLazy 28996 28948 -0.2% 1.00x (?)
DropLastCountableRange 112 112 +0.0% 1.00x
DropLastCountableRangeLazy 8798 8686 -1.3% 1.01x
DropLastSequence 28883 28991 +0.4% 1.00x (?)
DropLastSequenceLazy 28994 28898 -0.3% 1.00x
DropWhileAnyCollection 17727 17688 -0.2% 1.00x
DropWhileAnyCollectionLazy 19303 18872 -2.2% 1.02x
DropWhileAnySeqCRangeIterLazy 19243 19140 -0.5% 1.01x (?)
DropWhileAnySeqCntRange 17675 17783 +0.6% 0.99x (?)
DropWhileAnySeqCntRangeLazy 19472 18990 -2.5% 1.03x
DropWhileAnySequence 12386 12302 -0.7% 1.01x
DropWhileAnySequenceLazy 10075 10163 +0.9% 0.99x
DropWhileArrayLazy 13715 13714 -0.0% 1.00x (?)
DropWhileCountableRange 4168 4156 -0.3% 1.00x
DropWhileCountableRangeLazy 19107 19049 -0.3% 1.00x (?)
DropWhileSequence 12056 11986 -0.6% 1.01x (?)
DropWhileSequenceLazy 9655 10028 +3.9% 0.96x
EqualStringSubstring 476 478 +0.4% 1.00x (?)
EqualSubstringString 477 477 +0.0% 1.00x
EqualSubstringSubstring 476 478 +0.4% 1.00x
EqualSubstringSubstringGenericEquatable 484 486 +0.4% 1.00x (?)
ExclusivityIndependent 70 71 +1.4% 0.99x
FilterEvenUsingReduce 3753 3925 +4.6% 0.96x (?)
FilterEvenUsingReduceInto 1977 2068 +4.6% 0.96x
FrequenciesUsingReduce 10614 10610 -0.0% 1.00x (?)
FrequenciesUsingReduceInto 5534 5466 -1.2% 1.01x (?)
Hanoi 19983 19886 -0.5% 1.00x (?)
HashTest 16609 16420 -1.1% 1.01x (?)
Histogram 6468 6498 +0.5% 1.00x (?)
Integrate 822 839 +2.1% 0.98x
IterateData 7717 7758 +0.5% 0.99x (?)
Join 1105 1107 +0.2% 1.00x (?)
LazilyFilteredArrayContains 771753 797303 +3.3% 0.97x
LazilyFilteredArrays 1451365 1460771 +0.6% 0.99x (?)
LazilyFilteredRange 480021 476149 -0.8% 1.01x
LessSubstringSubstring 475 476 +0.2% 1.00x (?)
LessSubstringSubstringGenericComparable 482 485 +0.6% 0.99x
LinkedList 32018 32194 +0.5% 0.99x (?)
LuhnAlgoEager 5155 5023 -2.6% 1.03x (?)
LuhnAlgoLazy 5169 5291 +2.4% 0.98x (?)
MapReduce 27085 27450 +1.3% 0.99x
MapReduceAnyCollection 27213 27434 +0.8% 0.99x (?)
MapReduceAnyCollectionShort 39694 39646 -0.1% 1.00x (?)
MapReduceClass 31929 32386 +1.4% 0.99x
MapReduceClassShort 43794 42677 -2.6% 1.03x (?)
MapReduceLazyCollection 23019 23249 +1.0% 0.99x
MapReduceLazyCollectionShort 34705 35463 +2.2% 0.98x
MapReduceLazySequence 18418 18165 -1.4% 1.01x
MapReduceSequence 30468 30915 +1.5% 0.99x
MapReduceShort 40414 39066 -3.3% 1.03x (?)
MapReduceShortString 256 255 -0.4% 1.00x (?)
MapReduceString 1931 1976 +2.3% 0.98x
MonteCarloE 892300 890060 -0.3% 1.00x (?)
MonteCarloPi 3952644 3961747 +0.2% 1.00x
NSDictionaryCastToSwift 6362 6375 +0.2% 1.00x (?)
NSError 717 711 -0.8% 1.01x (?)
NSStringConversion 360 352 -2.2% 1.02x
NibbleSort 299948 300074 +0.0% 1.00x (?)
NopDeinit 167745 173532 +3.4% 0.97x (?)
ObjectAllocation 1353 1352 -0.1% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObject 23644 22572 -4.5% 1.05x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 8592 8320 -3.2% 1.03x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 40640 42139 +3.7% 0.96x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 35665 34931 -2.1% 1.02x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 124503 123765 -0.6% 1.01x (?)
ObjectiveCBridgeFromNSSetAnyObject 63349 64682 +2.1% 0.98x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 6315 6167 -2.3% 1.02x (?)
ObjectiveCBridgeFromNSSetAnyObjectToString 73122 76624 +4.8% 0.95x (?)
ObjectiveCBridgeFromNSString 3152 3117 -1.1% 1.01x (?)
ObjectiveCBridgeFromNSStringForced 2702 2684 -0.7% 1.01x (?)
ObjectiveCBridgeStubDataAppend 4435 4604 +3.8% 0.96x (?)
ObjectiveCBridgeStubDateMutation 604 631 +4.5% 0.96x
ObjectiveCBridgeStubFromArrayOfNSString 27588 27151 -1.6% 1.02x (?)
ObjectiveCBridgeStubFromNSDate 4589 4482 -2.3% 1.02x (?)
ObjectiveCBridgeStubFromNSString 897 876 -2.3% 1.02x (?)
ObjectiveCBridgeStubFromNSStringRef 199 193 -3.0% 1.03x
ObjectiveCBridgeStubNSDataAppend 3007 2950 -1.9% 1.02x (?)
ObjectiveCBridgeStubNSDateMutationRef 15857 15815 -0.3% 1.00x (?)
ObjectiveCBridgeStubToArrayOfNSString 28585 28862 +1.0% 0.99x (?)
ObjectiveCBridgeStubToNSDateRef 3453 3429 -0.7% 1.01x (?)
ObjectiveCBridgeStubToNSString 1573 1568 -0.3% 1.00x (?)
ObjectiveCBridgeStubToNSStringRef 158 153 -3.2% 1.03x
ObjectiveCBridgeStubURLAppendPath 338772 328276 -3.1% 1.03x (?)
ObjectiveCBridgeStubURLAppendPathRef 348422 332571 -4.5% 1.05x (?)
ObjectiveCBridgeToNSArray 29300 29252 -0.2% 1.00x (?)
ObjectiveCBridgeToNSDictionary 55879 56935 +1.9% 0.98x (?)
ObjectiveCBridgeToNSSet 46287 45798 -1.1% 1.01x (?)
ObjectiveCBridgeToNSString 1344 1344 +0.0% 1.00x
ObserverClosure 6256 6280 +0.4% 1.00x (?)
ObserverForwarderStruct 4429 4458 +0.7% 0.99x (?)
ObserverPartiallyAppliedMethod 7828 7813 -0.2% 1.00x (?)
ObserverUnappliedMethod 7921 7986 +0.8% 0.99x
OpenClose 562 560 -0.4% 1.00x (?)
PartialApplyDynamicType 40385 40527 +0.4% 1.00x (?)
Phonebook 20160 20123 -0.2% 1.00x (?)
PolymorphicCalls 6149 6232 +1.3% 0.99x (?)
PopFrontArrayGeneric 5779 5752 -0.5% 1.00x (?)
PopFrontUnsafePointer 11206 10757 -4.0% 1.04x (?)
PrefixAnyCollection 13779 13797 +0.1% 1.00x (?)
PrefixAnyCollectionLazy 100831 97796 -3.0% 1.03x (?)
PrefixAnySeqCntRange 13989 13814 -1.3% 1.01x
PrefixAnySeqCntRangeLazy 13823 13962 +1.0% 0.99x (?)
PrefixAnySequence 9006 9132 +1.4% 0.99x (?)
PrefixAnySequenceLazy 8978 9126 +1.6% 0.98x (?)
PrefixArray 4294 4161 -3.1% 1.03x
PrefixArrayLazy 25063 25385 +1.3% 0.99x (?)
PrefixCountableRange 324 325 +0.3% 1.00x (?)
PrefixCountableRangeLazy 26136 26051 -0.3% 1.00x (?)
PrefixSequence 8714 8891 +2.0% 0.98x
PrefixSequenceLazy 8657 8777 +1.4% 0.99x
PrefixWhileAnyCollection 25487 25147 -1.3% 1.01x
PrefixWhileAnyCollectionLazy 16045 15957 -0.5% 1.01x (?)
PrefixWhileAnySeqCRangeIter 33021 33403 +1.2% 0.99x (?)
PrefixWhileAnySeqCRangeIterLazy 16007 15881 -0.8% 1.01x
PrefixWhileAnySeqCntRange 25431 25176 -1.0% 1.01x
PrefixWhileAnySeqCntRangeLazy 16298 15988 -1.9% 1.02x
PrefixWhileAnySequence 26664 26534 -0.5% 1.00x
PrefixWhileAnySequenceLazy 9099 9269 +1.9% 0.98x
PrefixWhileArray 11466 11647 +1.6% 0.98x (?)
PrefixWhileArrayLazy 11904 11939 +0.3% 1.00x
PrefixWhileCountableRange 11762 11637 -1.1% 1.01x
PrefixWhileCountableRangeLazy 15647 15744 +0.6% 0.99x
PrefixWhileSequence 26268 26502 +0.9% 0.99x
PrefixWhileSequenceLazy 8939 8962 +0.3% 1.00x
Prims 9637 9743 +1.1% 0.99x (?)
PrimsSplit 9674 9775 +1.0% 0.99x (?)
QueueConcrete 15158 15213 +0.4% 1.00x (?)
QueueGeneric 19158 19236 +0.4% 1.00x (?)
RC4 17282 16588 -4.0% 1.04x
RGBHistogram 26744 27389 +2.4% 0.98x
RangeIterationSigned 17013 17226 +1.3% 0.99x
RangeIterationSigned64 39990 39149 -2.1% 1.02x (?)
RangeIterationUnsigned 35088 34626 -1.3% 1.01x (?)
RangeReplaceableCollectionPlusDefault 8305 8209 -1.2% 1.01x (?)
RecursiveOwnedParameter 7865 7876 +0.1% 1.00x (?)
ReversedArray 13031 13305 +2.1% 0.98x (?)
ReversedBidirectional 42286 43003 +1.7% 0.98x (?)
ReversedDictionary 22834 23223 +1.7% 0.98x (?)
SetExclusiveOr 17265 17354 +0.5% 0.99x
SetIntersect 8295 8255 -0.5% 1.00x
SetIsSubsetOf 1342 1340 -0.1% 1.00x (?)
SetIsSubsetOf_OfObjects 1573 1623 +3.2% 0.97x
SetUnion 11854 11949 +0.8% 0.99x
SevenBoom 1682 1663 -1.1% 1.01x (?)
Sim2DArray 43667 43603 -0.1% 1.00x (?)
SortLargeExistentials 15715 15823 +0.7% 0.99x
SortLettersInPlace 2816 2861 +1.6% 0.98x (?)
SortSortedStrings 1353 1338 -1.1% 1.01x (?)
SortStrings 2482 2481 -0.0% 1.00x (?)
SortStringsUnicode 16308 16302 -0.0% 1.00x (?)
StaticArray 2660 2612 -1.8% 1.02x
StrComplexWalk 6438 6444 +0.1% 1.00x (?)
StrToInt 56867 57808 +1.7% 0.98x
StringAdder 4734 4745 +0.2% 1.00x (?)
StringBuilder 6864 6804 -0.9% 1.01x (?)
StringBuilderLong 2704 2745 +1.5% 0.99x
StringComparison_abnormal 1417 1417 +0.0% 1.00x
StringComparison_ascii 9647 9579 -0.7% 1.01x
StringComparison_emoji 3873 3924 +1.3% 0.99x (?)
StringComparison_fastPrenormal 13401 13212 -1.4% 1.01x (?)
StringComparison_latin1 9515 9474 -0.4% 1.00x (?)
StringComparison_longSharedPrefix 13063 13079 +0.1% 1.00x (?)
StringComparison_nonBMPSlowestPrenormal 7145 7103 -0.6% 1.01x (?)
StringComparison_slowerPrenormal 6799 6783 -0.2% 1.00x (?)
StringComparison_zalgo 2911 2921 +0.3% 1.00x
StringEnumRawValueInitialization 20834 20748 -0.4% 1.00x (?)
StringEqualPointerComparison 3114 3110 -0.1% 1.00x (?)
StringFromLongWholeSubstring 23 23 +0.0% 1.00x
StringFromLongWholeSubstringGeneric 198 199 +0.5% 0.99x (?)
StringHasPrefixAscii 3111 2977 -4.3% 1.05x
StringHasPrefixUnicode 30941 31136 +0.6% 0.99x (?)
StringHasSuffixAscii 3092 3076 -0.5% 1.01x (?)
StringHasSuffixUnicode 88048 88157 +0.1% 1.00x (?)
StringInterpolation 14366 14114 -1.8% 1.02x (?)
StringMatch 33350 33613 +0.8% 0.99x (?)
StringRemoveDupes 1407 1403 -0.3% 1.00x (?)
StringUTF16Builder 7677 7670 -0.1% 1.00x (?)
StringWalk 12786 13061 +2.2% 0.98x
StringWordBuilder 2522 2523 +0.0% 1.00x (?)
StringWordBuilderReservingCapacity 2187 2185 -0.1% 1.00x (?)
SubstringComparable 4181 4294 +2.7% 0.97x (?)
SubstringEqualString 3455 3468 +0.4% 1.00x (?)
SubstringEquatable 7737 7816 +1.0% 0.99x (?)
SubstringFromLongString 24 24 +0.0% 1.00x
SuffixAnyCollection 4615 4598 -0.4% 1.00x
SuffixAnyCollectionLazy 34188 32687 -4.4% 1.05x (?)
SuffixAnySeqCRangeIter 34005 33794 -0.6% 1.01x (?)
SuffixAnySeqCRangeIterLazy 33966 33593 -1.1% 1.01x (?)
SuffixAnySeqCntRange 4611 4599 -0.3% 1.00x (?)
SuffixAnySeqCntRangeLazy 4629 4649 +0.4% 1.00x
SuffixAnySequence 25217 25179 -0.2% 1.00x (?)
SuffixAnySequenceLazy 25253 25170 -0.3% 1.00x
SuffixCountableRange 111 112 +0.9% 0.99x (?)
SuffixCountableRangeLazy 8799 8691 -1.2% 1.01x (?)
SuffixSequence 25036 25231 +0.8% 0.99x
SuffixSequenceLazy 25060 25031 -0.1% 1.00x (?)
SumUsingReduce 170351 170793 +0.3% 1.00x
SumUsingReduceInto 167448 166860 -0.4% 1.00x
SuperChars 209479 212402 +1.4% 0.99x (?)
TwoSum 3892 4015 +3.2% 0.97x
TypeFlood 155 160 +3.2% 0.97x (?)
UTF8Decode 31704 30638 -3.4% 1.03x (?)
Walsh 12032 12131 +0.8% 0.99x
WordCountHistogramASCII 47455 47946 +1.0% 0.99x (?)
WordCountHistogramUTF16 102570 105053 +2.4% 0.98x (?)
WordCountUniqueASCII 7919 8082 +2.1% 0.98x
WordSplitASCII 24734 25028 +1.2% 0.99x (?)
WordSplitUTF16 26285 26408 +0.5% 1.00x (?)
XorLoop 23460 23455 -0.0% 1.00x (?)
Hardware Overview
  Model Name: Mac Pro
  Model Identifier: MacPro6,1
  Processor Name: 12-Core Intel Xeon E5
  Processor Speed: 2.7 GHz
  Number of Processors: 1
  Total Number of Cores: 12
  L2 Cache (per Core): 256 KB
  L3 Cache: 30 MB
  Memory: 64 GB

@swiftlang swiftlang deleted a comment from swift-ci Feb 27, 2018
Always synthesizing _hash(into:) almost worked, but it still had trouble with some imported classes and it had diagnostics regressions that seemed impossible to resolve without a major rework of how DerivedConformance works.

This approach works more reliably although it's a lot uglier.
This eliminates the chance of random test failures due to changing hash values, freak hash collision situations and unstable Dictionary ordering.

On the other hand, it allows tests to rely on specific hash values, which is unwise. It also requires that a TestSuite be initialized before the first element is inserted into any Set or Dictionary.
@lorentey
Copy link
Member Author

@swift-ci please test

@swiftlang swiftlang deleted a comment from swift-ci Feb 27, 2018
Also, support appending 32-bit values on 64-bit platforms, too.
@lorentey
Copy link
Member Author

@swift-ci please test

@swiftlang swiftlang deleted a comment from swift-ci Feb 27, 2018
@swiftlang swiftlang deleted a comment from swift-ci Feb 27, 2018
@swift-ci
Copy link
Contributor

Build failed
Swift Test Linux Platform
Git Sha - 9f08836

@lorentey lorentey force-pushed the smashing-hashing branch 2 times, most recently from 1bd9b8d to 91e2eae Compare February 28, 2018 18:13
…length; restore some tests.

Appending is still limited to 32- or 64-bit values. However, a new version of finalize accepts a partial word to append at the end of the sequence. This is only used for testing.
@lorentey
Copy link
Member Author

lorentey commented Mar 1, 2018

A cleaned-up version of this lives on in #14913. See you there!

@lorentey lorentey closed this Mar 1, 2018
@lorentey lorentey deleted the smashing-hashing branch April 18, 2018 13:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants