Skip to content

[stdlib/Sema/AST] Adopt a commonly used implementation for combining hashes #13056

New issue

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

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

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Dec 21, 2017
Merged

[stdlib/Sema/AST] Adopt a commonly used implementation for combining hashes #13056

merged 1 commit into from
Dec 21, 2017

Conversation

xwu
Copy link
Collaborator

@xwu xwu commented Nov 23, 2017

In #9619, @allevato left room for adopting a more sophisticated algorithm for combining hashes. This PR adopts a commonly used implementation first described by Hoad and Zobel and since adopted by others, including the Boost C++ library.

While working with the code, I've also renamed the function to _combineHashValues. As I understand it, the term mix is generally used for (T) -> T operations that are intended to improve the distribution without creating new collisions, whereas the term combine is more descriptive of (T, T) -> T operations that inevitably create new collisions (though it may perform some mixing).

@xwu
Copy link
Collaborator Author

xwu commented Nov 23, 2017

/cc @allevato As we'd discussed.

@xwu xwu changed the title [stdlib] Adopt a commonly used implementation for combining hashes [stdlib/Sema/AST] Adopt a commonly used implementation for combining hashes Nov 23, 2017
// result = _mixForSynthesizedHashValue(result, a1.hashValue)
// result = _combineHashValues(result, 2)
// result = _combineHashValues(result, a0.hashValue)
// result = _combineHashValues(result, a1.hashValue)
// }
// result = _mixInt(result)
Copy link
Member

Choose a reason for hiding this comment

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

Do you think it would be worthwhile to eliminate these final calls to _mixInt now? They might be redundant since the seed in your new algorithm starts out well-randomized already.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

They might be redundant now, but I haven't thought it through and it can't hurt, so we can wait on that, maybe?

Copy link
Member

Choose a reason for hiding this comment

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

That's fine—it might also be good (in a future PR) to have benchmarks against the synthesized hashValue so that future enhancements can be assured to not have performance regressions. (Not that I believe that would be the case here.)

@allevato
Copy link
Member

This looks good to me—and I agree that the new name is clearer.

@CodaFi
Copy link
Contributor

CodaFi commented Nov 24, 2017

@swift-ci please smoke benchmark

@swift-ci
Copy link
Contributor

Build comment file:

Optimized (O)

Regression (1)
TEST OLD NEW DELTA SPEEDUP
DropFirstCountableRange 18 19 +5.6% 0.95x
Improvement (1)
TEST OLD NEW DELTA SPEEDUP
ArrayAppendAscii 20146 19180 -4.8% 1.05x (?)
No Changes (332)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 2947 2957 +0.3% 1.00x (?)
AnyHashableWithAClass 72851 73096 +0.3% 1.00x (?)
Array2D 2099 2095 -0.2% 1.00x (?)
ArrayAppend 987 987 +0.0% 1.00x
ArrayAppendArrayOfInt 599 599 +0.0% 1.00x
ArrayAppendFromGeneric 599 599 +0.0% 1.00x
ArrayAppendGenericStructs 1246 1241 -0.4% 1.00x (?)
ArrayAppendLatin1 41055 41594 +1.3% 0.99x
ArrayAppendLazyMap 926 926 +0.0% 1.00x
ArrayAppendOptionals 1245 1232 -1.0% 1.01x (?)
ArrayAppendRepeatCol 998 999 +0.1% 1.00x
ArrayAppendReserved 749 749 +0.0% 1.00x
ArrayAppendSequence 802 802 +0.0% 1.00x
ArrayAppendStrings 15120 15069 -0.3% 1.00x
ArrayAppendToFromGeneric 599 600 +0.2% 1.00x
ArrayAppendToGeneric 599 599 +0.0% 1.00x
ArrayAppendUTF16 41467 41488 +0.1% 1.00x (?)
ArrayInClass 65 65 +0.0% 1.00x
ArrayLiteral 0 0 +0.0% 1.00x
ArrayOfGenericPOD 219 219 +0.0% 1.00x
ArrayOfGenericRef 4419 4403 -0.4% 1.00x (?)
ArrayOfPOD 165 165 +0.0% 1.00x
ArrayOfRef 4469 4347 -2.7% 1.03x
ArrayPlusEqualArrayOfInt 609 599 -1.6% 1.02x
ArrayPlusEqualFiveElementCollection 6015 5827 -3.1% 1.03x (?)
ArrayPlusEqualSingleElementCollection 997 987 -1.0% 1.01x
ArrayPlusEqualThreeElements 1637 1632 -0.3% 1.00x
ArraySetElement 455 449 -1.3% 1.01x (?)
ArraySubscript 1536 1526 -0.7% 1.01x
ArrayValueProp 6 6 +0.0% 1.00x
ArrayValueProp2 6 6 +0.0% 1.00x
ArrayValueProp3 6 6 +0.0% 1.00x
ArrayValueProp4 6 6 +0.0% 1.00x
BitCount 145 146 +0.7% 0.99x (?)
ByteSwap 114 113 -0.9% 1.01x
CStringLongAscii 4741 4737 -0.1% 1.00x
CStringLongNonAscii 2271 2253 -0.8% 1.01x
CStringShortAscii 4777 4763 -0.3% 1.00x
Calculator 37 36 -2.7% 1.03x
CaptureProp 6065 6066 +0.0% 1.00x (?)
CharIndexing_ascii_unicodeScalars 20329 20342 +0.1% 1.00x
CharIndexing_ascii_unicodeScalars_Backwards 15995 15991 -0.0% 1.00x (?)
CharIndexing_chinese_unicodeScalars 15432 15436 +0.0% 1.00x (?)
CharIndexing_chinese_unicodeScalars_Backwards 12127 12122 -0.0% 1.00x (?)
CharIndexing_japanese_unicodeScalars 24307 24305 -0.0% 1.00x (?)
CharIndexing_japanese_unicodeScalars_Backwards 19124 19123 -0.0% 1.00x (?)
CharIndexing_korean_unicodeScalars 19723 19724 +0.0% 1.00x (?)
CharIndexing_korean_unicodeScalars_Backwards 15507 15501 -0.0% 1.00x (?)
CharIndexing_punctuatedJapanese_unicodeScalars 3819 3819 +0.0% 1.00x
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 2943 2944 +0.0% 1.00x (?)
CharIndexing_punctuated_unicodeScalars 4743 4745 +0.0% 1.00x (?)
CharIndexing_punctuated_unicodeScalars_Backwards 3672 3670 -0.1% 1.00x (?)
CharIndexing_russian_unicodeScalars 16969 16965 -0.0% 1.00x (?)
CharIndexing_russian_unicodeScalars_Backwards 13343 13338 -0.0% 1.00x
CharIndexing_tweet_unicodeScalars 39880 39875 -0.0% 1.00x (?)
CharIndexing_tweet_unicodeScalars_Backwards 31567 31534 -0.1% 1.00x (?)
CharIndexing_utf16_unicodeScalars 92373 92400 +0.0% 1.00x
CharIndexing_utf16_unicodeScalars_Backwards 87587 87575 -0.0% 1.00x (?)
CharIteration_ascii_unicodeScalars 19561 19280 -1.4% 1.01x
CharIteration_ascii_unicodeScalars_Backwards 18792 18788 -0.0% 1.00x (?)
CharIteration_chinese_unicodeScalars 14763 14628 -0.9% 1.01x
CharIteration_chinese_unicodeScalars_Backwards 14227 14228 +0.0% 1.00x (?)
CharIteration_japanese_unicodeScalars 23347 23068 -1.2% 1.01x
CharIteration_japanese_unicodeScalars_Backwards 22490 22491 +0.0% 1.00x (?)
CharIteration_korean_unicodeScalars 18946 18702 -1.3% 1.01x
CharIteration_korean_unicodeScalars_Backwards 18238 18239 +0.0% 1.00x (?)
CharIteration_punctuatedJapanese_unicodeScalars 3553 3535 -0.5% 1.01x
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 3405 3404 -0.0% 1.00x (?)
CharIteration_punctuated_unicodeScalars 4437 4403 -0.8% 1.01x
CharIteration_punctuated_unicodeScalars_Backwards 4256 4255 -0.0% 1.00x (?)
CharIteration_russian_unicodeScalars 16241 16090 -0.9% 1.01x
CharIteration_russian_unicodeScalars_Backwards 15652 15653 +0.0% 1.00x (?)
CharIteration_tweet_unicodeScalars 38536 37976 -1.5% 1.01x
CharIteration_tweet_unicodeScalars_Backwards 37341 37343 +0.0% 1.00x (?)
CharIteration_utf16_unicodeScalars 102368 102161 -0.2% 1.00x
CharIteration_utf16_unicodeScalars_Backwards 123955 123944 -0.0% 1.00x (?)
CharacterLiteralsLarge 5998 5998 +0.0% 1.00x
CharacterLiteralsSmall 530 530 +0.0% 1.00x
Chars 823 822 -0.1% 1.00x
ClassArrayGetter 13 13 +0.0% 1.00x
DeadArray 181 181 +0.0% 1.00x
Dictionary 657 657 +0.0% 1.00x
Dictionary2 1889 1886 -0.2% 1.00x (?)
Dictionary2OfObjects 3257 3258 +0.0% 1.00x (?)
Dictionary3 577 577 +0.0% 1.00x
Dictionary3OfObjects 914 914 +0.0% 1.00x
DictionaryBridge 2389 2419 +1.3% 0.99x (?)
DictionaryGroup 269 274 +1.9% 0.98x (?)
DictionaryGroupOfObjects 2028 2030 +0.1% 1.00x (?)
DictionaryLiteral 1516 1513 -0.2% 1.00x
DictionaryOfObjects 2361 2357 -0.2% 1.00x
DictionaryRemove 3095 3109 +0.5% 1.00x
DictionaryRemoveOfObjects 23425 23426 +0.0% 1.00x (?)
DictionarySwap 465 465 +0.0% 1.00x
DictionarySwapOfObjects 7484 7482 -0.0% 1.00x (?)
DropFirstAnyCollection 55 55 +0.0% 1.00x
DropFirstAnyCollectionLazy 70630 70930 +0.4% 1.00x (?)
DropFirstAnySeqCRangeIter 21270 21254 -0.1% 1.00x (?)
DropFirstAnySeqCRangeIterLazy 21261 21254 -0.0% 1.00x (?)
DropFirstAnySeqCntRange 50 50 +0.0% 1.00x
DropFirstAnySeqCntRangeLazy 50 50 +0.0% 1.00x
DropFirstAnySequence 4925 4883 -0.9% 1.01x
DropFirstAnySequenceLazy 4941 4894 -1.0% 1.01x
DropFirstArray 30 30 +0.0% 1.00x
DropFirstArrayLazy 30 30 +0.0% 1.00x
DropFirstCountableRangeLazy 18 18 +0.0% 1.00x
DropFirstSequence 2606 2602 -0.2% 1.00x (?)
DropFirstSequenceLazy 2796 2787 -0.3% 1.00x (?)
DropLastAnyCollection 21 21 +0.0% 1.00x
DropLastAnyCollectionLazy 23618 23708 +0.4% 1.00x (?)
DropLastAnySeqCRangeIter 4289 4289 +0.0% 1.00x
DropLastAnySeqCRangeIterLazy 4295 4294 -0.0% 1.00x (?)
DropLastAnySeqCntRange 16 16 +0.0% 1.00x
DropLastAnySeqCntRangeLazy 16 16 +0.0% 1.00x
DropLastAnySequence 5949 5950 +0.0% 1.00x (?)
DropLastAnySequenceLazy 5997 5997 +0.0% 1.00x
DropLastArray 10 10 +0.0% 1.00x
DropLastArrayLazy 10 10 +0.0% 1.00x
DropLastCountableRange 6 6 +0.0% 1.00x
DropLastCountableRangeLazy 6 6 +0.0% 1.00x
DropLastSequence 644 643 -0.2% 1.00x (?)
DropLastSequenceLazy 644 644 +0.0% 1.00x
DropWhileAnyCollection 68 68 +0.0% 1.00x
DropWhileAnyCollectionLazy 89 89 +0.0% 1.00x
DropWhileAnySeqCRangeIter 17457 17412 -0.3% 1.00x (?)
DropWhileAnySeqCRangeIterLazy 90 90 +0.0% 1.00x
DropWhileAnySeqCntRange 63 63 +0.0% 1.00x
DropWhileAnySeqCntRangeLazy 89 89 +0.0% 1.00x
DropWhileAnySequence 5318 5319 +0.0% 1.00x (?)
DropWhileAnySequenceLazy 1939 1939 +0.0% 1.00x
DropWhileArray 43 43 +0.0% 1.00x
DropWhileArrayLazy 78 78 +0.0% 1.00x
DropWhileCountableRange 19 19 +0.0% 1.00x
DropWhileCountableRangeLazy 70 70 +0.0% 1.00x
DropWhileSequence 1308 1307 -0.1% 1.00x
DropWhileSequenceLazy 46 47 +2.2% 0.98x
EqualStringSubstring 390 392 +0.5% 0.99x
EqualSubstringString 390 392 +0.5% 0.99x
EqualSubstringSubstring 391 392 +0.3% 1.00x (?)
EqualSubstringSubstringGenericEquatable 385 388 +0.8% 0.99x
ErrorHandling 2071 2082 +0.5% 0.99x (?)
ExclusivityGlobal 3 3 +0.0% 1.00x
ExclusivityInMatSet 18 18 +0.0% 1.00x
ExclusivityIndependent 2 2 +0.0% 1.00x
FilterEvenUsingReduce 1325 1314 -0.8% 1.01x
FilterEvenUsingReduceInto 148 148 +0.0% 1.00x
FrequenciesUsingReduce 7933 7949 +0.2% 1.00x
FrequenciesUsingReduceInto 4304 4292 -0.3% 1.00x (?)
Hanoi 3636 3648 +0.3% 1.00x (?)
HashTest 1711 1709 -0.1% 1.00x (?)
Histogram 332 332 +0.0% 1.00x
Integrate 207 207 +0.0% 1.00x
IterateData 1307 1309 +0.2% 1.00x (?)
Join 382 383 +0.3% 1.00x (?)
LazilyFilteredArrayContains 26645 26651 +0.0% 1.00x (?)
LazilyFilteredArrays 66295 66382 +0.1% 1.00x
LazilyFilteredRange 4183 4214 +0.7% 0.99x (?)
LessSubstringSubstring 390 391 +0.3% 1.00x
LessSubstringSubstringGenericComparable 386 387 +0.3% 1.00x
LinkedList 6982 7013 +0.4% 1.00x (?)
MapReduce 394 393 -0.3% 1.00x
MapReduceAnyCollection 394 394 +0.0% 1.00x
MapReduceAnyCollectionShort 2048 2055 +0.3% 1.00x
MapReduceClass 3106 3109 +0.1% 1.00x (?)
MapReduceClassShort 4615 4612 -0.1% 1.00x (?)
MapReduceLazyCollection 13 13 +0.0% 1.00x
MapReduceLazyCollectionShort 36 36 +0.0% 1.00x
MapReduceLazySequence 90 90 +0.0% 1.00x
MapReduceSequence 439 440 +0.2% 1.00x (?)
MapReduceShort 2027 2023 -0.2% 1.00x (?)
MapReduceShortString 21 21 +0.0% 1.00x
MapReduceString 95 95 +0.0% 1.00x
Memset 235 235 +0.0% 1.00x
MonteCarloE 10360 10368 +0.1% 1.00x (?)
MonteCarloPi 43983 43986 +0.0% 1.00x (?)
NSDictionaryCastToSwift 5684 5730 +0.8% 0.99x
NSError 307 298 -2.9% 1.03x (?)
NSStringConversion 362 357 -1.4% 1.01x
NopDeinit 21369 21374 +0.0% 1.00x (?)
ObjectAllocation 180 180 +0.0% 1.00x
ObjectiveCBridgeFromNSArrayAnyObject 19541 19504 -0.2% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 3505 3508 +0.1% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 36513 35999 -1.4% 1.01x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 31521 30948 -1.8% 1.02x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 107692 111536 +3.6% 0.97x
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 5101 5348 +4.8% 0.95x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 85079 83640 -1.7% 1.02x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 99197 101392 +2.2% 0.98x
ObjectiveCBridgeFromNSSetAnyObject 57697 57495 -0.4% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 4379 4321 -1.3% 1.01x
ObjectiveCBridgeFromNSSetAnyObjectToString 59903 60123 +0.4% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 65777 67383 +2.4% 0.98x (?)
ObjectiveCBridgeFromNSString 996 996 +0.0% 1.00x
ObjectiveCBridgeFromNSStringForced 1887 1880 -0.4% 1.00x
ObjectiveCBridgeStubDataAppend 3986 3884 -2.6% 1.03x (?)
ObjectiveCBridgeStubDateAccess 181 182 +0.6% 0.99x
ObjectiveCBridgeStubDateMutation 272 272 +0.0% 1.00x
ObjectiveCBridgeStubFromArrayOfNSString 23479 23988 +2.2% 0.98x (?)
ObjectiveCBridgeStubFromNSDate 3636 3652 +0.4% 1.00x (?)
ObjectiveCBridgeStubFromNSDateRef 4331 4330 -0.0% 1.00x (?)
ObjectiveCBridgeStubFromNSString 543 554 +2.0% 0.98x
ObjectiveCBridgeStubFromNSStringRef 152 152 +0.0% 1.00x
ObjectiveCBridgeStubNSDataAppend 2482 2421 -2.5% 1.03x
ObjectiveCBridgeStubNSDateMutationRef 13322 12820 -3.8% 1.04x (?)
ObjectiveCBridgeStubNSDateRefAccess 341 342 +0.3% 1.00x (?)
ObjectiveCBridgeStubToArrayOfNSString 27331 28467 +4.2% 0.96x (?)
ObjectiveCBridgeStubToNSDate 15563 16046 +3.1% 0.97x (?)
ObjectiveCBridgeStubToNSDateRef 3318 3304 -0.4% 1.00x (?)
ObjectiveCBridgeStubToNSString 1499 1503 +0.3% 1.00x
ObjectiveCBridgeStubToNSStringRef 116 116 +0.0% 1.00x
ObjectiveCBridgeStubURLAppendPath 213365 216017 +1.2% 0.99x (?)
ObjectiveCBridgeStubURLAppendPathRef 214115 219749 +2.6% 0.97x (?)
ObjectiveCBridgeToNSArray 28762 28870 +0.4% 1.00x (?)
ObjectiveCBridgeToNSDictionary 45539 45586 +0.1% 1.00x (?)
ObjectiveCBridgeToNSSet 39253 38684 -1.4% 1.01x
ObjectiveCBridgeToNSString 1269 1273 +0.3% 1.00x (?)
ObserverClosure 2062 2064 +0.1% 1.00x (?)
ObserverForwarderStruct 896 900 +0.4% 1.00x (?)
ObserverPartiallyAppliedMethod 3572 3580 +0.2% 1.00x (?)
ObserverUnappliedMethod 2388 2352 -1.5% 1.02x
OpenClose 3 3 +0.0% 1.00x
Phonebook 6243 6241 -0.0% 1.00x (?)
PolymorphicCalls 17 17 +0.0% 1.00x
PopFrontArray 1292 1288 -0.3% 1.00x
PopFrontArrayGeneric 1284 1284 +0.0% 1.00x
PopFrontUnsafePointer 6096 6093 -0.0% 1.00x (?)
PrefixAnyCollection 55 55 +0.0% 1.00x
PrefixAnyCollectionLazy 70662 70777 +0.2% 1.00x (?)
PrefixAnySeqCRangeIter 16874 16895 +0.1% 1.00x (?)
PrefixAnySeqCRangeIterLazy 16856 16881 +0.1% 1.00x (?)
PrefixAnySeqCntRange 50 50 +0.0% 1.00x
PrefixAnySeqCntRangeLazy 50 50 +0.0% 1.00x
PrefixAnySequence 4107 4099 -0.2% 1.00x
PrefixAnySequenceLazy 4110 4100 -0.2% 1.00x
PrefixArray 30 30 +0.0% 1.00x
PrefixArrayLazy 30 30 +0.0% 1.00x
PrefixCountableRange 18 18 +0.0% 1.00x
PrefixCountableRangeLazy 18 18 +0.0% 1.00x
PrefixSequence 1311 1311 +0.0% 1.00x
PrefixSequenceLazy 1460 1460 +0.0% 1.00x
PrefixWhileAnyCollection 93 93 +0.0% 1.00x
PrefixWhileAnyCollectionLazy 66 66 +0.0% 1.00x
PrefixWhileAnySeqCRangeIter 11618 11609 -0.1% 1.00x
PrefixWhileAnySeqCRangeIterLazy 66 66 +0.0% 1.00x
PrefixWhileAnySeqCntRange 88 88 +0.0% 1.00x
PrefixWhileAnySeqCntRangeLazy 66 66 +0.0% 1.00x
PrefixWhileAnySequence 12785 12780 -0.0% 1.00x (?)
PrefixWhileAnySequenceLazy 1454 1454 +0.0% 1.00x
PrefixWhileArray 74 74 +0.0% 1.00x
PrefixWhileArrayLazy 37 37 +0.0% 1.00x
PrefixWhileCountableRange 29 29 +0.0% 1.00x
PrefixWhileCountableRangeLazy 19 19 +0.0% 1.00x
PrefixWhileSequence 357 357 +0.0% 1.00x
PrefixWhileSequenceLazy 28 28 +0.0% 1.00x
Prims 778 781 +0.4% 1.00x (?)
PrimsSplit 770 770 +0.0% 1.00x
ProtocolDispatch 2788 2732 -2.0% 1.02x (?)
ProtocolDispatch2 127 127 +0.0% 1.00x
RC4 163 164 +0.6% 0.99x (?)
RGBHistogram 2722 2730 +0.3% 1.00x (?)
RGBHistogramOfObjects 23743 23739 -0.0% 1.00x (?)
RangeAssignment 351 352 +0.3% 1.00x (?)
RangeIterationSigned 135 135 +0.0% 1.00x
RangeIterationSigned64 151 152 +0.7% 0.99x (?)
RangeIterationUnsigned 152 152 +0.0% 1.00x
RecursiveOwnedParameter 2364 2364 +0.0% 1.00x
ReversedArray 51 51 +0.0% 1.00x
ReversedBidirectional 29165 29318 +0.5% 0.99x
ReversedDictionary 132 130 -1.5% 1.02x (?)
SetExclusiveOr 3176 3141 -1.1% 1.01x (?)
SetExclusiveOr_OfObjects 8654 8579 -0.9% 1.01x
SetIntersect 308 308 +0.0% 1.00x
SetIntersect_OfObjects 1755 1754 -0.1% 1.00x (?)
SetIsSubsetOf 305 305 +0.0% 1.00x
SetIsSubsetOf_OfObjects 400 400 +0.0% 1.00x
SetUnion 2882 2837 -1.6% 1.02x
SetUnion_OfObjects 7134 7159 +0.4% 1.00x (?)
SevenBoom 1573 1500 -4.6% 1.05x (?)
Sim2DArray 445 445 +0.0% 1.00x
SortLargeExistentials 7977 7977 +0.0% 1.00x
SortLettersInPlace 1155 1154 -0.1% 1.00x (?)
SortSortedStrings 970 970 +0.0% 1.00x
SortStrings 1796 1795 -0.1% 1.00x (?)
SortStringsUnicode 8232 8270 +0.5% 1.00x
StackPromo 22893 22886 -0.0% 1.00x
StaticArray 5 5 +0.0% 1.00x
StrComplexWalk 1654 1653 -0.1% 1.00x
StrToInt 1882 1880 -0.1% 1.00x (?)
StringAdder 3488 3483 -0.1% 1.00x (?)
StringBuilder 999 998 -0.1% 1.00x
StringBuilderLong 990 957 -3.3% 1.03x (?)
StringEdits 168498 168241 -0.2% 1.00x (?)
StringEnumRawValueInitialization 1130 1134 +0.4% 1.00x
StringEqualPointerComparison 364 364 +0.0% 1.00x
StringFromLongWholeSubstring 178 178 +0.0% 1.00x
StringFromLongWholeSubstringGeneric 76 77 +1.3% 0.99x
StringHasPrefix 1059 1060 +0.1% 1.00x (?)
StringHasPrefixUnicode 15332 15141 -1.2% 1.01x (?)
StringHasSuffix 1215 1214 -0.1% 1.00x (?)
StringHasSuffixUnicode 62676 62578 -0.2% 1.00x
StringInterpolation 10745 10508 -2.2% 1.02x (?)
StringMatch 7701 7763 +0.8% 0.99x (?)
StringUTF16Builder 1862 1858 -0.2% 1.00x (?)
StringWalk 1426 1426 +0.0% 1.00x
StringWithCString 60671 60089 -1.0% 1.01x
SubstringComparable 1600 1617 +1.1% 0.99x (?)
SubstringEqualString 1438 1417 -1.5% 1.01x
SubstringEquatable 3522 3522 +0.0% 1.00x
SubstringFromLongString 10 10 +0.0% 1.00x
SubstringFromLongStringGeneric 73 73 +0.0% 1.00x
SuffixAnyCollection 21 21 +0.0% 1.00x
SuffixAnyCollectionLazy 23748 23506 -1.0% 1.01x (?)
SuffixAnySeqCRangeIter 4617 4607 -0.2% 1.00x (?)
SuffixAnySeqCRangeIterLazy 4621 4622 +0.0% 1.00x (?)
SuffixAnySeqCntRange 15 15 +0.0% 1.00x
SuffixAnySeqCntRangeLazy 15 15 +0.0% 1.00x
SuffixAnySequence 5876 5874 -0.0% 1.00x (?)
SuffixAnySequenceLazy 6048 6051 +0.0% 1.00x
SuffixArray 10 10 +0.0% 1.00x
SuffixArrayLazy 10 10 +0.0% 1.00x
SuffixCountableRange 6 6 +0.0% 1.00x
SuffixCountableRangeLazy 6 6 +0.0% 1.00x
SuffixSequence 4574 4573 -0.0% 1.00x (?)
SuffixSequenceLazy 4577 4575 -0.0% 1.00x (?)
SumUsingReduce 96 96 +0.0% 1.00x
SumUsingReduceInto 96 96 +0.0% 1.00x
SuperChars 85869 85572 -0.3% 1.00x (?)
TwoSum 1016 1016 +0.0% 1.00x
TypeFlood 0 0 +0.0% 1.00x
UTF8Decode 258 258 +0.0% 1.00x
Walsh 385 386 +0.3% 1.00x (?)
XorLoop 345 345 +0.0% 1.00x

Unoptimized (Onone)

Regression (2)
TEST OLD NEW DELTA SPEEDUP
PopFrontUnsafePointer 6796 7795 +14.7% 0.87x
OpenClose 387 416 +7.5% 0.93x
Improvement (3)
TEST OLD NEW DELTA SPEEDUP
RangeIterationSigned64 47192 44023 -6.7% 1.07x
RangeIterationUnsigned 42032 39646 -5.7% 1.06x
ObjectiveCBridgeStubNSDateMutationRef 16282 15450 -5.1% 1.05x (?)
No Changes (329)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 4892 4897 +0.1% 1.00x (?)
AnyHashableWithAClass 89330 89429 +0.1% 1.00x
Array2D 641519 640793 -0.1% 1.00x
ArrayAppend 4178 4163 -0.4% 1.00x (?)
ArrayAppendArrayOfInt 644 643 -0.2% 1.00x (?)
ArrayAppendAscii 42267 43565 +3.1% 0.97x
ArrayAppendFromGeneric 647 647 +0.0% 1.00x
ArrayAppendGenericStructs 1342 1286 -4.2% 1.04x (?)
ArrayAppendLatin1 68937 71578 +3.8% 0.96x
ArrayAppendLazyMap 208589 208880 +0.1% 1.00x
ArrayAppendOptionals 1275 1295 +1.6% 0.98x (?)
ArrayAppendRepeatCol 200089 200886 +0.4% 1.00x
ArrayAppendReserved 4092 4094 +0.0% 1.00x (?)
ArrayAppendSequence 139981 142521 +1.8% 0.98x (?)
ArrayAppendStrings 15254 15249 -0.0% 1.00x (?)
ArrayAppendToFromGeneric 647 646 -0.2% 1.00x
ArrayAppendToGeneric 648 647 -0.2% 1.00x
ArrayAppendUTF16 66163 67045 +1.3% 0.99x
ArrayInClass 6543 6543 +0.0% 1.00x
ArrayLiteral 1764 1772 +0.5% 1.00x (?)
ArrayOfGenericPOD 1300 1298 -0.2% 1.00x (?)
ArrayOfGenericRef 10280 10289 +0.1% 1.00x (?)
ArrayOfPOD 792 791 -0.1% 1.00x (?)
ArrayOfRef 9511 9490 -0.2% 1.00x (?)
ArrayPlusEqualArrayOfInt 645 645 +0.0% 1.00x
ArrayPlusEqualFiveElementCollection 258701 258303 -0.2% 1.00x (?)
ArrayPlusEqualSingleElementCollection 254040 253625 -0.2% 1.00x (?)
ArrayPlusEqualThreeElements 9788 9806 +0.2% 1.00x (?)
ArraySetElement 4791 4792 +0.0% 1.00x (?)
ArraySubscript 84715 84960 +0.3% 1.00x (?)
ArrayValueProp 3690 3696 +0.2% 1.00x (?)
ArrayValueProp2 18341 18250 -0.5% 1.00x (?)
ArrayValueProp3 4094 4097 +0.1% 1.00x (?)
ArrayValueProp4 4061 4063 +0.0% 1.00x (?)
BitCount 1526 1526 +0.0% 1.00x
ByteSwap 3996 4011 +0.4% 1.00x (?)
CStringLongAscii 4829 4795 -0.7% 1.01x
CStringLongNonAscii 2395 2400 +0.2% 1.00x (?)
CStringShortAscii 8418 8434 +0.2% 1.00x (?)
Calculator 1118 1112 -0.5% 1.01x
CaptureProp 117382 117121 -0.2% 1.00x (?)
CharIndexing_ascii_unicodeScalars 421890 424637 +0.7% 0.99x
CharIndexing_ascii_unicodeScalars_Backwards 462221 462957 +0.2% 1.00x
CharIndexing_chinese_unicodeScalars 314267 318415 +1.3% 0.99x
CharIndexing_chinese_unicodeScalars_Backwards 345788 350134 +1.3% 0.99x (?)
CharIndexing_japanese_unicodeScalars 504165 507029 +0.6% 0.99x
CharIndexing_japanese_unicodeScalars_Backwards 551365 553468 +0.4% 1.00x (?)
CharIndexing_korean_unicodeScalars 409148 408841 -0.1% 1.00x (?)
CharIndexing_korean_unicodeScalars_Backwards 445368 455226 +2.2% 0.98x
CharIndexing_punctuatedJapanese_unicodeScalars 73594 74179 +0.8% 0.99x
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 79038 80077 +1.3% 0.99x
CharIndexing_punctuated_unicodeScalars 93444 93243 -0.2% 1.00x (?)
CharIndexing_punctuated_unicodeScalars_Backwards 100569 101938 +1.4% 0.99x
CharIndexing_russian_unicodeScalars 349031 356113 +2.0% 0.98x
CharIndexing_russian_unicodeScalars_Backwards 381938 387697 +1.5% 0.99x
CharIndexing_tweet_unicodeScalars 829702 842793 +1.6% 0.98x
CharIndexing_tweet_unicodeScalars_Backwards 909157 917055 +0.9% 0.99x
CharIndexing_utf16_unicodeScalars 440820 441292 +0.1% 1.00x (?)
CharIndexing_utf16_unicodeScalars_Backwards 482455 481801 -0.1% 1.00x (?)
CharIteration_ascii_unicodeScalars 185581 185374 -0.1% 1.00x (?)
CharIteration_ascii_unicodeScalars_Backwards 320710 320131 -0.2% 1.00x (?)
CharIteration_chinese_unicodeScalars 139993 140908 +0.7% 0.99x
CharIteration_chinese_unicodeScalars_Backwards 241548 243990 +1.0% 0.99x
CharIteration_japanese_unicodeScalars 220721 221242 +0.2% 1.00x (?)
CharIteration_japanese_unicodeScalars_Backwards 387219 385936 -0.3% 1.00x (?)
CharIteration_korean_unicodeScalars 179172 178904 -0.1% 1.00x
CharIteration_korean_unicodeScalars_Backwards 313830 311453 -0.8% 1.01x (?)
CharIteration_punctuatedJapanese_unicodeScalars 33251 33210 -0.1% 1.00x (?)
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 56029 56206 +0.3% 1.00x (?)
CharIteration_punctuated_unicodeScalars 41218 41178 -0.1% 1.00x (?)
CharIteration_punctuated_unicodeScalars_Backwards 70914 70510 -0.6% 1.01x (?)
CharIteration_russian_unicodeScalars 153674 154462 +0.5% 0.99x (?)
CharIteration_russian_unicodeScalars_Backwards 266374 269976 +1.4% 0.99x
CharIteration_tweet_unicodeScalars 362119 362739 +0.2% 1.00x (?)
CharIteration_tweet_unicodeScalars_Backwards 634828 635704 +0.1% 1.00x
CharIteration_utf16_unicodeScalars 223159 223351 +0.1% 1.00x (?)
CharIteration_utf16_unicodeScalars_Backwards 370589 370351 -0.1% 1.00x (?)
CharacterLiteralsLarge 6211 6172 -0.6% 1.01x (?)
CharacterLiteralsSmall 706 719 +1.8% 0.98x
Chars 50034 50104 +0.1% 1.00x
ClassArrayGetter 1012 1013 +0.1% 1.00x
DeadArray 113869 113272 -0.5% 1.01x (?)
Dictionary 2723 2722 -0.0% 1.00x (?)
Dictionary2 2889 2901 +0.4% 1.00x
Dictionary2OfObjects 5441 5448 +0.1% 1.00x (?)
Dictionary3 1344 1346 +0.1% 1.00x (?)
Dictionary3OfObjects 2270 2262 -0.4% 1.00x (?)
DictionaryBridge 2525 2498 -1.1% 1.01x
DictionaryGroup 4859 4841 -0.4% 1.00x
DictionaryGroupOfObjects 8071 8059 -0.1% 1.00x (?)
DictionaryLiteral 8285 8296 +0.1% 1.00x (?)
DictionaryOfObjects 6083 6096 +0.2% 1.00x (?)
DictionaryRemove 17954 18057 +0.6% 0.99x
DictionaryRemoveOfObjects 49841 50149 +0.6% 0.99x
DictionarySwap 5501 5529 +0.5% 0.99x
DictionarySwapOfObjects 22702 22825 +0.5% 0.99x (?)
DropFirstAnyCollection 15121 15045 -0.5% 1.01x
DropFirstAnyCollectionLazy 117026 117039 +0.0% 1.00x (?)
DropFirstAnySeqCRangeIter 22663 22589 -0.3% 1.00x (?)
DropFirstAnySeqCRangeIterLazy 22691 22628 -0.3% 1.00x (?)
DropFirstAnySeqCntRange 15208 15038 -1.1% 1.01x (?)
DropFirstAnySeqCntRangeLazy 15186 15158 -0.2% 1.00x (?)
DropFirstAnySequence 12422 12350 -0.6% 1.01x
DropFirstAnySequenceLazy 12427 12393 -0.3% 1.00x
DropFirstArray 5921 5902 -0.3% 1.00x
DropFirstArrayLazy 33882 33907 +0.1% 1.00x
DropFirstCountableRange 339 338 -0.3% 1.00x
DropFirstCountableRangeLazy 29497 29347 -0.5% 1.01x
DropFirstSequence 11859 11743 -1.0% 1.01x
DropFirstSequenceLazy 11804 11734 -0.6% 1.01x
DropLastAnyCollection 5053 5030 -0.5% 1.00x
DropLastAnyCollectionLazy 38606 38782 +0.5% 1.00x (?)
DropLastAnySeqCRangeIter 42180 42018 -0.4% 1.00x
DropLastAnySeqCRangeIterLazy 42687 42535 -0.4% 1.00x (?)
DropLastAnySeqCntRange 5044 5026 -0.4% 1.00x (?)
DropLastAnySeqCntRangeLazy 5070 5064 -0.1% 1.00x (?)
DropLastAnySequence 32458 32412 -0.1% 1.00x
DropLastAnySequenceLazy 32525 32510 -0.0% 1.00x (?)
DropLastArray 1891 1886 -0.3% 1.00x
DropLastArrayLazy 11298 11316 +0.2% 1.00x (?)
DropLastCountableRange 117 116 -0.9% 1.01x (?)
DropLastCountableRangeLazy 9858 9848 -0.1% 1.00x (?)
DropLastSequence 32077 32046 -0.1% 1.00x
DropLastSequenceLazy 32140 32075 -0.2% 1.00x
DropWhileAnyCollection 19774 19742 -0.2% 1.00x (?)
DropWhileAnyCollectionLazy 21716 21695 -0.1% 1.00x (?)
DropWhileAnySeqCRangeIter 24666 24539 -0.5% 1.01x
DropWhileAnySeqCRangeIterLazy 21369 21355 -0.1% 1.00x
DropWhileAnySeqCntRange 19779 19723 -0.3% 1.00x (?)
DropWhileAnySeqCntRangeLazy 21321 21326 +0.0% 1.00x (?)
DropWhileAnySequence 14472 14357 -0.8% 1.01x (?)
DropWhileAnySequenceLazy 11301 11222 -0.7% 1.01x
DropWhileArray 9585 9408 -1.8% 1.02x
DropWhileArrayLazy 16640 16632 -0.0% 1.00x
DropWhileCountableRange 4897 4872 -0.5% 1.01x
DropWhileCountableRangeLazy 21245 21251 +0.0% 1.00x (?)
DropWhileSequence 13901 13792 -0.8% 1.01x
DropWhileSequenceLazy 11132 11092 -0.4% 1.00x
EqualStringSubstring 664 666 +0.3% 1.00x
EqualSubstringString 666 663 -0.5% 1.00x
EqualSubstringSubstring 778 778 +0.0% 1.00x
EqualSubstringSubstringGenericEquatable 453 453 +0.0% 1.00x
ErrorHandling 6845 6936 +1.3% 0.99x (?)
ExclusivityGlobal 179 179 +0.0% 1.00x
ExclusivityInMatSet 303 303 +0.0% 1.00x
ExclusivityIndependent 70 70 +0.0% 1.00x
FilterEvenUsingReduce 4228 4226 -0.0% 1.00x (?)
FilterEvenUsingReduceInto 2395 2397 +0.1% 1.00x (?)
FrequenciesUsingReduce 13378 13387 +0.1% 1.00x (?)
FrequenciesUsingReduceInto 8417 8395 -0.3% 1.00x (?)
Hanoi 21215 21320 +0.5% 1.00x
HashTest 17196 17504 +1.8% 0.98x
Histogram 7313 7318 +0.1% 1.00x (?)
Integrate 764 765 +0.1% 1.00x (?)
IterateData 7898 8049 +1.9% 0.98x
Join 1481 1486 +0.3% 1.00x
LazilyFilteredArrayContains 936250 934958 -0.1% 1.00x
LazilyFilteredArrays 1582793 1585608 +0.2% 1.00x (?)
LazilyFilteredRange 557651 554280 -0.6% 1.01x
LessSubstringSubstring 772 770 -0.3% 1.00x
LessSubstringSubstringGenericComparable 454 455 +0.2% 1.00x (?)
LinkedList 40416 40415 -0.0% 1.00x (?)
MapReduce 34590 34600 +0.0% 1.00x
MapReduceAnyCollection 34469 34626 +0.5% 1.00x
MapReduceAnyCollectionShort 46529 46799 +0.6% 0.99x (?)
MapReduceClass 41427 41412 -0.0% 1.00x (?)
MapReduceClassShort 50609 51050 +0.9% 0.99x (?)
MapReduceLazyCollection 30926 31112 +0.6% 0.99x
MapReduceLazyCollectionShort 39475 39659 +0.5% 1.00x (?)
MapReduceLazySequence 22662 22622 -0.2% 1.00x (?)
MapReduceSequence 37670 37779 +0.3% 1.00x (?)
MapReduceShort 46288 46741 +1.0% 0.99x (?)
MapReduceShortString 257 262 +1.9% 0.98x
MapReduceString 2369 2385 +0.7% 0.99x
Memset 45274 45273 -0.0% 1.00x (?)
MonteCarloE 932048 923914 -0.9% 1.01x
MonteCarloPi 4021561 3996728 -0.6% 1.01x
NSDictionaryCastToSwift 6692 6588 -1.6% 1.02x (?)
NSError 744 720 -3.2% 1.03x
NSStringConversion 397 410 +3.3% 0.97x
NopDeinit 169982 169977 -0.0% 1.00x (?)
ObjectAllocation 1445 1433 -0.8% 1.01x (?)
ObjectiveCBridgeFromNSArrayAnyObject 21305 21495 +0.9% 0.99x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 6846 6913 +1.0% 0.99x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 37702 37909 +0.5% 0.99x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 32759 32692 -0.2% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 110931 109701 -1.1% 1.01x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 7322 7430 +1.5% 0.99x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 86629 89047 +2.8% 0.97x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 101574 100508 -1.0% 1.01x (?)
ObjectiveCBridgeFromNSSetAnyObject 60764 60818 +0.1% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 6317 6560 +3.8% 0.96x (?)
ObjectiveCBridgeFromNSSetAnyObjectToString 64207 64381 +0.3% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 68313 70286 +2.9% 0.97x (?)
ObjectiveCBridgeFromNSString 2935 2940 +0.2% 1.00x (?)
ObjectiveCBridgeFromNSStringForced 2241 2240 -0.0% 1.00x (?)
ObjectiveCBridgeStubDataAppend 4464 4453 -0.2% 1.00x (?)
ObjectiveCBridgeStubDateAccess 1031 1031 +0.0% 1.00x
ObjectiveCBridgeStubDateMutation 526 528 +0.4% 1.00x (?)
ObjectiveCBridgeStubFromArrayOfNSString 23686 23816 +0.5% 0.99x (?)
ObjectiveCBridgeStubFromNSDate 3864 3865 +0.0% 1.00x (?)
ObjectiveCBridgeStubFromNSDateRef 4427 4426 -0.0% 1.00x (?)
ObjectiveCBridgeStubFromNSString 566 570 +0.7% 0.99x (?)
ObjectiveCBridgeStubFromNSStringRef 178 177 -0.6% 1.01x
ObjectiveCBridgeStubNSDataAppend 2772 2805 +1.2% 0.99x (?)
ObjectiveCBridgeStubNSDateRefAccess 1221 1220 -0.1% 1.00x (?)
ObjectiveCBridgeStubToArrayOfNSString 28401 28663 +0.9% 0.99x (?)
ObjectiveCBridgeStubToNSDate 15653 15708 +0.4% 1.00x (?)
ObjectiveCBridgeStubToNSDateRef 3350 3341 -0.3% 1.00x (?)
ObjectiveCBridgeStubToNSString 1559 1557 -0.1% 1.00x (?)
ObjectiveCBridgeStubToNSStringRef 148 148 +0.0% 1.00x
ObjectiveCBridgeStubURLAppendPath 219281 217076 -1.0% 1.01x (?)
ObjectiveCBridgeStubURLAppendPathRef 218323 218321 -0.0% 1.00x (?)
ObjectiveCBridgeToNSArray 29022 28158 -3.0% 1.03x (?)
ObjectiveCBridgeToNSDictionary 45484 45885 +0.9% 0.99x (?)
ObjectiveCBridgeToNSSet 39467 39413 -0.1% 1.00x (?)
ObjectiveCBridgeToNSString 1304 1300 -0.3% 1.00x (?)
ObserverClosure 6857 6837 -0.3% 1.00x (?)
ObserverForwarderStruct 4935 4935 +0.0% 1.00x
ObserverPartiallyAppliedMethod 8331 8323 -0.1% 1.00x (?)
ObserverUnappliedMethod 8256 8294 +0.5% 1.00x
Phonebook 20925 21168 +1.2% 0.99x
PolymorphicCalls 5070 5161 +1.8% 0.98x
PopFrontArray 9109 9091 -0.2% 1.00x
PopFrontArrayGeneric 7988 7979 -0.1% 1.00x (?)
PrefixAnyCollection 15091 15068 -0.2% 1.00x (?)
PrefixAnyCollectionLazy 115668 117459 +1.5% 0.98x
PrefixAnySeqCRangeIter 17987 17908 -0.4% 1.00x
PrefixAnySeqCRangeIterLazy 17978 17987 +0.1% 1.00x (?)
PrefixAnySeqCntRange 15127 15109 -0.1% 1.00x (?)
PrefixAnySeqCntRangeLazy 15173 15165 -0.1% 1.00x (?)
PrefixAnySequence 10185 10047 -1.4% 1.01x
PrefixAnySequenceLazy 10203 10192 -0.1% 1.00x (?)
PrefixArray 5934 5894 -0.7% 1.01x
PrefixArrayLazy 33883 33913 +0.1% 1.00x
PrefixCountableRange 334 334 +0.0% 1.00x
PrefixCountableRangeLazy 29484 29431 -0.2% 1.00x (?)
PrefixSequence 9701 9679 -0.2% 1.00x
PrefixSequenceLazy 9687 9705 +0.2% 1.00x (?)
PrefixWhileAnyCollection 28659 28636 -0.1% 1.00x (?)
PrefixWhileAnyCollectionLazy 17936 17872 -0.4% 1.00x (?)
PrefixWhileAnySeqCRangeIter 38092 38139 +0.1% 1.00x (?)
PrefixWhileAnySeqCRangeIterLazy 17671 17521 -0.8% 1.01x (?)
PrefixWhileAnySeqCntRange 28664 28647 -0.1% 1.00x (?)
PrefixWhileAnySeqCntRangeLazy 17559 17498 -0.3% 1.00x (?)
PrefixWhileAnySequence 31133 31119 -0.0% 1.00x (?)
PrefixWhileAnySequenceLazy 10344 10352 +0.1% 1.00x
PrefixWhileArray 16222 16225 +0.0% 1.00x (?)
PrefixWhileArrayLazy 14411 14460 +0.3% 1.00x
PrefixWhileCountableRange 13796 13760 -0.3% 1.00x
PrefixWhileCountableRangeLazy 17564 17459 -0.6% 1.01x (?)
PrefixWhileSequence 30403 30450 +0.2% 1.00x (?)
PrefixWhileSequenceLazy 10278 10242 -0.4% 1.00x
Prims 10003 10037 +0.3% 1.00x (?)
PrimsSplit 9998 10005 +0.1% 1.00x (?)
ProtocolDispatch 7880 7880 +0.0% 1.00x
ProtocolDispatch2 495 496 +0.2% 1.00x
RC4 18888 19304 +2.2% 0.98x
RGBHistogram 29840 29529 -1.0% 1.01x
RGBHistogramOfObjects 98485 97731 -0.8% 1.01x (?)
RangeAssignment 4891 4851 -0.8% 1.01x (?)
RangeIterationSigned 17735 17849 +0.6% 0.99x (?)
RecursiveOwnedParameter 8001 7989 -0.1% 1.00x
ReversedArray 34300 34643 +1.0% 0.99x
ReversedBidirectional 64149 64462 +0.5% 1.00x
ReversedDictionary 27606 27730 +0.4% 1.00x
SetExclusiveOr 17156 17157 +0.0% 1.00x (?)
SetExclusiveOr_OfObjects 42347 42343 -0.0% 1.00x (?)
SetIntersect 8543 8570 +0.3% 1.00x
SetIntersect_OfObjects 11812 11790 -0.2% 1.00x (?)
SetIsSubsetOf 1437 1437 +0.0% 1.00x
SetIsSubsetOf_OfObjects 1575 1569 -0.4% 1.00x
SetUnion 11826 11859 +0.3% 1.00x (?)
SetUnion_OfObjects 30153 30190 +0.1% 1.00x (?)
SevenBoom 1610 1632 +1.4% 0.99x (?)
Sim2DArray 44746 44741 -0.0% 1.00x
SortLargeExistentials 16806 16803 -0.0% 1.00x (?)
SortLettersInPlace 3011 3007 -0.1% 1.00x (?)
SortSortedStrings 1361 1376 +1.1% 0.99x
SortStrings 2501 2569 +2.7% 0.97x
SortStringsUnicode 8573 8629 +0.7% 0.99x (?)
StackPromo 86737 86471 -0.3% 1.00x (?)
StaticArray 2114 2114 +0.0% 1.00x
StrComplexWalk 7014 6996 -0.3% 1.00x
StrToInt 72747 72528 -0.3% 1.00x (?)
StringAdder 3760 3759 -0.0% 1.00x (?)
StringBuilder 6959 6984 +0.4% 1.00x (?)
StringBuilderLong 1109 1106 -0.3% 1.00x
StringEdits 354197 357735 +1.0% 0.99x
StringEnumRawValueInitialization 12880 12904 +0.2% 1.00x (?)
StringEqualPointerComparison 2889 2863 -0.9% 1.01x
StringFromLongWholeSubstring 216 215 -0.5% 1.00x (?)
StringFromLongWholeSubstringGeneric 205 205 +0.0% 1.00x
StringHasPrefix 2328 2327 -0.0% 1.00x
StringHasPrefixUnicode 17133 17104 -0.2% 1.00x (?)
StringHasSuffix 2448 2501 +2.2% 0.98x
StringHasSuffixUnicode 64047 64417 +0.6% 0.99x (?)
StringInterpolation 13430 13472 +0.3% 1.00x
StringMatch 34362 34249 -0.3% 1.00x (?)
StringUTF16Builder 7801 7847 +0.6% 0.99x (?)
StringWalk 12047 12078 +0.3% 1.00x (?)
StringWithCString 57536 57771 +0.4% 1.00x
SubstringComparable 4336 4334 -0.0% 1.00x (?)
SubstringEqualString 6365 6366 +0.0% 1.00x (?)
SubstringEquatable 9106 9084 -0.2% 1.00x (?)
SubstringFromLongString 17 17 +0.0% 1.00x
SubstringFromLongStringGeneric 103 104 +1.0% 0.99x
SuffixAnyCollection 5046 5038 -0.2% 1.00x (?)
SuffixAnyCollectionLazy 39241 39468 +0.6% 0.99x (?)
SuffixAnySeqCRangeIter 38057 38046 -0.0% 1.00x (?)
SuffixAnySeqCRangeIterLazy 38853 38819 -0.1% 1.00x (?)
SuffixAnySeqCntRange 5053 5030 -0.5% 1.00x (?)
SuffixAnySeqCntRangeLazy 5071 5069 -0.0% 1.00x (?)
SuffixAnySequence 28606 28501 -0.4% 1.00x
SuffixAnySequenceLazy 28575 28624 +0.2% 1.00x
SuffixArray 1900 1886 -0.7% 1.01x
SuffixArrayLazy 11305 11313 +0.1% 1.00x (?)
SuffixCountableRange 117 117 +0.0% 1.00x
SuffixCountableRangeLazy 9859 9809 -0.5% 1.01x
SuffixSequence 28178 28159 -0.1% 1.00x (?)
SuffixSequenceLazy 28212 28204 -0.0% 1.00x (?)
SumUsingReduce 214672 214529 -0.1% 1.00x
SumUsingReduceInto 212892 212609 -0.1% 1.00x
SuperChars 190784 190471 -0.2% 1.00x (?)
TwoSum 3708 3690 -0.5% 1.00x
TypeFlood 173 172 -0.6% 1.01x (?)
UTF8Decode 36832 36843 +0.0% 1.00x
Walsh 12498 12503 +0.0% 1.00x (?)
XorLoop 25487 25486 -0.0% 1.00x (?)
Hardware Overview
  Model Name: Mac mini
  Model Identifier: Macmini7,1
  Processor Name: Intel Core i5
  Processor Speed: 2.8 GHz
  Number of Processors: 1
  Total Number of Cores: 2
  L2 Cache (per Core): 256 KB
  L3 Cache: 3 MB
  Memory: 16 GB

@xwu
Copy link
Collaborator Author

xwu commented Nov 30, 2017

@CodaFi Can you think of others who might be interested in reviewing this before potential merging?

@CodaFi
Copy link
Contributor

CodaFi commented Nov 30, 2017

This patch LGTM, but I'll tag Slava too.

@CodaFi CodaFi requested a review from slavapestov November 30, 2017 02:22
@CodaFi
Copy link
Contributor

CodaFi commented Dec 5, 2017

@swift-ci please test

@xwu
Copy link
Collaborator Author

xwu commented Dec 10, 2017

Rebased to resolve documentation update conflicts. @slavapestov, LGTY?

@airspeedswift airspeedswift requested review from lorentey and removed request for airspeedswift December 12, 2017 00:40
Copy link
Member

@lorentey lorentey left a comment

Choose a reason for hiding this comment

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

The new _combineHashValues looks great! LGTM

(It would be nice if we moved the choice of a hash function out of Hashable, so that we would not need to hard-wire any particular combinator here. However, that's clearly out of scope for this PR, and we definitely want to have better hashing until that's done.)

@lorentey
Copy link
Member

@swift-ci please test

@xwu
Copy link
Collaborator Author

xwu commented Dec 19, 2017

Shall we go ahead?

@lorentey
Copy link
Member

LGTM!

@lorentey lorentey merged commit f481530 into swiftlang:master Dec 21, 2017
@xwu xwu deleted the much-of-a-muchness branch December 21, 2017 18:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants