Skip to content

[stdlib] Implement SE-0171: Reduce with inout #10976

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 3 commits into from
Jul 24, 2017
Merged

[stdlib] Implement SE-0171: Reduce with inout #10976

merged 3 commits into from
Jul 24, 2017

Conversation

d-ronnqvist
Copy link
Contributor

This PR implements SE-0171: Reduce with inout, which is accepted but not implemented.

Trying to mimic the existing reduce(_:_:) implementation as closely as possible there are a few differences between this implementation and the proposal that's worth noting:

  • The initial parameter was renamed initialResult to match the first parameter in reduce(_:_:).
  • The unnamed combining parameter was renamed updateAccumulatingResult to try and resemble the naming of the closure parameter in reduce(_:_:).
  • The closure throws and reduce(into:_) re-throws.

I've tried to keep the reduce(into:_:) documentation close to the existing reduce(_:_:) documentation but also mention that reduce(into:_) is preferred over reduce(_:_:) when the result is a copy-on-write type and include an example where the result is a dictionary.

I've added a few benchmarks and updated one expected error message (since there are now two reduce methods, the diagnostic is different).

I didn't know how an implementation like this should be tested and I couldn't find much inspiration from existing reduce testing. (Comments and feedback are appreciated).

Implements SE-0171. I couldn't find a bug number for it in the Swift bug tracker.

Implement and document `reduce(into:_:)`, with a few notes:

 - The `initial` parameter was renamed `initialResult` to match the first parameter in `reduce(_:_:)`.
 - The unnamed `combining` parameter was renamed `updateAccumulatingResult` to try and resemble the naming of the closure parameter in `reduce(_:_:)`.
 - The closure throws and `reduce(into:_)` re-throws.
 - This documentation mentions that `reduce(into:_)` is preferred over `reduce(_:_:)` when the result is a copy-on-write type and an example where the result is a dictionary.

Add benchmarks for reduce with accumulation into a scalar, an array, and a dictionary.

Update expected error message in closures test (since there are now two `reduce` methods, the diagnostic is different).
@moiseev
Copy link
Contributor

moiseev commented Jul 15, 2017

@swift-ci Please test

@moiseev
Copy link
Contributor

moiseev commented Jul 15, 2017

@swift-ci Please smoke benchmark

@swift-ci
Copy link
Contributor

Build comment file:

Build failed before running benchmark.


@d-ronnqvist
Copy link
Contributor Author

That’s odd. It looks like the benchmarks didn’t find reduce(into:_:) (complaining about an extraneous argument label ‘into:’)

@moiseev
Copy link
Contributor

moiseev commented Jul 16, 2017

@d-ronnqvist Can you please add a few unit tests to see if that reproduces the problem (which might be a compiler picking another overload for some reason, and not seeing the new one), otherwise it's the problem with the benchmarking setup. Having unit tests is not a bad idea anyway. Thanks!

This checks:
 - The examples from the documentation of `reduce(_:_:)` and `reduce(into:_:)`.
 - Different levels of inference in the closure arguments being passed.
 - That the value passed as the `initialResult` remains unmodified.
@dabrahams
Copy link
Contributor

@swift-ci Please clean benchmark

1 similar comment
@dabrahams
Copy link
Contributor

@swift-ci Please clean benchmark

@dabrahams
Copy link
Contributor

@swift-ci Please benchmark

@natecook1000
Copy link
Member

@dabrahams @moiseev Benchmarking won't work in this case since it will try to run the benchmark with the pre-merge version of the stdlib, which doesn't have reduce(into:_:). In general, unless the CI has gotten smarter, I don't think benchmarking works on a PR that adds a benchmark.

@natecook1000
Copy link
Member

@swift-ci Please smoke test

@moiseev
Copy link
Contributor

moiseev commented Jul 17, 2017

@natecook1000 Benchmarking just runs two separate builds: pre- and post- merge. And the new benchmarks are reflected in a special session, since they did not exist-pre-merge, there is nothing to compare to.

@moiseev
Copy link
Contributor

moiseev commented Jul 17, 2017

The above comment is my understanding of it, anyway.

@dabrahams
Copy link
Contributor

@swift-ci Please benchmark

@dabrahams
Copy link
Contributor

@natecook1000 My understanding matches @moiseev's

@natecook1000
Copy link
Member

😬 Yep, I'm totally off-base on the compiler error question! I think it still chokes when the number of benchmarks doesn't match up, but perhaps that got fixed somewhere along the way.

@dabrahams
Copy link
Contributor

@natecook1000 I've only ever seen it not-choke on those.

@swift-ci
Copy link
Contributor

Build comment file:

Optimized (O)

Regression (5)
TEST OLD NEW DELTA SPEEDUP
DictionaryRemove 2418 2818 +16.5% 0.86x
BitCount 138 148 +7.2% 0.93x (?)
NopDeinit 21393 22904 +7.1% 0.93x
OpenClose 48 51 +6.2% 0.94x
ArrayAppendLatin1 30204 31897 +5.6% 0.95x
Improvement (4)
TEST OLD NEW DELTA SPEEDUP
ProtocolDispatch 3030 2424 -20.0% 1.25x
Calculator 36 33 -8.3% 1.09x
ObjectiveCBridgeStubNSDateRefAccess 338 312 -7.7% 1.08x
PopFrontUnsafePointer 9501 8969 -5.6% 1.06x (?)
No Changes (329)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 2945 2960 +0.5% 0.99x (?)
AnyHashableWithAClass 66582 66615 +0.0% 1.00x (?)
Array2D 2033 2036 +0.1% 1.00x (?)
ArrayAppend 771 772 +0.1% 1.00x (?)
ArrayAppendArrayOfInt 595 595 +0.0% 1.00x
ArrayAppendAscii 9947 9976 +0.3% 1.00x (?)
ArrayAppendFromGeneric 596 595 -0.2% 1.00x (?)
ArrayAppendGenericStructs 1216 1222 +0.5% 1.00x (?)
ArrayAppendLazyMap 925 925 +0.0% 1.00x
ArrayAppendOptionals 1228 1224 -0.3% 1.00x (?)
ArrayAppendRepeatCol 838 838 +0.0% 1.00x
ArrayAppendReserved 532 532 +0.0% 1.00x
ArrayAppendSequence 944 943 -0.1% 1.00x (?)
ArrayAppendStrings 13543 13684 +1.0% 0.99x (?)
ArrayAppendToFromGeneric 596 596 +0.0% 1.00x
ArrayAppendToGeneric 595 595 +0.0% 1.00x
ArrayAppendUTF16 28703 29303 +2.1% 0.98x
ArrayInClass 61 61 +0.0% 1.00x
ArrayLiteral 1225 1225 +0.0% 1.00x
ArrayOfGenericPOD 219 219 +0.0% 1.00x
ArrayOfGenericRef 4008 4000 -0.2% 1.00x (?)
ArrayOfPOD 166 166 +0.0% 1.00x
ArrayOfRef 3900 3889 -0.3% 1.00x (?)
ArrayPlusEqualArrayOfInt 595 596 +0.2% 1.00x (?)
ArrayPlusEqualFiveElementCollection 4652 4678 +0.6% 0.99x (?)
ArrayPlusEqualSingleElementCollection 771 771 +0.0% 1.00x
ArrayPlusEqualThreeElements 1581 1584 +0.2% 1.00x (?)
ArraySubscript 1506 1503 -0.2% 1.00x (?)
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
ByteSwap 115 118 +2.6% 0.97x
CStringLongAscii 4283 4249 -0.8% 1.01x (?)
CStringLongNonAscii 2054 2075 +1.0% 0.99x (?)
CStringShortAscii 4785 4800 +0.3% 1.00x (?)
CaptureProp 4851 4622 -4.7% 1.05x
CharIndexing_ascii_unicodeScalars 14209 14205 -0.0% 1.00x (?)
CharIndexing_ascii_unicodeScalars_Backwards 13638 13817 +1.3% 0.99x (?)
CharIndexing_chinese_unicodeScalars 10764 10762 -0.0% 1.00x (?)
CharIndexing_chinese_unicodeScalars_Backwards 10342 10474 +1.3% 0.99x (?)
CharIndexing_japanese_unicodeScalars 17004 17003 -0.0% 1.00x (?)
CharIndexing_japanese_unicodeScalars_Backwards 16322 16539 +1.3% 0.99x
CharIndexing_korean_unicodeScalars 13778 13775 -0.0% 1.00x (?)
CharIndexing_korean_unicodeScalars_Backwards 13226 13394 +1.3% 0.99x (?)
CharIndexing_punctuatedJapanese_unicodeScalars 2586 2585 -0.0% 1.00x (?)
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 2505 2528 +0.9% 0.99x
CharIndexing_punctuated_unicodeScalars 3232 3230 -0.1% 1.00x (?)
CharIndexing_punctuated_unicodeScalars_Backwards 3123 3147 +0.8% 0.99x (?)
CharIndexing_russian_unicodeScalars 11841 11838 -0.0% 1.00x (?)
CharIndexing_russian_unicodeScalars_Backwards 11376 11512 +1.2% 0.99x
CharIndexing_tweet_unicodeScalars 28010 28011 +0.0% 1.00x (?)
CharIndexing_tweet_unicodeScalars_Backwards 26856 27251 +1.5% 0.99x
CharIndexing_utf16_unicodeScalars 83689 82449 -1.5% 1.02x
CharIndexing_utf16_unicodeScalars_Backwards 98176 97943 -0.2% 1.00x (?)
CharIteration_ascii_unicodeScalars 15605 15814 +1.3% 0.99x
CharIteration_ascii_unicodeScalars_Backwards 18737 18930 +1.0% 0.99x (?)
CharIteration_chinese_unicodeScalars 11819 11977 +1.3% 0.99x (?)
CharIteration_chinese_unicodeScalars_Backwards 14180 14325 +1.0% 0.99x
CharIteration_japanese_unicodeScalars 18678 18932 +1.4% 0.99x
CharIteration_japanese_unicodeScalars_Backwards 22440 22673 +1.0% 0.99x (?)
CharIteration_korean_unicodeScalars 15128 15335 +1.4% 0.99x
CharIteration_korean_unicodeScalars_Backwards 18168 18354 +1.0% 0.99x
CharIteration_punctuatedJapanese_unicodeScalars 2830 2862 +1.1% 0.99x
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 3351 3382 +0.9% 0.99x
CharIteration_punctuated_unicodeScalars 3543 3585 +1.2% 0.99x
CharIteration_punctuated_unicodeScalars_Backwards 4205 4246 +1.0% 0.99x (?)
CharIteration_russian_unicodeScalars 13001 13177 +1.4% 0.99x
CharIteration_russian_unicodeScalars_Backwards 15603 15763 +1.0% 0.99x (?)
CharIteration_tweet_unicodeScalars 30749 31179 +1.4% 0.99x
CharIteration_tweet_unicodeScalars_Backwards 37049 37451 +1.1% 0.99x
CharIteration_utf16_unicodeScalars 92146 91336 -0.9% 1.01x
CharIteration_utf16_unicodeScalars_Backwards 134276 133887 -0.3% 1.00x (?)
CharacterLiteralsLarge 5980 5983 +0.1% 1.00x (?)
CharacterLiteralsSmall 404 402 -0.5% 1.00x
Chars 418 422 +1.0% 0.99x
ClassArrayGetter 13 13 +0.0% 1.00x
DeadArray 186 181 -2.7% 1.03x (?)
Dictionary 558 551 -1.3% 1.01x
Dictionary2 1834 1831 -0.2% 1.00x (?)
Dictionary2OfObjects 3278 3291 +0.4% 1.00x (?)
Dictionary3 441 441 +0.0% 1.00x
Dictionary3OfObjects 884 883 -0.1% 1.00x (?)
DictionaryBridge 2545 2563 +0.7% 0.99x (?)
DictionaryGroup 276 276 +0.0% 1.00x
DictionaryGroupOfObjects 1786 1782 -0.2% 1.00x (?)
DictionaryLiteral 1475 1480 +0.3% 1.00x (?)
DictionaryOfObjects 2315 2320 +0.2% 1.00x (?)
DictionaryRemoveOfObjects 23214 23287 +0.3% 1.00x (?)
DictionarySwap 429 429 +0.0% 1.00x
DictionarySwapOfObjects 6854 6872 +0.3% 1.00x (?)
DropFirstAnyCollection 56 56 +0.0% 1.00x
DropFirstAnyCollectionLazy 45009 45019 +0.0% 1.00x (?)
DropFirstAnySeqCRangeIter 26400 26403 +0.0% 1.00x (?)
DropFirstAnySeqCRangeIterLazy 26402 26407 +0.0% 1.00x (?)
DropFirstAnySeqCntRange 50 50 +0.0% 1.00x
DropFirstAnySeqCntRangeLazy 50 50 +0.0% 1.00x
DropFirstAnySequence 5953 5948 -0.1% 1.00x (?)
DropFirstAnySequenceLazy 6012 5944 -1.1% 1.01x (?)
DropFirstArray 24 24 +0.0% 1.00x
DropFirstArrayLazy 24 24 +0.0% 1.00x
DropFirstCountableRange 32 32 +0.0% 1.00x
DropFirstCountableRangeLazy 32 32 +0.0% 1.00x
DropFirstSequence 2094 2093 -0.0% 1.00x
DropFirstSequenceLazy 2118 2117 -0.0% 1.00x (?)
DropLastAnyCollection 22 22 +0.0% 1.00x
DropLastAnyCollectionLazy 15008 15018 +0.1% 1.00x (?)
DropLastAnySeqCRangeIter 4656 4668 +0.3% 1.00x (?)
DropLastAnySeqCRangeIterLazy 4625 4662 +0.8% 0.99x (?)
DropLastAnySeqCntRange 16 16 +0.0% 1.00x
DropLastAnySeqCntRangeLazy 16 16 +0.0% 1.00x
DropLastAnySequence 6677 6762 +1.3% 0.99x (?)
DropLastAnySequenceLazy 6520 6537 +0.3% 1.00x (?)
DropLastArray 8 8 +0.0% 1.00x
DropLastArrayLazy 8 8 +0.0% 1.00x
DropLastCountableRange 10 10 +0.0% 1.00x
DropLastCountableRangeLazy 10 10 +0.0% 1.00x
DropLastSequence 575 559 -2.8% 1.03x
DropLastSequenceLazy 574 559 -2.6% 1.03x (?)
DropWhileAnyCollection 69 69 +0.0% 1.00x
DropWhileAnyCollectionLazy 103 103 +0.0% 1.00x
DropWhileAnySeqCRangeIter 21356 21578 +1.0% 0.99x (?)
DropWhileAnySeqCRangeIterLazy 103 103 +0.0% 1.00x
DropWhileAnySeqCntRange 64 64 +0.0% 1.00x
DropWhileAnySeqCntRangeLazy 103 103 +0.0% 1.00x
DropWhileAnySequence 6549 6557 +0.1% 1.00x (?)
DropWhileAnySequenceLazy 2032 2032 +0.0% 1.00x
DropWhileArray 37 37 +0.0% 1.00x
DropWhileArrayLazy 78 78 +0.0% 1.00x
DropWhileCountableRange 36 35 -2.8% 1.03x
DropWhileCountableRangeLazy 68 68 +0.0% 1.00x
DropWhileSequence 1548 1548 +0.0% 1.00x
DropWhileSequenceLazy 65 65 +0.0% 1.00x
EqualStringSubstring 383 384 +0.3% 1.00x (?)
EqualSubstringString 382 383 +0.3% 1.00x
EqualSubstringSubstring 386 385 -0.3% 1.00x
EqualSubstringSubstringGenericEquatable 390 387 -0.8% 1.01x
ErrorHandling 2825 2789 -1.3% 1.01x (?)
Hanoi 3422 3369 -1.5% 1.02x
HashTest 1679 1674 -0.3% 1.00x (?)
Histogram 300 298 -0.7% 1.01x
Integrate 262 262 +0.0% 1.00x
IterateData 762 760 -0.3% 1.00x (?)
Join 374 374 +0.0% 1.00x
LazilyFilteredArrays 64763 64784 +0.0% 1.00x (?)
LazilyFilteredRange 3884 3887 +0.1% 1.00x (?)
LessSubstringSubstring 384 383 -0.3% 1.00x (?)
LessSubstringSubstringGenericComparable 383 384 +0.3% 1.00x
LinkedList 7142 7069 -1.0% 1.01x (?)
MapReduce 325 325 +0.0% 1.00x
MapReduceAnyCollection 301 302 +0.3% 1.00x (?)
MapReduceAnyCollectionShort 1991 1996 +0.3% 1.00x (?)
MapReduceClass 3066 3062 -0.1% 1.00x (?)
MapReduceClassShort 4510 4581 +1.6% 0.98x (?)
MapReduceLazyCollection 15 15 +0.0% 1.00x
MapReduceLazyCollectionShort 45 44 -2.2% 1.02x
MapReduceLazySequence 90 90 +0.0% 1.00x
MapReduceSequence 450 452 +0.4% 1.00x (?)
MapReduceShort 1924 1922 -0.1% 1.00x (?)
MapReduceShortString 21 21 +0.0% 1.00x
MapReduceString 92 92 +0.0% 1.00x
Memset 234 234 +0.0% 1.00x
MonteCarloE 10426 10277 -1.4% 1.01x
MonteCarloPi 43925 44040 +0.3% 1.00x (?)
NSDictionaryCastToSwift 5428 5446 +0.3% 1.00x (?)
NSError 289 289 +0.0% 1.00x
NSStringConversion 364 360 -1.1% 1.01x (?)
ObjectAllocation 178 178 +0.0% 1.00x
ObjectiveCBridgeFromNSArrayAnyObject 22398 22146 -1.1% 1.01x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 3424 3452 +0.8% 0.99x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 39036 39212 +0.5% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 33029 33169 +0.4% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 118651 117830 -0.7% 1.01x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 5029 5027 -0.0% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 90650 89755 -1.0% 1.01x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 98342 98704 +0.4% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObject 63712 64037 +0.5% 0.99x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 4142 4155 +0.3% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectToString 68030 67512 -0.8% 1.01x (?)
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 67619 67997 +0.6% 0.99x (?)
ObjectiveCBridgeFromNSString 986 986 +0.0% 1.00x
ObjectiveCBridgeFromNSStringForced 1839 1837 -0.1% 1.00x (?)
ObjectiveCBridgeStubDataAppend 3710 3758 +1.3% 0.99x (?)
ObjectiveCBridgeStubDateAccess 181 181 +0.0% 1.00x
ObjectiveCBridgeStubDateMutation 272 272 +0.0% 1.00x
ObjectiveCBridgeStubFromArrayOfNSString 24394 24709 +1.3% 0.99x (?)
ObjectiveCBridgeStubFromNSDate 3685 3700 +0.4% 1.00x (?)
ObjectiveCBridgeStubFromNSDateRef 4016 4143 +3.2% 0.97x
ObjectiveCBridgeStubFromNSString 544 551 +1.3% 0.99x (?)
ObjectiveCBridgeStubFromNSStringRef 146 145 -0.7% 1.01x (?)
ObjectiveCBridgeStubNSDataAppend 2396 2290 -4.4% 1.05x (?)
ObjectiveCBridgeStubNSDateMutationRef 12114 12620 +4.2% 0.96x (?)
ObjectiveCBridgeStubToArrayOfNSString 28872 28367 -1.7% 1.02x (?)
ObjectiveCBridgeStubToNSDate 14584 14839 +1.7% 0.98x (?)
ObjectiveCBridgeStubToNSDateRef 3212 3256 +1.4% 0.99x (?)
ObjectiveCBridgeStubToNSString 1506 1505 -0.1% 1.00x (?)
ObjectiveCBridgeStubToNSStringRef 108 109 +0.9% 0.99x (?)
ObjectiveCBridgeStubURLAppendPath 218978 217634 -0.6% 1.01x (?)
ObjectiveCBridgeStubURLAppendPathRef 215699 213436 -1.0% 1.01x (?)
ObjectiveCBridgeToNSArray 28527 28371 -0.5% 1.01x (?)
ObjectiveCBridgeToNSDictionary 44579 44728 +0.3% 1.00x (?)
ObjectiveCBridgeToNSSet 38879 38843 -0.1% 1.00x (?)
ObjectiveCBridgeToNSString 1273 1270 -0.2% 1.00x (?)
ObserverClosure 2276 2275 -0.0% 1.00x (?)
ObserverForwarderStruct 1121 1123 +0.2% 1.00x (?)
ObserverPartiallyAppliedMethod 3757 3748 -0.2% 1.00x (?)
ObserverUnappliedMethod 2649 2650 +0.0% 1.00x (?)
Phonebook 6236 6127 -1.7% 1.02x
PolymorphicCalls 21 22 +4.8% 0.95x
PopFrontArray 1199 1203 +0.3% 1.00x (?)
PopFrontArrayGeneric 1199 1203 +0.3% 1.00x (?)
PrefixAnyCollection 56 56 +0.0% 1.00x
PrefixAnyCollectionLazy 45034 45014 -0.0% 1.00x (?)
PrefixAnySeqCRangeIter 20644 20693 +0.2% 1.00x (?)
PrefixAnySeqCRangeIterLazy 20635 20435 -1.0% 1.01x (?)
PrefixAnySeqCntRange 50 50 +0.0% 1.00x
PrefixAnySeqCntRangeLazy 50 50 +0.0% 1.00x
PrefixAnySequence 5129 5247 +2.3% 0.98x (?)
PrefixAnySequenceLazy 5221 5428 +4.0% 0.96x
PrefixArray 24 24 +0.0% 1.00x
PrefixArrayLazy 24 25 +4.2% 0.96x
PrefixCountableRange 32 32 +0.0% 1.00x
PrefixCountableRangeLazy 32 32 +0.0% 1.00x
PrefixSequence 1571 1571 +0.0% 1.00x
PrefixSequenceLazy 1515 1515 +0.0% 1.00x
PrefixWhileAnyCollection 96 96 +0.0% 1.00x
PrefixWhileAnyCollectionLazy 75 75 +0.0% 1.00x
PrefixWhileAnySeqCRangeIter 12476 12499 +0.2% 1.00x (?)
PrefixWhileAnySeqCRangeIterLazy 75 75 +0.0% 1.00x
PrefixWhileAnySeqCntRange 90 90 +0.0% 1.00x
PrefixWhileAnySeqCntRangeLazy 75 75 +0.0% 1.00x
PrefixWhileAnySequence 14098 14330 +1.6% 0.98x (?)
PrefixWhileAnySequenceLazy 1492 1492 +0.0% 1.00x
PrefixWhileArray 62 62 +0.0% 1.00x
PrefixWhileArrayLazy 49 49 +0.0% 1.00x
PrefixWhileCountableRange 36 36 +0.0% 1.00x
PrefixWhileCountableRangeLazy 32 32 +0.0% 1.00x
PrefixWhileSequence 294 294 +0.0% 1.00x
PrefixWhileSequenceLazy 28 28 +0.0% 1.00x
Prims 774 788 +1.8% 0.98x (?)
ProtocolDispatch2 168 161 -4.2% 1.04x
RC4 159 160 +0.6% 0.99x
RGBHistogram 2361 2364 +0.1% 1.00x (?)
RGBHistogramOfObjects 24325 24357 +0.1% 1.00x (?)
RangeAssignment 307 305 -0.7% 1.01x (?)
RecursiveOwnedParameter 2317 2331 +0.6% 0.99x
ReversedArray 49 49 +0.0% 1.00x
ReversedBidirectional 28969 28967 -0.0% 1.00x (?)
ReversedDictionary 112 112 +0.0% 1.00x
SetExclusiveOr 3066 2990 -2.5% 1.03x (?)
SetExclusiveOr_OfObjects 9561 9553 -0.1% 1.00x (?)
SetIntersect 306 306 +0.0% 1.00x
SetIntersect_OfObjects 1716 1722 +0.3% 1.00x (?)
SetIsSubsetOf 292 292 +0.0% 1.00x
SetIsSubsetOf_OfObjects 359 359 +0.0% 1.00x
SetUnion 2756 2685 -2.6% 1.03x (?)
SetUnion_OfObjects 8105 8043 -0.8% 1.01x (?)
SevenBoom 1470 1463 -0.5% 1.00x (?)
Sim2DArray 276 276 +0.0% 1.00x
SortLargeExistentials 7898 7890 -0.1% 1.00x (?)
SortLettersInPlace 1142 1135 -0.6% 1.01x (?)
SortSortedStrings 869 865 -0.5% 1.00x (?)
SortStrings 1677 1641 -2.1% 1.02x (?)
SortStringsUnicode 7729 7571 -2.0% 1.02x (?)
StackPromo 22503 22247 -1.1% 1.01x (?)
StaticArray 18 18 +0.0% 1.00x
StrComplexWalk 720 720 +0.0% 1.00x
StrToInt 2037 1985 -2.6% 1.03x
StringAdder 3526 3531 +0.1% 1.00x (?)
StringBuilder 1009 1005 -0.4% 1.00x (?)
StringBuilderLong 961 947 -1.5% 1.01x (?)
StringEdits 114673 114245 -0.4% 1.00x (?)
StringEqualPointerComparison 333 333 +0.0% 1.00x
StringFromLongWholeSubstring 13354 13330 -0.2% 1.00x (?)
StringFromLongWholeSubstringGeneric 21 22 +4.8% 0.95x
StringHasPrefix 33 33 +0.0% 1.00x
StringHasPrefixUnicode 14804 14522 -1.9% 1.02x (?)
StringHasSuffix 33 33 +0.0% 1.00x
StringHasSuffixUnicode 61417 61083 -0.5% 1.01x (?)
StringInterpolation 10696 10700 +0.0% 1.00x (?)
StringMatch 7673 7715 +0.5% 0.99x (?)
StringUTF16Builder 1888 1894 +0.3% 1.00x (?)
StringWalk 1306 1298 -0.6% 1.01x (?)
StringWithCString 54244 54258 +0.0% 1.00x (?)
String_canBeConverted_ascii 43 43 +0.0% 1.00x
String_canBeConverted_utf16 32 32 +0.0% 1.00x
String_canBeConverted_utf8 31 32 +3.2% 0.97x
String_capitalized 10623 10624 +0.0% 1.00x (?)
String_caseInsensitiveCompare_caseDiffering 6255 6257 +0.0% 1.00x (?)
String_caseInsensitiveCompare_equal 6131 6131 +0.0% 1.00x
String_caseInsensitiveCompare_notEqual 97 96 -1.0% 1.01x (?)
String_commonPrefix_notShared 774 774 +0.0% 1.00x
String_commonPrefix_sharedPrefix 809 807 -0.2% 1.00x (?)
String_commonPrefix_sharedPrefix_caseInsensitive 816 814 -0.2% 1.00x (?)
String_components_CharacterSet 263744 263832 +0.0% 1.00x (?)
String_components_String 322881 322754 -0.0% 1.00x (?)
String_dataUsingEncoding 1971 1968 -0.2% 1.00x (?)
String_enumerateLines 233471 233112 -0.2% 1.00x (?)
String_fastestEncoding_ascii 31 31 +0.0% 1.00x
String_fastestEncoding_unicode 31 31 +0.0% 1.00x
String_localizedCapitalized 10639 10632 -0.1% 1.00x (?)
SubstringComparable 1523 1521 -0.1% 1.00x (?)
SubstringEqualString 1437 1430 -0.5% 1.00x (?)
SubstringEquatable 3415 3390 -0.7% 1.01x (?)
SubstringFromLongString 10 10 +0.0% 1.00x
SubstringFromLongStringGeneric 60 60 +0.0% 1.00x
SuffixAnyCollection 22 22 +0.0% 1.00x
SuffixAnyCollectionLazy 14936 14930 -0.0% 1.00x (?)
SuffixAnySeqCRangeIter 4921 4922 +0.0% 1.00x (?)
SuffixAnySeqCRangeIterLazy 4920 4923 +0.1% 1.00x (?)
SuffixAnySeqCntRange 16 16 +0.0% 1.00x
SuffixAnySeqCntRangeLazy 16 16 +0.0% 1.00x
SuffixAnySequence 6630 6791 +2.4% 0.98x
SuffixAnySequenceLazy 6566 6510 -0.9% 1.01x (?)
SuffixArray 8 8 +0.0% 1.00x
SuffixArrayLazy 8 8 +0.0% 1.00x
SuffixCountableRange 10 10 +0.0% 1.00x
SuffixCountableRangeLazy 10 10 +0.0% 1.00x
SuffixSequence 4386 4391 +0.1% 1.00x (?)
SuffixSequenceLazy 4386 4391 +0.1% 1.00x (?)
SuperChars 81415 80951 -0.6% 1.01x (?)
TwoSum 959 967 +0.8% 0.99x (?)
TypeFlood 0 0 +0.0% 1.00x
UTF8Decode 253 253 +0.0% 1.00x
Walsh 355 356 +0.3% 1.00x (?)
XorLoop 347 347 +0.0% 1.00x
accessGlobal 3 3 +0.0% 1.00x
accessInMatSet 18 18 +0.0% 1.00x
accessIndependent 2 2 +0.0% 1.00x
Added (5)
TEST MIN MAX MEAN MAX_RSS
FrequenciesUsingReduceInto 4222 4543 4261 3789005
MapUsingReduceInto 173 191 176 3769958
ReduceIntoArray 173 189 176 3775898
ReduceIntoDictionary 652 723 660 3803750
ReduceIntoInt 9 9 9 3729408

Unoptimized (Onone)

Regression (1)
TEST OLD NEW DELTA SPEEDUP
CharacterLiteralsSmall 664 701 +5.6% 0.95x
Improvement (4)
TEST OLD NEW DELTA SPEEDUP
OpenClose 427 394 -7.7% 1.08x
CharIteration_tweet_unicodeScalars 380825 354145 -7.0% 1.08x
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 7661 7216 -5.8% 1.06x (?)
ObjectiveCBridgeStubDateAccess 1056 1003 -5.0% 1.05x
No Changes (333)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 4926 4920 -0.1% 1.00x (?)
AnyHashableWithAClass 84098 83629 -0.6% 1.01x (?)
Array2D 603521 603515 -0.0% 1.00x (?)
ArrayAppend 3714 3570 -3.9% 1.04x (?)
ArrayAppendArrayOfInt 650 652 +0.3% 1.00x
ArrayAppendAscii 52206 52562 +0.7% 0.99x
ArrayAppendFromGeneric 654 654 +0.0% 1.00x
ArrayAppendGenericStructs 1307 1292 -1.1% 1.01x (?)
ArrayAppendLatin1 79417 78919 -0.6% 1.01x (?)
ArrayAppendLazyMap 211749 209670 -1.0% 1.01x
ArrayAppendOptionals 1295 1297 +0.2% 1.00x (?)
ArrayAppendRepeatCol 211240 212704 +0.7% 0.99x (?)
ArrayAppendReserved 3328 3450 +3.7% 0.96x
ArrayAppendSequence 73122 75623 +3.4% 0.97x
ArrayAppendStrings 13718 13809 +0.7% 0.99x (?)
ArrayAppendToFromGeneric 654 653 -0.2% 1.00x (?)
ArrayAppendToGeneric 654 654 +0.0% 1.00x
ArrayAppendUTF16 75197 75907 +0.9% 0.99x
ArrayInClass 6273 6246 -0.4% 1.00x
ArrayLiteral 1774 1738 -2.0% 1.02x
ArrayOfGenericPOD 3072 3079 +0.2% 1.00x
ArrayOfGenericRef 10359 10036 -3.1% 1.03x
ArrayOfPOD 1892 1832 -3.2% 1.03x
ArrayOfRef 9270 9068 -2.2% 1.02x
ArrayPlusEqualArrayOfInt 652 652 +0.0% 1.00x
ArrayPlusEqualFiveElementCollection 294645 297522 +1.0% 0.99x (?)
ArrayPlusEqualSingleElementCollection 292157 292945 +0.3% 1.00x (?)
ArrayPlusEqualThreeElements 10796 10861 +0.6% 0.99x (?)
ArraySubscript 4184 4185 +0.0% 1.00x (?)
ArrayValueProp 3544 3505 -1.1% 1.01x
ArrayValueProp2 18390 18231 -0.9% 1.01x
ArrayValueProp3 3912 3906 -0.2% 1.00x (?)
ArrayValueProp4 3838 3830 -0.2% 1.00x (?)
BitCount 1655 1741 +5.2% 0.95x
ByteSwap 4113 4301 +4.6% 0.96x
CStringLongAscii 4424 4424 +0.0% 1.00x
CStringLongNonAscii 2244 2263 +0.8% 0.99x (?)
CStringShortAscii 8540 8596 +0.7% 0.99x (?)
Calculator 1220 1164 -4.6% 1.05x
CaptureProp 111487 109223 -2.0% 1.02x
CharIndexing_ascii_unicodeScalars 469238 471494 +0.5% 1.00x (?)
CharIndexing_ascii_unicodeScalars_Backwards 525526 539353 +2.6% 0.97x (?)
CharIndexing_chinese_unicodeScalars 355331 356135 +0.2% 1.00x (?)
CharIndexing_chinese_unicodeScalars_Backwards 394213 394102 -0.0% 1.00x (?)
CharIndexing_japanese_unicodeScalars 564669 566610 +0.3% 1.00x (?)
CharIndexing_japanese_unicodeScalars_Backwards 627096 623575 -0.6% 1.01x (?)
CharIndexing_korean_unicodeScalars 454773 456806 +0.4% 1.00x (?)
CharIndexing_korean_unicodeScalars_Backwards 507760 529967 +4.4% 0.96x (?)
CharIndexing_punctuatedJapanese_unicodeScalars 80920 82521 +2.0% 0.98x (?)
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 91383 92604 +1.3% 0.99x (?)
CharIndexing_punctuated_unicodeScalars 102660 103120 +0.4% 1.00x (?)
CharIndexing_punctuated_unicodeScalars_Backwards 114426 116675 +2.0% 0.98x (?)
CharIndexing_russian_unicodeScalars 391006 392028 +0.3% 1.00x (?)
CharIndexing_russian_unicodeScalars_Backwards 435194 448932 +3.2% 0.97x
CharIndexing_tweet_unicodeScalars 934534 932446 -0.2% 1.00x (?)
CharIndexing_tweet_unicodeScalars_Backwards 1041049 1039314 -0.2% 1.00x (?)
CharIndexing_utf16_unicodeScalars 531527 540221 +1.6% 0.98x
CharIndexing_utf16_unicodeScalars_Backwards 598622 592655 -1.0% 1.01x
CharIteration_ascii_unicodeScalars 179238 178754 -0.3% 1.00x
CharIteration_ascii_unicodeScalars_Backwards 324471 324306 -0.1% 1.00x (?)
CharIteration_chinese_unicodeScalars 136468 136647 +0.1% 1.00x (?)
CharIteration_chinese_unicodeScalars_Backwards 245247 243335 -0.8% 1.01x (?)
CharIteration_japanese_unicodeScalars 215536 214897 -0.3% 1.00x (?)
CharIteration_japanese_unicodeScalars_Backwards 387211 386316 -0.2% 1.00x (?)
CharIteration_korean_unicodeScalars 173462 174330 +0.5% 1.00x (?)
CharIteration_korean_unicodeScalars_Backwards 314323 313761 -0.2% 1.00x (?)
CharIteration_punctuatedJapanese_unicodeScalars 31959 32216 +0.8% 0.99x
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 56657 56417 -0.4% 1.00x (?)
CharIteration_punctuated_unicodeScalars 40053 40031 -0.1% 1.00x (?)
CharIteration_punctuated_unicodeScalars_Backwards 71232 70926 -0.4% 1.00x (?)
CharIteration_russian_unicodeScalars 149752 149132 -0.4% 1.00x
CharIteration_russian_unicodeScalars_Backwards 268908 268345 -0.2% 1.00x (?)
CharIteration_tweet_unicodeScalars_Backwards 666737 638605 -4.2% 1.04x
CharIteration_utf16_unicodeScalars 212475 214325 +0.9% 0.99x
CharIteration_utf16_unicodeScalars_Backwards 411042 415679 +1.1% 0.99x (?)
CharacterLiteralsLarge 6442 6264 -2.8% 1.03x
Chars 48391 48389 -0.0% 1.00x (?)
ClassArrayGetter 1000 1000 +0.0% 1.00x
DeadArray 115837 115645 -0.2% 1.00x (?)
Dictionary 3063 3089 +0.8% 0.99x (?)
Dictionary2 3528 3513 -0.4% 1.00x (?)
Dictionary2OfObjects 6123 6153 +0.5% 1.00x (?)
Dictionary3 1322 1308 -1.1% 1.01x (?)
Dictionary3OfObjects 2358 2343 -0.6% 1.01x (?)
DictionaryBridge 2672 2677 +0.2% 1.00x (?)
DictionaryGroup 5130 5115 -0.3% 1.00x (?)
DictionaryGroupOfObjects 8079 8164 +1.1% 0.99x
DictionaryLiteral 8293 8236 -0.7% 1.01x (?)
DictionaryOfObjects 6570 6741 +2.6% 0.97x (?)
DictionaryRemove 21586 21287 -1.4% 1.01x
DictionaryRemoveOfObjects 59392 59669 +0.5% 1.00x (?)
DictionarySwap 5373 5341 -0.6% 1.01x (?)
DictionarySwapOfObjects 22636 22840 +0.9% 0.99x
DropFirstAnyCollection 19479 19585 +0.5% 0.99x (?)
DropFirstAnyCollectionLazy 136100 135434 -0.5% 1.00x (?)
DropFirstAnySeqCRangeIter 29131 28888 -0.8% 1.01x
DropFirstAnySeqCRangeIterLazy 29043 28860 -0.6% 1.01x
DropFirstAnySeqCntRange 19440 19573 +0.7% 0.99x
DropFirstAnySeqCntRangeLazy 19594 19587 -0.0% 1.00x
DropFirstAnySequence 12773 12829 +0.4% 1.00x
DropFirstAnySequenceLazy 12820 12852 +0.2% 1.00x
DropFirstArray 6398 6290 -1.7% 1.02x
DropFirstArrayLazy 44416 44520 +0.2% 1.00x (?)
DropFirstCountableRange 339 338 -0.3% 1.00x
DropFirstCountableRangeLazy 37198 37687 +1.3% 0.99x (?)
DropFirstSequence 11728 11703 -0.2% 1.00x (?)
DropFirstSequenceLazy 11699 11764 +0.6% 0.99x
DropLastAnyCollection 6501 6563 +1.0% 0.99x
DropLastAnyCollectionLazy 45446 45217 -0.5% 1.01x (?)
DropLastAnySeqCRangeIter 44553 44457 -0.2% 1.00x (?)
DropLastAnySeqCRangeIterLazy 44240 44247 +0.0% 1.00x (?)
DropLastAnySeqCntRange 6496 6542 +0.7% 0.99x
DropLastAnySeqCntRangeLazy 6519 6544 +0.4% 1.00x
DropLastAnySequence 28954 29248 +1.0% 0.99x
DropLastAnySequenceLazy 28910 29754 +2.9% 0.97x
DropLastArray 2141 2105 -1.7% 1.02x
DropLastArrayLazy 14842 14814 -0.2% 1.00x (?)
DropLastCountableRange 117 117 +0.0% 1.00x
DropLastCountableRangeLazy 12432 12575 +1.2% 0.99x
DropLastSequence 28554 28825 +0.9% 0.99x
DropLastSequenceLazy 28517 28661 +0.5% 0.99x (?)
DropWhileAnyCollection 25223 25357 +0.5% 0.99x
DropWhileAnyCollectionLazy 28060 27769 -1.0% 1.01x
DropWhileAnySeqCRangeIter 31600 31450 -0.5% 1.00x (?)
DropWhileAnySeqCRangeIterLazy 28056 27905 -0.5% 1.01x (?)
DropWhileAnySeqCntRange 25245 25343 +0.4% 1.00x
DropWhileAnySeqCntRangeLazy 28080 28030 -0.2% 1.00x
DropWhileAnySequence 15182 15107 -0.5% 1.00x (?)
DropWhileAnySequenceLazy 12444 12306 -1.1% 1.01x
DropWhileArray 9913 9849 -0.6% 1.01x
DropWhileArrayLazy 16767 16809 +0.3% 1.00x (?)
DropWhileCountableRange 6072 5993 -1.3% 1.01x (?)
DropWhileCountableRangeLazy 26761 26669 -0.3% 1.00x (?)
DropWhileSequence 13972 13953 -0.1% 1.00x (?)
DropWhileSequenceLazy 11192 11384 +1.7% 0.98x
EqualStringSubstring 662 664 +0.3% 1.00x
EqualSubstringString 660 660 +0.0% 1.00x
EqualSubstringSubstring 776 785 +1.2% 0.99x (?)
EqualSubstringSubstringGenericEquatable 414 417 +0.7% 0.99x (?)
ErrorHandling 6813 6747 -1.0% 1.01x (?)
Hanoi 18267 18187 -0.4% 1.00x
HashTest 18284 18299 +0.1% 1.00x (?)
Histogram 8659 8698 +0.5% 1.00x (?)
Integrate 710 714 +0.6% 0.99x
IterateData 12738 12825 +0.7% 0.99x
Join 1188 1193 +0.4% 1.00x
LazilyFilteredArrays 1698082 1691918 -0.4% 1.00x (?)
LazilyFilteredRange 691951 679018 -1.9% 1.02x (?)
LessSubstringSubstring 773 777 +0.5% 0.99x
LessSubstringSubstringGenericComparable 445 442 -0.7% 1.01x
LinkedList 40188 40133 -0.1% 1.00x
MapReduce 37521 37403 -0.3% 1.00x (?)
MapReduceAnyCollection 37730 37601 -0.3% 1.00x (?)
MapReduceAnyCollectionShort 50339 49733 -1.2% 1.01x
MapReduceClass 43803 42828 -2.2% 1.02x
MapReduceClassShort 54383 53975 -0.8% 1.01x
MapReduceLazyCollection 32616 32331 -0.9% 1.01x
MapReduceLazyCollectionShort 43698 43655 -0.1% 1.00x (?)
MapReduceLazySequence 25626 25379 -1.0% 1.01x
MapReduceSequence 41071 41389 +0.8% 0.99x
MapReduceShort 50023 49550 -0.9% 1.01x
MapReduceShortString 278 285 +2.5% 0.98x (?)
MapReduceString 2650 2663 +0.5% 1.00x (?)
Memset 43966 43937 -0.1% 1.00x
MonteCarloE 132836 133580 +0.6% 0.99x
MonteCarloPi 52342 52406 +0.1% 1.00x
NSDictionaryCastToSwift 6656 6569 -1.3% 1.01x (?)
NSError 708 703 -0.7% 1.01x (?)
NSStringConversion 403 403 +0.0% 1.00x
NopDeinit 186014 179051 -3.7% 1.04x
ObjectAllocation 1438 1446 +0.6% 0.99x (?)
ObjectiveCBridgeFromNSArrayAnyObject 24231 24794 +2.3% 0.98x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 6731 6751 +0.3% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 40919 40330 -1.4% 1.01x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 33911 34148 +0.7% 0.99x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 122455 120503 -1.6% 1.02x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 95242 97237 +2.1% 0.98x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 104425 99617 -4.6% 1.05x (?)
ObjectiveCBridgeFromNSSetAnyObject 68708 68738 +0.0% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 7344 7334 -0.1% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectToString 73569 74316 +1.0% 0.99x (?)
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 72998 72247 -1.0% 1.01x (?)
ObjectiveCBridgeFromNSString 3895 3901 +0.2% 1.00x (?)
ObjectiveCBridgeFromNSStringForced 2207 2236 +1.3% 0.99x
ObjectiveCBridgeStubDataAppend 3806 3764 -1.1% 1.01x (?)
ObjectiveCBridgeStubDateMutation 485 485 +0.0% 1.00x
ObjectiveCBridgeStubFromArrayOfNSString 24761 25150 +1.6% 0.98x (?)
ObjectiveCBridgeStubFromNSDate 4145 4158 +0.3% 1.00x (?)
ObjectiveCBridgeStubFromNSDateRef 4371 4399 +0.6% 0.99x
ObjectiveCBridgeStubFromNSString 574 576 +0.3% 1.00x (?)
ObjectiveCBridgeStubFromNSStringRef 181 183 +1.1% 0.99x
ObjectiveCBridgeStubNSDataAppend 2751 2687 -2.3% 1.02x (?)
ObjectiveCBridgeStubNSDateMutationRef 16044 15989 -0.3% 1.00x (?)
ObjectiveCBridgeStubNSDateRefAccess 1234 1218 -1.3% 1.01x
ObjectiveCBridgeStubToArrayOfNSString 28750 28721 -0.1% 1.00x (?)
ObjectiveCBridgeStubToNSDate 15390 14862 -3.4% 1.04x (?)
ObjectiveCBridgeStubToNSDateRef 3369 3338 -0.9% 1.01x (?)
ObjectiveCBridgeStubToNSString 1565 1543 -1.4% 1.01x
ObjectiveCBridgeStubToNSStringRef 156 155 -0.6% 1.01x
ObjectiveCBridgeStubURLAppendPath 224424 224589 +0.1% 1.00x (?)
ObjectiveCBridgeStubURLAppendPathRef 223222 224149 +0.4% 1.00x (?)
ObjectiveCBridgeToNSArray 29495 29073 -1.4% 1.01x
ObjectiveCBridgeToNSDictionary 45839 45475 -0.8% 1.01x (?)
ObjectiveCBridgeToNSSet 39977 39353 -1.6% 1.02x (?)
ObjectiveCBridgeToNSString 1300 1299 -0.1% 1.00x (?)
ObserverClosure 6794 6700 -1.4% 1.01x
ObserverForwarderStruct 4796 4795 -0.0% 1.00x (?)
ObserverPartiallyAppliedMethod 8163 8164 +0.0% 1.00x (?)
ObserverUnappliedMethod 8830 8579 -2.8% 1.03x
Phonebook 22059 21815 -1.1% 1.01x
PolymorphicCalls 5415 5366 -0.9% 1.01x
PopFrontArray 9860 10362 +5.1% 0.95x
PopFrontArrayGeneric 8836 8837 +0.0% 1.00x (?)
PopFrontUnsafePointer 97971 98534 +0.6% 0.99x (?)
PrefixAnyCollection 19457 19586 +0.7% 0.99x
PrefixAnyCollectionLazy 136597 137718 +0.8% 0.99x (?)
PrefixAnySeqCRangeIter 23054 23036 -0.1% 1.00x
PrefixAnySeqCRangeIterLazy 22994 22972 -0.1% 1.00x (?)
PrefixAnySeqCntRange 19410 19591 +0.9% 0.99x
PrefixAnySeqCntRangeLazy 19671 19585 -0.4% 1.00x (?)
PrefixAnySequence 10600 10717 +1.1% 0.99x
PrefixAnySequenceLazy 10603 10679 +0.7% 0.99x
PrefixArray 6398 6295 -1.6% 1.02x
PrefixArrayLazy 44406 44536 +0.3% 1.00x
PrefixCountableRange 338 338 +0.0% 1.00x
PrefixCountableRangeLazy 37247 38165 +2.5% 0.98x (?)
PrefixSequence 9525 9759 +2.5% 0.98x
PrefixSequenceLazy 9608 9676 +0.7% 0.99x
PrefixWhileAnyCollection 36576 36976 +1.1% 0.99x
PrefixWhileAnyCollectionLazy 22830 22933 +0.5% 1.00x (?)
PrefixWhileAnySeqCRangeIter 41343 40547 -1.9% 1.02x
PrefixWhileAnySeqCRangeIterLazy 23188 23252 +0.3% 1.00x
PrefixWhileAnySeqCntRange 36525 37014 +1.3% 0.99x
PrefixWhileAnySeqCntRangeLazy 23107 23058 -0.2% 1.00x (?)
PrefixWhileAnySequence 29465 29789 +1.1% 0.99x
PrefixWhileAnySequenceLazy 11270 11049 -2.0% 1.02x
PrefixWhileArray 16916 16857 -0.3% 1.00x
PrefixWhileArrayLazy 14565 14634 +0.5% 1.00x
PrefixWhileCountableRange 17457 17410 -0.3% 1.00x
PrefixWhileCountableRangeLazy 21939 22001 +0.3% 1.00x (?)
PrefixWhileSequence 28275 28334 +0.2% 1.00x
PrefixWhileSequenceLazy 10255 10281 +0.3% 1.00x (?)
Prims 10127 10101 -0.3% 1.00x (?)
ProtocolDispatch 6932 6823 -1.6% 1.02x (?)
ProtocolDispatch2 495 489 -1.2% 1.01x
RC4 19591 19980 +2.0% 0.98x
RGBHistogram 34161 33977 -0.5% 1.01x (?)
RGBHistogramOfObjects 108049 108103 +0.0% 1.00x (?)
RangeAssignment 5761 5763 +0.0% 1.00x (?)
RecursiveOwnedParameter 11172 11186 +0.1% 1.00x (?)
ReversedArray 44022 44520 +1.1% 0.99x (?)
ReversedBidirectional 75639 76122 +0.6% 0.99x (?)
ReversedDictionary 28617 28596 -0.1% 1.00x (?)
SetExclusiveOr 21320 21294 -0.1% 1.00x (?)
SetExclusiveOr_OfObjects 48135 47969 -0.3% 1.00x (?)
SetIntersect 10948 10950 +0.0% 1.00x (?)
SetIntersect_OfObjects 12743 12707 -0.3% 1.00x (?)
SetIsSubsetOf 1685 1678 -0.4% 1.00x (?)
SetIsSubsetOf_OfObjects 1600 1598 -0.1% 1.00x (?)
SetUnion 11813 11803 -0.1% 1.00x (?)
SetUnion_OfObjects 33599 33519 -0.2% 1.00x
SevenBoom 1589 1597 +0.5% 0.99x (?)
Sim2DArray 30018 30018 +0.0% 1.00x
SortLargeExistentials 17932 17907 -0.1% 1.00x (?)
SortLettersInPlace 3167 3144 -0.7% 1.01x
SortSortedStrings 1425 1424 -0.1% 1.00x (?)
SortStrings 2561 2481 -3.1% 1.03x
SortStringsUnicode 8820 8788 -0.4% 1.00x (?)
StackPromo 103604 102111 -1.4% 1.01x (?)
StaticArray 4562 4553 -0.2% 1.00x (?)
StrComplexWalk 6768 6752 -0.2% 1.00x (?)
StrToInt 101636 101720 +0.1% 1.00x (?)
StringAdder 3766 3771 +0.1% 1.00x (?)
StringBuilder 6942 6994 +0.7% 0.99x (?)
StringBuilderLong 1118 1115 -0.3% 1.00x (?)
StringEdits 377133 372246 -1.3% 1.01x (?)
StringEqualPointerComparison 2450 2502 +2.1% 0.98x
StringFromLongWholeSubstring 13237 13227 -0.1% 1.00x (?)
StringFromLongWholeSubstringGeneric 209 213 +1.9% 0.98x (?)
StringHasPrefix 1775 1762 -0.7% 1.01x
StringHasPrefixUnicode 16163 15928 -1.5% 1.01x (?)
StringHasSuffix 1860 1862 +0.1% 1.00x (?)
StringHasSuffixUnicode 63401 63258 -0.2% 1.00x (?)
StringInterpolation 13743 13854 +0.8% 0.99x (?)
StringMatch 31785 32146 +1.1% 0.99x
StringUTF16Builder 7761 7842 +1.0% 0.99x
StringWalk 12973 12748 -1.7% 1.02x
StringWithCString 54247 54296 +0.1% 1.00x (?)
String_canBeConverted_ascii 44 44 +0.0% 1.00x
String_canBeConverted_utf16 32 32 +0.0% 1.00x
String_canBeConverted_utf8 32 32 +0.0% 1.00x
String_capitalized 10627 10624 -0.0% 1.00x (?)
String_caseInsensitiveCompare_caseDiffering 6257 6259 +0.0% 1.00x (?)
String_caseInsensitiveCompare_equal 6134 6138 +0.1% 1.00x (?)
String_caseInsensitiveCompare_notEqual 96 97 +1.0% 0.99x (?)
String_commonPrefix_notShared 776 777 +0.1% 1.00x (?)
String_commonPrefix_sharedPrefix 813 811 -0.2% 1.00x (?)
String_commonPrefix_sharedPrefix_caseInsensitive 820 820 +0.0% 1.00x
String_components_CharacterSet 263936 263433 -0.2% 1.00x (?)
String_components_String 322807 322869 +0.0% 1.00x (?)
String_dataUsingEncoding 1976 1982 +0.3% 1.00x (?)
String_enumerateLines 234477 232982 -0.6% 1.01x (?)
String_fastestEncoding_ascii 32 32 +0.0% 1.00x
String_fastestEncoding_unicode 32 32 +0.0% 1.00x
String_localizedCapitalized 10639 10637 -0.0% 1.00x (?)
SubstringComparable 4243 4157 -2.0% 1.02x
SubstringEqualString 6278 6299 +0.3% 1.00x (?)
SubstringEquatable 8075 8092 +0.2% 1.00x (?)
SubstringFromLongString 12 12 +0.0% 1.00x
SubstringFromLongStringGeneric 111 112 +0.9% 0.99x
SuffixAnyCollection 6508 6567 +0.9% 0.99x (?)
SuffixAnyCollectionLazy 45726 45158 -1.2% 1.01x (?)
SuffixAnySeqCRangeIter 41832 41603 -0.5% 1.01x (?)
SuffixAnySeqCRangeIterLazy 41642 41447 -0.5% 1.00x
SuffixAnySeqCntRange 6495 6546 +0.8% 0.99x
SuffixAnySeqCntRangeLazy 6532 6552 +0.3% 1.00x (?)
SuffixAnySequence 26734 26803 +0.3% 1.00x
SuffixAnySequenceLazy 26770 27383 +2.3% 0.98x
SuffixArray 2143 2106 -1.7% 1.02x
SuffixArrayLazy 14859 14817 -0.3% 1.00x
SuffixCountableRange 117 118 +0.9% 0.99x
SuffixCountableRangeLazy 12405 12745 +2.7% 0.97x
SuffixSequence 26268 26421 +0.6% 0.99x
SuffixSequenceLazy 26347 26321 -0.1% 1.00x (?)
SuperChars 190700 189400 -0.7% 1.01x
TwoSum 4233 4240 +0.2% 1.00x (?)
TypeFlood 167 165 -1.2% 1.01x (?)
UTF8Decode 38197 37414 -2.0% 1.02x
Walsh 12086 12029 -0.5% 1.00x (?)
XorLoop 23704 23707 +0.0% 1.00x (?)
accessGlobal 184 190 +3.3% 0.97x
accessInMatSet 328 331 +0.9% 0.99x (?)
accessIndependent 129 124 -3.9% 1.04x
Added (5)
TEST MIN MAX MEAN MAX_RSS
FrequenciesUsingReduceInto 9219 9421 9309 4107469
MapUsingReduceInto 2689 2703 2694 4193485
ReduceIntoArray 2381 2442 2395 4177101
ReduceIntoDictionary 5123 5145 5131 4178739
ReduceIntoInt 21531 21546 21540 4122214
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

@dabrahams
Copy link
Contributor

Can we compare the performance of the two forms of reduce, e.g. for accumulating both lightweight (Int) and heavyweight (Array) types?

@d-ronnqvist
Copy link
Contributor Author

@dabrahams That would be great! Is it possible to write a test that does that comparison or did you mean to write benchmarks for each form of reduce and manually compare the numbers?

@dabrahams
Copy link
Contributor

@d-ronnqvist The former could be done by testing a change that switches tests from one implementation to the other, but I actually think the latter is the better approach.

The ReduceInto benchmark performs three tasks using both `reduce(_:_)` and `reduce(into:_:)` so that their performance can be compared:

1. Summing an array, reducing to `Int`
2. Filtering an array, reducing to `[Int]`
3. Counting letter frequencies, reducing to `[Character: Int]`
@d-ronnqvist
Copy link
Contributor Author

I've updated the benchmark to perform three tasks - reducing to [Int], [Character: Int], and Int - for both forms of reduce. Below is a sample output from when I ran it on my machine:

143 FilterEvenUsingReduce          15    1835    2035     1921      0       1921   10923486
144 FilterEvenUsingReduceInto      15     352     372      365      0        365   10926217
145 FrequenciesUsingReduce         15   10367   11630    10865      0      10865   10990933
146 FrequenciesUsingReduceInto     15    5490    6321     5822      0       5822   10990114
...
334 SumUsingReduce                 15     883     974      912      0        912   10854127
335 SumUsingReduceInto             15     875     942      911      0        911   10836651

I tried to implement the reduce(_:_:) filter as both

if num % 2 == 0 {
  return acc + [num]
}
return acc

and

var a = acc
if num % 2 == 0 {
  a.append(num)
}
return a

Both had the same performance so I went with the latter because it uses the same "style" as the dictionary benchmark.

@moiseev
Copy link
Contributor

moiseev commented Jul 18, 2017

@swift-ci Please smoke benchmark

@moiseev
Copy link
Contributor

moiseev commented Jul 18, 2017

@swift-ci Please smoke test

@moiseev
Copy link
Contributor

moiseev commented Jul 18, 2017

@swift-ci Please smoke benchmark

@swift-ci
Copy link
Contributor

Build comment file:

Build failed before running benchmark.


@d-ronnqvist
Copy link
Contributor Author

Same problem as previously: error: extraneous argument label 'into:' in call.

Is there something different in how the benchmark was invoked when it worked compared to the other two times? Is it necessary to clean if the benchmarks are using new methods? Or does smoke benchmark behave differently than just benchmark?

@dabrahams
Copy link
Contributor

dabrahams commented Jul 18, 2017 via email

@d-ronnqvist
Copy link
Contributor Author

If there could be a problem with incremental builds, should we run the benchmarks again on a clean build? (Can anyone give commands to the CI or is it only members who have that permission?)

@d-ronnqvist
Copy link
Contributor Author

@moiseev @dabrahams Is there anything more that's needed from this PR or anything more that I can do to help it get merged? Should I squash and/or rebase my changes? As a user I would love to start using this.

@dabrahams
Copy link
Contributor

@swift-ci Please benchmark

@dabrahams
Copy link
Contributor

@d-ronnqvist When benchmarks pass, IMO, it's good to go.

@swift-ci
Copy link
Contributor

Build comment file:

Optimized (O)

Regression (4)
TEST OLD NEW DELTA SPEEDUP
MapReduceAnyCollection 302 332 +9.9% 0.91x
ObjectiveCBridgeStubNSDateRefAccess 339 372 +9.7% 0.91x
ObjectiveCBridgeStubFromNSDate 3535 3764 +6.5% 0.94x
DropLastAnyCollectionLazy 15624 16632 +6.5% 0.94x
Improvement (2)
TEST OLD NEW DELTA SPEEDUP
SuffixCountableRangeLazy 11 10 -9.1% 1.10x
NopDeinit 22908 21398 -6.6% 1.07x
No Changes (315)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 2955 2951 -0.1% 1.00x (?)
AnyHashableWithAClass 66690 66667 -0.0% 1.00x (?)
Array2D 2057 2037 -1.0% 1.01x (?)
ArrayAppend 772 772 +0.0% 1.00x
ArrayAppendArrayOfInt 596 596 +0.0% 1.00x
ArrayAppendAscii 9924 9923 -0.0% 1.00x (?)
ArrayAppendFromGeneric 596 597 +0.2% 1.00x (?)
ArrayAppendGenericStructs 1226 1225 -0.1% 1.00x (?)
ArrayAppendLatin1 30842 31588 +2.4% 0.98x (?)
ArrayAppendLazyMap 929 928 -0.1% 1.00x (?)
ArrayAppendOptionals 1231 1229 -0.2% 1.00x (?)
ArrayAppendRepeatCol 837 837 +0.0% 1.00x
ArrayAppendReserved 533 532 -0.2% 1.00x (?)
ArrayAppendSequence 945 944 -0.1% 1.00x
ArrayAppendStrings 13605 13691 +0.6% 0.99x (?)
ArrayAppendToFromGeneric 597 597 +0.0% 1.00x
ArrayAppendToGeneric 597 597 +0.0% 1.00x
ArrayAppendUTF16 28726 29262 +1.9% 0.98x
ArrayInClass 61 61 +0.0% 1.00x
ArrayLiteral 1223 1229 +0.5% 1.00x (?)
ArrayOfGenericPOD 219 219 +0.0% 1.00x
ArrayOfGenericRef 3994 3994 +0.0% 1.00x
ArrayOfPOD 166 166 +0.0% 1.00x
ArrayOfRef 3897 3892 -0.1% 1.00x (?)
ArrayPlusEqualArrayOfInt 597 597 +0.0% 1.00x
ArrayPlusEqualFiveElementCollection 4691 4683 -0.2% 1.00x (?)
ArrayPlusEqualSingleElementCollection 771 770 -0.1% 1.00x (?)
ArrayPlusEqualThreeElements 1583 1581 -0.1% 1.00x (?)
ArraySubscript 1474 1470 -0.3% 1.00x (?)
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 141 148 +5.0% 0.95x (?)
ByteSwap 115 118 +2.6% 0.97x
CStringLongAscii 4471 4421 -1.1% 1.01x (?)
CStringLongNonAscii 2134 2099 -1.6% 1.02x (?)
CStringShortAscii 4712 4727 +0.3% 1.00x (?)
Calculator 35 36 +2.9% 0.97x
CaptureProp 4489 4620 +2.9% 0.97x
CharIndexing_ascii_unicodeScalars 14015 14010 -0.0% 1.00x (?)
CharIndexing_ascii_unicodeScalars_Backwards 11247 11248 +0.0% 1.00x (?)
CharIndexing_chinese_unicodeScalars 10620 10616 -0.0% 1.00x (?)
CharIndexing_chinese_unicodeScalars_Backwards 8531 8536 +0.1% 1.00x (?)
CharIndexing_japanese_unicodeScalars 16773 16769 -0.0% 1.00x (?)
CharIndexing_japanese_unicodeScalars_Backwards 13453 13461 +0.1% 1.00x (?)
CharIndexing_korean_unicodeScalars 13590 13587 -0.0% 1.00x (?)
CharIndexing_korean_unicodeScalars_Backwards 10908 10913 +0.0% 1.00x (?)
CharIndexing_punctuatedJapanese_unicodeScalars 2558 2555 -0.1% 1.00x
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 2082 2084 +0.1% 1.00x (?)
CharIndexing_punctuated_unicodeScalars 3194 3191 -0.1% 1.00x (?)
CharIndexing_punctuated_unicodeScalars_Backwards 2592 2599 +0.3% 1.00x (?)
CharIndexing_russian_unicodeScalars 11681 11678 -0.0% 1.00x (?)
CharIndexing_russian_unicodeScalars_Backwards 9380 9385 +0.1% 1.00x (?)
CharIndexing_tweet_unicodeScalars 27641 27639 -0.0% 1.00x (?)
CharIndexing_tweet_unicodeScalars_Backwards 22168 22181 +0.1% 1.00x (?)
CharIndexing_utf16_unicodeScalars 83279 82939 -0.4% 1.00x
CharIndexing_utf16_unicodeScalars_Backwards 82406 82587 +0.2% 1.00x (?)
CharIteration_ascii_unicodeScalars 16003 15814 -1.2% 1.01x (?)
CharIteration_ascii_unicodeScalars_Backwards 16193 16176 -0.1% 1.00x
CharIteration_chinese_unicodeScalars 12133 11972 -1.3% 1.01x (?)
CharIteration_chinese_unicodeScalars_Backwards 12266 12247 -0.2% 1.00x (?)
CharIteration_japanese_unicodeScalars 19162 18933 -1.2% 1.01x
CharIteration_japanese_unicodeScalars_Backwards 19384 19367 -0.1% 1.00x
CharIteration_korean_unicodeScalars 15517 15333 -1.2% 1.01x
CharIteration_korean_unicodeScalars_Backwards 15703 15685 -0.1% 1.00x
CharIteration_punctuatedJapanese_unicodeScalars 2914 2870 -1.5% 1.02x
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 2937 2919 -0.6% 1.01x (?)
CharIteration_punctuated_unicodeScalars 3645 3589 -1.5% 1.02x
CharIteration_punctuated_unicodeScalars_Backwards 3677 3655 -0.6% 1.01x (?)
CharIteration_russian_unicodeScalars 13340 13174 -1.2% 1.01x
CharIteration_russian_unicodeScalars_Backwards 13493 13475 -0.1% 1.00x (?)
CharIteration_tweet_unicodeScalars 31575 31187 -1.2% 1.01x
CharIteration_tweet_unicodeScalars_Backwards 31994 31980 -0.0% 1.00x (?)
CharIteration_utf16_unicodeScalars 92604 91434 -1.3% 1.01x
CharIteration_utf16_unicodeScalars_Backwards 120085 119747 -0.3% 1.00x (?)
CharacterLiteralsLarge 5975 5977 +0.0% 1.00x (?)
CharacterLiteralsSmall 403 403 +0.0% 1.00x
Chars 424 419 -1.2% 1.01x
ClassArrayGetter 13 13 +0.0% 1.00x
DeadArray 182 186 +2.2% 0.98x (?)
Dictionary 556 554 -0.4% 1.00x (?)
Dictionary2 1835 1826 -0.5% 1.00x (?)
Dictionary2OfObjects 3294 3283 -0.3% 1.00x (?)
Dictionary3 440 439 -0.2% 1.00x (?)
Dictionary3OfObjects 887 886 -0.1% 1.00x (?)
DictionaryBridge 2559 2566 +0.3% 1.00x (?)
DictionaryGroup 276 275 -0.4% 1.00x
DictionaryGroupOfObjects 1792 1785 -0.4% 1.00x
DictionaryLiteral 1474 1477 +0.2% 1.00x (?)
DictionaryOfObjects 2322 2322 +0.0% 1.00x
DictionaryRemove 2497 2434 -2.5% 1.03x (?)
DictionaryRemoveOfObjects 23316 23310 -0.0% 1.00x (?)
DictionarySwap 429 429 +0.0% 1.00x
DictionarySwapOfObjects 6925 6936 +0.2% 1.00x (?)
DropFirstAnyCollection 56 56 +0.0% 1.00x
DropFirstAnyCollectionLazy 46753 46838 +0.2% 1.00x (?)
DropFirstAnySeqCRangeIter 28947 29002 +0.2% 1.00x (?)
DropFirstAnySeqCRangeIterLazy 28946 28989 +0.1% 1.00x (?)
DropFirstAnySeqCntRange 50 50 +0.0% 1.00x
DropFirstAnySeqCntRangeLazy 50 50 +0.0% 1.00x
DropFirstAnySequence 9706 9688 -0.2% 1.00x (?)
DropFirstAnySequenceLazy 9751 9735 -0.2% 1.00x (?)
DropFirstArray 24 24 +0.0% 1.00x
DropFirstArrayLazy 24 24 +0.0% 1.00x
DropFirstCountableRange 32 32 +0.0% 1.00x
DropFirstCountableRangeLazy 32 32 +0.0% 1.00x
DropFirstSequence 2813 2813 +0.0% 1.00x
DropFirstSequenceLazy 2739 2739 +0.0% 1.00x
DropLastAnyCollection 22 22 +0.0% 1.00x
DropLastAnySeqCRangeIter 5982 5985 +0.1% 1.00x (?)
DropLastAnySeqCRangeIterLazy 5984 5986 +0.0% 1.00x (?)
DropLastAnySeqCntRange 16 16 +0.0% 1.00x
DropLastAnySeqCntRangeLazy 16 16 +0.0% 1.00x
DropLastAnySequence 8649 8660 +0.1% 1.00x (?)
DropLastAnySequenceLazy 8574 8582 +0.1% 1.00x (?)
DropLastArray 8 8 +0.0% 1.00x
DropLastArrayLazy 8 8 +0.0% 1.00x
DropLastCountableRange 10 10 +0.0% 1.00x
DropLastCountableRangeLazy 10 10 +0.0% 1.00x
DropLastSequence 592 571 -3.5% 1.04x (?)
DropLastSequenceLazy 593 571 -3.7% 1.04x
DropWhileAnyCollection 69 70 +1.4% 0.99x (?)
DropWhileAnyCollectionLazy 103 103 +0.0% 1.00x
DropWhileAnySeqCRangeIter 22637 22667 +0.1% 1.00x (?)
DropWhileAnySeqCRangeIterLazy 103 103 +0.0% 1.00x
DropWhileAnySeqCntRange 64 64 +0.0% 1.00x
DropWhileAnySeqCntRangeLazy 103 103 +0.0% 1.00x
DropWhileAnySequence 8234 8227 -0.1% 1.00x (?)
DropWhileAnySequenceLazy 2733 2733 +0.0% 1.00x
DropWhileArray 37 37 +0.0% 1.00x
DropWhileArrayLazy 78 78 +0.0% 1.00x
DropWhileCountableRange 35 36 +2.9% 0.97x
DropWhileCountableRangeLazy 68 68 +0.0% 1.00x
DropWhileSequence 2107 2108 +0.0% 1.00x (?)
DropWhileSequenceLazy 65 65 +0.0% 1.00x
EqualStringSubstring 385 386 +0.3% 1.00x
EqualSubstringString 385 385 +0.0% 1.00x
EqualSubstringSubstring 384 388 +1.0% 0.99x
EqualSubstringSubstringGenericEquatable 389 389 +0.0% 1.00x
ErrorHandling 2042 2030 -0.6% 1.01x (?)
Hanoi 3432 3501 +2.0% 0.98x
HashTest 1679 1676 -0.2% 1.00x (?)
Histogram 300 301 +0.3% 1.00x
Integrate 262 262 +0.0% 1.00x
IterateData 758 761 +0.4% 1.00x
Join 384 375 -2.3% 1.02x (?)
LazilyFilteredArrays 64653 64629 -0.0% 1.00x (?)
LazilyFilteredRange 3886 3884 -0.1% 1.00x (?)
LessSubstringSubstring 384 388 +1.0% 0.99x
LessSubstringSubstringGenericComparable 384 384 +0.0% 1.00x
LinkedList 7080 7145 +0.9% 0.99x
MapReduce 330 326 -1.2% 1.01x (?)
MapReduceAnyCollectionShort 1998 1995 -0.2% 1.00x (?)
MapReduceClass 3074 3061 -0.4% 1.00x
MapReduceClassShort 4530 4600 +1.5% 0.98x (?)
MapReduceLazyCollection 15 15 +0.0% 1.00x
MapReduceLazyCollectionShort 44 45 +2.3% 0.98x
MapReduceLazySequence 90 90 +0.0% 1.00x
MapReduceSequence 452 450 -0.4% 1.00x (?)
MapReduceShort 1905 1912 +0.4% 1.00x (?)
MapReduceShortString 22 21 -4.5% 1.05x (?)
MapReduceString 105 104 -1.0% 1.01x (?)
Memset 234 234 +0.0% 1.00x
MonteCarloE 10324 10367 +0.4% 1.00x (?)
MonteCarloPi 44074 43996 -0.2% 1.00x (?)
NSDictionaryCastToSwift 5310 5430 +2.3% 0.98x (?)
NSError 290 291 +0.3% 1.00x (?)
NSStringConversion 361 358 -0.8% 1.01x (?)
ObjectAllocation 179 178 -0.6% 1.01x (?)
ObjectiveCBridgeFromNSArrayAnyObject 22099 22116 +0.1% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 3467 3448 -0.5% 1.01x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 38628 38505 -0.3% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 33321 33360 +0.1% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 118946 118666 -0.2% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 5068 5011 -1.1% 1.01x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 89550 91342 +2.0% 0.98x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 99132 98845 -0.3% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObject 64480 64610 +0.2% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 4204 4204 +0.0% 1.00x
ObjectiveCBridgeFromNSSetAnyObjectToString 68078 67335 -1.1% 1.01x (?)
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 66909 67410 +0.7% 0.99x (?)
ObjectiveCBridgeFromNSString 988 986 -0.2% 1.00x
ObjectiveCBridgeFromNSStringForced 1849 1836 -0.7% 1.01x (?)
ObjectiveCBridgeStubDataAppend 3721 3707 -0.4% 1.00x (?)
ObjectiveCBridgeStubDateAccess 181 181 +0.0% 1.00x
ObjectiveCBridgeStubDateMutation 272 272 +0.0% 1.00x
ObjectiveCBridgeStubFromArrayOfNSString 24591 24434 -0.6% 1.01x (?)
ObjectiveCBridgeStubFromNSDateRef 4258 4215 -1.0% 1.01x (?)
ObjectiveCBridgeStubFromNSString 532 530 -0.4% 1.00x (?)
ObjectiveCBridgeStubFromNSStringRef 146 146 +0.0% 1.00x
ObjectiveCBridgeStubNSDataAppend 2351 2341 -0.4% 1.00x (?)
ObjectiveCBridgeStubNSDateMutationRef 12799 12349 -3.5% 1.04x (?)
ObjectiveCBridgeStubToArrayOfNSString 28785 28329 -1.6% 1.02x (?)
ObjectiveCBridgeStubToNSDate 13923 13686 -1.7% 1.02x (?)
ObjectiveCBridgeStubToNSDateRef 3282 3297 +0.5% 1.00x (?)
ObjectiveCBridgeStubToNSString 1501 1508 +0.5% 1.00x (?)
ObjectiveCBridgeStubToNSStringRef 109 108 -0.9% 1.01x
ObjectiveCBridgeStubURLAppendPath 220064 218946 -0.5% 1.01x (?)
ObjectiveCBridgeStubURLAppendPathRef 221221 220658 -0.3% 1.00x (?)
ObjectiveCBridgeToNSArray 28463 28297 -0.6% 1.01x (?)
ObjectiveCBridgeToNSDictionary 44529 44415 -0.3% 1.00x (?)
ObjectiveCBridgeToNSSet 38985 38589 -1.0% 1.01x (?)
ObjectiveCBridgeToNSString 1272 1262 -0.8% 1.01x (?)
ObserverClosure 2289 2284 -0.2% 1.00x (?)
ObserverForwarderStruct 1121 1120 -0.1% 1.00x (?)
ObserverPartiallyAppliedMethod 3771 3760 -0.3% 1.00x (?)
ObserverUnappliedMethod 2639 2639 +0.0% 1.00x
OpenClose 55 56 +1.8% 0.98x
Phonebook 6296 6429 +2.1% 0.98x (?)
PolymorphicCalls 22 22 +0.0% 1.00x
PopFrontArray 1212 1201 -0.9% 1.01x (?)
PopFrontArrayGeneric 1212 1201 -0.9% 1.01x
PopFrontUnsafePointer 9531 9522 -0.1% 1.00x (?)
PrefixAnyCollection 56 56 +0.0% 1.00x
PrefixAnyCollectionLazy 47120 47096 -0.1% 1.00x (?)
PrefixAnySeqCRangeIter 22495 22519 +0.1% 1.00x (?)
PrefixAnySeqCRangeIterLazy 22497 22515 +0.1% 1.00x (?)
PrefixAnySeqCntRange 50 50 +0.0% 1.00x
PrefixAnySeqCntRangeLazy 50 50 +0.0% 1.00x
PrefixAnySequence 8105 8112 +0.1% 1.00x (?)
PrefixAnySequenceLazy 8102 8125 +0.3% 1.00x (?)
PrefixArray 24 25 +4.2% 0.96x
PrefixArrayLazy 25 25 +0.0% 1.00x
PrefixCountableRange 32 32 +0.0% 1.00x
PrefixCountableRangeLazy 32 32 +0.0% 1.00x
PrefixSequence 2092 2092 +0.0% 1.00x
PrefixSequenceLazy 2036 2045 +0.4% 1.00x (?)
PrefixWhileAnyCollection 96 96 +0.0% 1.00x
PrefixWhileAnyCollectionLazy 75 75 +0.0% 1.00x
PrefixWhileAnySeqCRangeIter 16631 16661 +0.2% 1.00x (?)
PrefixWhileAnySeqCRangeIterLazy 75 75 +0.0% 1.00x
PrefixWhileAnySeqCntRange 90 90 +0.0% 1.00x
PrefixWhileAnySeqCntRangeLazy 75 75 +0.0% 1.00x
PrefixWhileAnySequence 18647 18670 +0.1% 1.00x (?)
PrefixWhileAnySequenceLazy 2181 2180 -0.0% 1.00x (?)
PrefixWhileArray 62 62 +0.0% 1.00x
PrefixWhileArrayLazy 49 49 +0.0% 1.00x
PrefixWhileCountableRange 36 36 +0.0% 1.00x
PrefixWhileCountableRangeLazy 32 32 +0.0% 1.00x
PrefixWhileSequence 291 290 -0.3% 1.00x (?)
PrefixWhileSequenceLazy 28 28 +0.0% 1.00x
Prims 776 771 -0.6% 1.01x (?)
ProtocolDispatch 2727 2727 +0.0% 1.00x
ProtocolDispatch2 167 160 -4.2% 1.04x
RC4 160 159 -0.6% 1.01x
RGBHistogram 2364 2357 -0.3% 1.00x (?)
RGBHistogramOfObjects 24443 24329 -0.5% 1.00x (?)
RangeAssignment 307 318 +3.6% 0.97x (?)
RecursiveOwnedParameter 2328 2330 +0.1% 1.00x (?)
ReversedArray 49 49 +0.0% 1.00x
ReversedBidirectional 30380 30464 +0.3% 1.00x (?)
ReversedDictionary 113 112 -0.9% 1.01x (?)
SetExclusiveOr 3176 3163 -0.4% 1.00x (?)
SetExclusiveOr_OfObjects 9627 9622 -0.1% 1.00x (?)
SetIntersect 296 296 +0.0% 1.00x
SetIntersect_OfObjects 1735 1729 -0.3% 1.00x (?)
SetIsSubsetOf 292 292 +0.0% 1.00x
SetIsSubsetOf_OfObjects 359 359 +0.0% 1.00x
SetUnion 2754 2701 -1.9% 1.02x (?)
SetUnion_OfObjects 8066 8076 +0.1% 1.00x (?)
SevenBoom 1477 1466 -0.7% 1.01x (?)
Sim2DArray 276 276 +0.0% 1.00x
SortLargeExistentials 7866 7879 +0.2% 1.00x (?)
SortLettersInPlace 1140 1142 +0.2% 1.00x (?)
SortSortedStrings 905 889 -1.8% 1.02x (?)
SortStrings 1736 1706 -1.7% 1.02x (?)
SortStringsUnicode 7675 7649 -0.3% 1.00x (?)
StackPromo 22401 22566 +0.7% 0.99x (?)
StaticArray 18 18 +0.0% 1.00x
StrComplexWalk 718 720 +0.3% 1.00x
StrToInt 1990 2042 +2.6% 0.97x
StringAdder 3512 3533 +0.6% 0.99x (?)
StringBuilder 1028 1023 -0.5% 1.00x (?)
StringBuilderLong 924 934 +1.1% 0.99x (?)
StringEdits 117550 117542 -0.0% 1.00x (?)
StringEqualPointerComparison 333 333 +0.0% 1.00x
StringFromLongWholeSubstring 13263 13343 +0.6% 0.99x (?)
StringFromLongWholeSubstringGeneric 22 22 +0.0% 1.00x
StringHasPrefix 33 33 +0.0% 1.00x
StringHasPrefixUnicode 14596 14872 +1.9% 0.98x (?)
StringHasSuffix 33 33 +0.0% 1.00x
StringHasSuffixUnicode 61839 61880 +0.1% 1.00x (?)
StringInterpolation 10822 10608 -2.0% 1.02x (?)
StringMatch 7716 7866 +1.9% 0.98x
StringUTF16Builder 1901 1895 -0.3% 1.00x (?)
StringWalk 1295 1295 +0.0% 1.00x
StringWithCString 57555 57265 -0.5% 1.01x (?)
SubstringComparable 1554 1555 +0.1% 1.00x (?)
SubstringEqualString 1421 1427 +0.4% 1.00x (?)
SubstringEquatable 3415 3409 -0.2% 1.00x (?)
SubstringFromLongString 10 10 +0.0% 1.00x
SubstringFromLongStringGeneric 60 59 -1.7% 1.02x
SuffixAnyCollection 22 22 +0.0% 1.00x
SuffixAnyCollectionLazy 15662 15654 -0.1% 1.00x (?)
SuffixAnySeqCRangeIter 6313 6311 -0.0% 1.00x (?)
SuffixAnySeqCRangeIterLazy 6311 6311 +0.0% 1.00x
SuffixAnySeqCntRange 16 16 +0.0% 1.00x
SuffixAnySeqCntRangeLazy 16 16 +0.0% 1.00x
SuffixAnySequence 9181 8765 -4.5% 1.05x
SuffixAnySequenceLazy 8618 8621 +0.0% 1.00x (?)
SuffixArray 8 8 +0.0% 1.00x
SuffixArrayLazy 8 8 +0.0% 1.00x
SuffixCountableRange 10 10 +0.0% 1.00x
SuffixSequence 5825 5832 +0.1% 1.00x (?)
SuffixSequenceLazy 5825 5831 +0.1% 1.00x (?)
SuperChars 80364 82336 +2.5% 0.98x
TwoSum 962 969 +0.7% 0.99x (?)
TypeFlood 0 0 +0.0% 1.00x
UTF8Decode 253 253 +0.0% 1.00x
Walsh 356 356 +0.0% 1.00x
XorLoop 347 347 +0.0% 1.00x
accessGlobal 3 3 +0.0% 1.00x
accessInMatSet 18 18 +0.0% 1.00x
accessIndependent 2 2 +0.0% 1.00x
Added (6)
TEST MIN MAX MEAN MAX_RSS
FilterEvenUsingReduce 1378 1414 1394 3737190
FilterEvenUsingReduceInto 153 165 156 3729818
FrequenciesUsingReduce 7306 8299 7398 3776307
FrequenciesUsingReduceInto 4227 4430 4269 3769754
SumUsingReduce 97 98 97 3701965
SumUsingReduceInto 97 98 97 3700736

Unoptimized (Onone)

Regression (8)
TEST OLD NEW DELTA SPEEDUP
CharIteration_chinese_unicodeScalars 170610 194732 +14.1% 0.88x
CharIteration_japanese_unicodeScalars 271228 308865 +13.9% 0.88x
ArrayAppendReserved 3540 3856 +8.9% 0.92x
ArrayAppendLatin1 73244 79450 +8.5% 0.92x
CharIteration_chinese_unicodeScalars_Backwards 301840 321593 +6.5% 0.94x
StringHasSuffix 1979 2105 +6.4% 0.94x
ObjectiveCBridgeStubDateAccess 1003 1059 +5.6% 0.95x
CharacterLiteralsSmall 630 665 +5.6% 0.95x
Improvement (5)
TEST OLD NEW DELTA SPEEDUP
SuperChars 250353 220457 -11.9% 1.14x
PrefixWhileArrayLazy 24232 21857 -9.8% 1.11x
CharIteration_ascii_unicodeScalars 242764 225890 -7.0% 1.07x
accessGlobal 189 178 -5.8% 1.06x
BitCount 1717 1634 -4.8% 1.05x
No Changes (308)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 5631 5600 -0.6% 1.01x (?)
AnyHashableWithAClass 84952 84226 -0.9% 1.01x
Array2D 603975 603725 -0.0% 1.00x (?)
ArrayAppend 3870 3884 +0.4% 1.00x (?)
ArrayAppendArrayOfInt 653 653 +0.0% 1.00x
ArrayAppendAscii 51014 50996 -0.0% 1.00x (?)
ArrayAppendFromGeneric 656 656 +0.0% 1.00x
ArrayAppendGenericStructs 1306 1299 -0.5% 1.01x (?)
ArrayAppendLazyMap 298262 299651 +0.5% 1.00x (?)
ArrayAppendOptionals 1286 1305 +1.5% 0.99x (?)
ArrayAppendRepeatCol 231406 229743 -0.7% 1.01x (?)
ArrayAppendSequence 114244 113866 -0.3% 1.00x
ArrayAppendStrings 13708 13734 +0.2% 1.00x (?)
ArrayAppendToFromGeneric 655 655 +0.0% 1.00x
ArrayAppendToGeneric 655 656 +0.2% 1.00x (?)
ArrayAppendUTF16 75885 75826 -0.1% 1.00x (?)
ArrayInClass 6304 6386 +1.3% 0.99x
ArrayLiteral 1721 1735 +0.8% 0.99x (?)
ArrayOfGenericPOD 2981 2981 +0.0% 1.00x
ArrayOfGenericRef 10019 10009 -0.1% 1.00x (?)
ArrayOfPOD 1892 1892 +0.0% 1.00x
ArrayOfRef 9041 9054 +0.1% 1.00x (?)
ArrayPlusEqualArrayOfInt 654 654 +0.0% 1.00x
ArrayPlusEqualFiveElementCollection 298562 298320 -0.1% 1.00x (?)
ArrayPlusEqualSingleElementCollection 295883 294395 -0.5% 1.01x (?)
ArrayPlusEqualThreeElements 10765 10761 -0.0% 1.00x (?)
ArraySubscript 4183 4162 -0.5% 1.01x (?)
ArrayValueProp 3474 3534 +1.7% 0.98x (?)
ArrayValueProp2 22693 22759 +0.3% 1.00x (?)
ArrayValueProp3 3937 3908 -0.7% 1.01x
ArrayValueProp4 3827 3862 +0.9% 0.99x (?)
ByteSwap 4113 4114 +0.0% 1.00x (?)
CStringLongAscii 4423 4420 -0.1% 1.00x (?)
CStringLongNonAscii 2267 2281 +0.6% 0.99x
CStringShortAscii 9029 8971 -0.6% 1.01x (?)
Calculator 1191 1217 +2.2% 0.98x
CaptureProp 132665 129385 -2.5% 1.03x
CharIndexing_ascii_unicodeScalars 584597 567422 -2.9% 1.03x
CharIndexing_ascii_unicodeScalars_Backwards 617113 620528 +0.6% 0.99x (?)
CharIndexing_chinese_unicodeScalars 437771 432340 -1.2% 1.01x (?)
CharIndexing_chinese_unicodeScalars_Backwards 467225 463979 -0.7% 1.01x (?)
CharIndexing_japanese_unicodeScalars 696844 682587 -2.0% 1.02x
CharIndexing_japanese_unicodeScalars_Backwards 746516 739448 -0.9% 1.01x (?)
CharIndexing_korean_unicodeScalars 563849 551346 -2.2% 1.02x (?)
CharIndexing_korean_unicodeScalars_Backwards 598954 596565 -0.4% 1.00x (?)
CharIndexing_punctuatedJapanese_unicodeScalars 99759 99670 -0.1% 1.00x (?)
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 107055 105854 -1.1% 1.01x (?)
CharIndexing_punctuated_unicodeScalars 126449 123931 -2.0% 1.02x
CharIndexing_punctuated_unicodeScalars_Backwards 134278 135031 +0.6% 0.99x (?)
CharIndexing_russian_unicodeScalars 480617 472507 -1.7% 1.02x (?)
CharIndexing_russian_unicodeScalars_Backwards 513109 511528 -0.3% 1.00x (?)
CharIndexing_tweet_unicodeScalars 1147208 1126824 -1.8% 1.02x (?)
CharIndexing_tweet_unicodeScalars_Backwards 1224714 1221123 -0.3% 1.00x (?)
CharIndexing_utf16_unicodeScalars 637585 635436 -0.3% 1.00x (?)
CharIndexing_utf16_unicodeScalars_Backwards 692567 689472 -0.4% 1.00x (?)
CharIteration_ascii_unicodeScalars_Backwards 402247 392704 -2.4% 1.02x (?)
CharIteration_japanese_unicodeScalars_Backwards 475743 471730 -0.8% 1.01x (?)
CharIteration_korean_unicodeScalars 217958 218721 +0.4% 1.00x (?)
CharIteration_korean_unicodeScalars_Backwards 385974 381091 -1.3% 1.01x (?)
CharIteration_punctuatedJapanese_unicodeScalars 40274 39850 -1.1% 1.01x
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 68480 68863 +0.6% 0.99x (?)
CharIteration_punctuated_unicodeScalars 49974 50298 +0.6% 0.99x
CharIteration_punctuated_unicodeScalars_Backwards 87560 86498 -1.2% 1.01x (?)
CharIteration_russian_unicodeScalars 187335 187799 +0.2% 1.00x (?)
CharIteration_russian_unicodeScalars_Backwards 329830 330022 +0.1% 1.00x (?)
CharIteration_tweet_unicodeScalars 444738 445640 +0.2% 1.00x (?)
CharIteration_tweet_unicodeScalars_Backwards 790872 779340 -1.5% 1.01x (?)
CharIteration_utf16_unicodeScalars 241673 243951 +0.9% 0.99x
CharIteration_utf16_unicodeScalars_Backwards 486766 487898 +0.2% 1.00x (?)
CharacterLiteralsLarge 6205 6193 -0.2% 1.00x (?)
Chars 66862 67841 +1.5% 0.99x
ClassArrayGetter 986 989 +0.3% 1.00x (?)
DeadArray 115105 113183 -1.7% 1.02x (?)
Dictionary 3487 3519 +0.9% 0.99x (?)
Dictionary2 3488 3489 +0.0% 1.00x (?)
Dictionary2OfObjects 6156 6145 -0.2% 1.00x (?)
Dictionary3 1298 1304 +0.5% 1.00x (?)
Dictionary3OfObjects 2336 2339 +0.1% 1.00x (?)
DictionaryBridge 2703 2665 -1.4% 1.01x (?)
DictionaryGroup 5329 5284 -0.8% 1.01x (?)
DictionaryGroupOfObjects 8884 8766 -1.3% 1.01x (?)
DictionaryLiteral 8207 8181 -0.3% 1.00x (?)
DictionaryOfObjects 7079 7018 -0.9% 1.01x (?)
DictionaryRemove 21486 21465 -0.1% 1.00x (?)
DictionaryRemoveOfObjects 59677 59786 +0.2% 1.00x (?)
DictionarySwap 5431 5439 +0.1% 1.00x (?)
DictionarySwapOfObjects 22922 22634 -1.3% 1.01x (?)
DropFirstAnyCollection 20494 20679 +0.9% 0.99x (?)
DropFirstAnyCollectionLazy 153022 151000 -1.3% 1.01x (?)
DropFirstAnySeqCRangeIter 31589 30946 -2.0% 1.02x
DropFirstAnySeqCRangeIterLazy 31067 30855 -0.7% 1.01x
DropFirstAnySeqCntRange 20203 20755 +2.7% 0.97x
DropFirstAnySeqCntRangeLazy 20200 20652 +2.2% 0.98x (?)
DropFirstAnySequence 16590 16688 +0.6% 0.99x
DropFirstAnySequenceLazy 16628 16657 +0.2% 1.00x
DropFirstArray 10190 10299 +1.1% 0.99x (?)
DropFirstArrayLazy 52963 51955 -1.9% 1.02x
DropFirstCountableRange 337 337 +0.0% 1.00x
DropFirstCountableRangeLazy 38704 39392 +1.8% 0.98x (?)
DropFirstSequence 15481 15507 +0.2% 1.00x (?)
DropFirstSequenceLazy 15483 15554 +0.5% 1.00x
DropLastAnyCollection 6831 6937 +1.6% 0.98x
DropLastAnyCollectionLazy 50582 50922 +0.7% 0.99x (?)
DropLastAnySeqCRangeIter 46995 46657 -0.7% 1.01x (?)
DropLastAnySeqCRangeIterLazy 46904 46665 -0.5% 1.01x (?)
DropLastAnySeqCntRange 6756 6928 +2.5% 0.98x
DropLastAnySeqCntRangeLazy 6763 6890 +1.9% 0.98x
DropLastAnySequence 32428 32244 -0.6% 1.01x
DropLastAnySequenceLazy 32298 32285 -0.0% 1.00x (?)
DropLastArray 3505 3440 -1.9% 1.02x
DropLastArrayLazy 17679 17269 -2.3% 1.02x
DropLastCountableRange 117 118 +0.9% 0.99x
DropLastCountableRangeLazy 12999 13161 +1.2% 0.99x (?)
DropLastSequence 32399 31862 -1.7% 1.02x
DropLastSequenceLazy 31878 31867 -0.0% 1.00x (?)
DropWhileAnyCollection 26085 26567 +1.8% 0.98x
DropWhileAnyCollectionLazy 30132 29838 -1.0% 1.01x (?)
DropWhileAnySeqCRangeIter 32818 32709 -0.3% 1.00x (?)
DropWhileAnySeqCRangeIterLazy 29990 29846 -0.5% 1.00x (?)
DropWhileAnySeqCntRange 25908 26370 +1.8% 0.98x (?)
DropWhileAnySeqCntRangeLazy 29951 30110 +0.5% 0.99x
DropWhileAnySequence 17088 17052 -0.2% 1.00x
DropWhileAnySequenceLazy 15157 15057 -0.7% 1.01x
DropWhileArray 13854 13851 -0.0% 1.00x (?)
DropWhileArrayLazy 25854 26021 +0.6% 0.99x (?)
DropWhileCountableRange 6014 6097 +1.4% 0.99x
DropWhileCountableRangeLazy 28875 28440 -1.5% 1.02x
DropWhileSequence 15904 15952 +0.3% 1.00x
DropWhileSequenceLazy 13978 14275 +2.1% 0.98x
EqualStringSubstring 662 663 +0.2% 1.00x (?)
EqualSubstringString 661 662 +0.2% 1.00x (?)
EqualSubstringSubstring 772 779 +0.9% 0.99x
EqualSubstringSubstringGenericEquatable 415 416 +0.2% 1.00x (?)
ErrorHandling 7656 7669 +0.2% 1.00x (?)
Hanoi 18262 18511 +1.4% 0.99x (?)
HashTest 18327 18250 -0.4% 1.00x (?)
Histogram 9740 9871 +1.3% 0.99x (?)
Integrate 678 678 +0.0% 1.00x
IterateData 12815 12769 -0.4% 1.00x
Join 1450 1454 +0.3% 1.00x (?)
LazilyFilteredArrays 2048216 2046145 -0.1% 1.00x (?)
LazilyFilteredRange 742041 752408 +1.4% 0.99x
LessSubstringSubstring 775 782 +0.9% 0.99x
LessSubstringSubstringGenericComparable 437 436 -0.2% 1.00x
LinkedList 40084 40292 +0.5% 0.99x
MapReduce 44543 44413 -0.3% 1.00x
MapReduceAnyCollection 44868 44442 -0.9% 1.01x
MapReduceAnyCollectionShort 57514 57281 -0.4% 1.00x (?)
MapReduceClass 49670 49761 +0.2% 1.00x (?)
MapReduceClassShort 61223 61670 +0.7% 0.99x
MapReduceLazyCollection 43686 43301 -0.9% 1.01x
MapReduceLazyCollectionShort 55326 54894 -0.8% 1.01x
MapReduceLazySequence 31963 32001 +0.1% 1.00x (?)
MapReduceSequence 50337 50288 -0.1% 1.00x
MapReduceShort 56807 56720 -0.2% 1.00x (?)
MapReduceShortString 313 315 +0.6% 0.99x (?)
MapReduceString 3125 3143 +0.6% 0.99x
Memset 43971 46048 +4.7% 0.95x
MonteCarloE 148775 146726 -1.4% 1.01x
MonteCarloPi 52341 52386 +0.1% 1.00x
NSDictionaryCastToSwift 6616 6603 -0.2% 1.00x (?)
NSError 703 710 +1.0% 0.99x (?)
NSStringConversion 398 403 +1.3% 0.99x (?)
NopDeinit 176294 174575 -1.0% 1.01x
ObjectAllocation 1659 1658 -0.1% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObject 24294 23949 -1.4% 1.01x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 6714 6762 +0.7% 0.99x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 39997 39759 -0.6% 1.01x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 34211 33964 -0.7% 1.01x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 123352 123297 -0.0% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 7667 7599 -0.9% 1.01x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 95440 98096 +2.8% 0.97x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 102373 102367 -0.0% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObject 69570 69911 +0.5% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 7426 7526 +1.3% 0.99x (?)
ObjectiveCBridgeFromNSSetAnyObjectToString 74376 77209 +3.8% 0.96x (?)
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 71542 72687 +1.6% 0.98x (?)
ObjectiveCBridgeFromNSString 3870 3863 -0.2% 1.00x (?)
ObjectiveCBridgeFromNSStringForced 2220 2215 -0.2% 1.00x (?)
ObjectiveCBridgeStubDataAppend 3714 3724 +0.3% 1.00x (?)
ObjectiveCBridgeStubDateMutation 517 515 -0.4% 1.00x (?)
ObjectiveCBridgeStubFromArrayOfNSString 25096 24670 -1.7% 1.02x (?)
ObjectiveCBridgeStubFromNSDate 4010 3830 -4.5% 1.05x
ObjectiveCBridgeStubFromNSDateRef 4459 4387 -1.6% 1.02x (?)
ObjectiveCBridgeStubFromNSString 578 570 -1.4% 1.01x (?)
ObjectiveCBridgeStubFromNSStringRef 181 186 +2.8% 0.97x
ObjectiveCBridgeStubNSDataAppend 2780 2750 -1.1% 1.01x (?)
ObjectiveCBridgeStubNSDateMutationRef 15932 15346 -3.7% 1.04x (?)
ObjectiveCBridgeStubNSDateRefAccess 1206 1214 +0.7% 0.99x (?)
ObjectiveCBridgeStubToArrayOfNSString 28624 28871 +0.9% 0.99x (?)
ObjectiveCBridgeStubToNSDate 14698 15447 +5.1% 0.95x (?)
ObjectiveCBridgeStubToNSDateRef 3355 3386 +0.9% 0.99x (?)
ObjectiveCBridgeStubToNSString 1566 1564 -0.1% 1.00x (?)
ObjectiveCBridgeStubToNSStringRef 155 155 +0.0% 1.00x
ObjectiveCBridgeStubURLAppendPath 221790 223491 +0.8% 0.99x (?)
ObjectiveCBridgeStubURLAppendPathRef 224732 222986 -0.8% 1.01x (?)
ObjectiveCBridgeToNSArray 28955 28890 -0.2% 1.00x (?)
ObjectiveCBridgeToNSDictionary 45784 44849 -2.0% 1.02x (?)
ObjectiveCBridgeToNSSet 39458 39666 +0.5% 0.99x (?)
ObjectiveCBridgeToNSString 1317 1301 -1.2% 1.01x (?)
ObserverClosure 7420 7409 -0.1% 1.00x (?)
ObserverForwarderStruct 5537 5511 -0.5% 1.00x (?)
ObserverPartiallyAppliedMethod 8897 8842 -0.6% 1.01x
ObserverUnappliedMethod 9393 9312 -0.9% 1.01x (?)
OpenClose 397 393 -1.0% 1.01x
Phonebook 21875 22048 +0.8% 0.99x (?)
PolymorphicCalls 5228 5127 -1.9% 1.02x
PopFrontArray 9903 9750 -1.5% 1.02x (?)
PopFrontArrayGeneric 8735 8874 +1.6% 0.98x (?)
PopFrontUnsafePointer 96999 97045 +0.0% 1.00x (?)
PrefixAnyCollection 20378 20724 +1.7% 0.98x
PrefixAnyCollectionLazy 151905 151266 -0.4% 1.00x (?)
PrefixAnySeqCRangeIter 24958 24620 -1.4% 1.01x (?)
PrefixAnySeqCRangeIterLazy 25177 24529 -2.6% 1.03x
PrefixAnySeqCntRange 20197 20669 +2.3% 0.98x
PrefixAnySeqCntRangeLazy 20252 20696 +2.2% 0.98x
PrefixAnySequence 13585 13605 +0.1% 1.00x
PrefixAnySequenceLazy 13588 13641 +0.4% 1.00x (?)
PrefixArray 10194 10295 +1.0% 0.99x (?)
PrefixArrayLazy 52970 51991 -1.8% 1.02x
PrefixCountableRange 337 336 -0.3% 1.00x (?)
PrefixCountableRangeLazy 38923 39305 +1.0% 0.99x (?)
PrefixSequence 12562 12537 -0.2% 1.00x
PrefixSequenceLazy 12545 12551 +0.0% 1.00x (?)
PrefixWhileAnyCollection 37289 37836 +1.5% 0.99x
PrefixWhileAnyCollectionLazy 25857 25566 -1.1% 1.01x (?)
PrefixWhileAnySeqCRangeIter 46078 45939 -0.3% 1.00x
PrefixWhileAnySeqCRangeIterLazy 25611 25435 -0.7% 1.01x (?)
PrefixWhileAnySeqCntRange 37231 37603 +1.0% 0.99x (?)
PrefixWhileAnySeqCntRangeLazy 25871 25711 -0.6% 1.01x (?)
PrefixWhileAnySequence 35047 35010 -0.1% 1.00x
PrefixWhileAnySequenceLazy 14812 14917 +0.7% 0.99x (?)
PrefixWhileArray 20900 20850 -0.2% 1.00x
PrefixWhileCountableRange 17527 17483 -0.3% 1.00x
PrefixWhileCountableRangeLazy 24624 24205 -1.7% 1.02x (?)
PrefixWhileSequence 33935 33905 -0.1% 1.00x (?)
PrefixWhileSequenceLazy 14319 14289 -0.2% 1.00x (?)
Prims 10502 10502 +0.0% 1.00x
ProtocolDispatch 6693 6977 +4.2% 0.96x
ProtocolDispatch2 501 490 -2.2% 1.02x
RC4 19679 19813 +0.7% 0.99x (?)
RGBHistogram 35898 35919 +0.1% 1.00x (?)
RGBHistogramOfObjects 110168 110533 +0.3% 1.00x (?)
RangeAssignment 5969 5752 -3.6% 1.04x
RecursiveOwnedParameter 11222 11224 +0.0% 1.00x (?)
ReversedArray 52302 52287 -0.0% 1.00x (?)
ReversedBidirectional 86465 86802 +0.4% 1.00x (?)
ReversedDictionary 35213 35271 +0.2% 1.00x (?)
SetExclusiveOr 21539 21535 -0.0% 1.00x (?)
SetExclusiveOr_OfObjects 48593 48073 -1.1% 1.01x
SetIntersect 10994 11161 +1.5% 0.99x
SetIntersect_OfObjects 12698 12755 +0.4% 1.00x
SetIsSubsetOf 1698 1682 -0.9% 1.01x
SetIsSubsetOf_OfObjects 1606 1590 -1.0% 1.01x (?)
SetUnion 11911 11984 +0.6% 0.99x (?)
SetUnion_OfObjects 33480 33685 +0.6% 0.99x
SevenBoom 1617 1591 -1.6% 1.02x
Sim2DArray 44778 44753 -0.1% 1.00x (?)
SortLargeExistentials 17811 17940 +0.7% 0.99x
SortLettersInPlace 3159 3166 +0.2% 1.00x (?)
SortSortedStrings 1412 1419 +0.5% 1.00x
SortStrings 2450 2498 +2.0% 0.98x (?)
SortStringsUnicode 8761 8822 +0.7% 0.99x
StackPromo 102169 102236 +0.1% 1.00x (?)
StaticArray 4596 4572 -0.5% 1.01x
StrComplexWalk 6774 6763 -0.2% 1.00x (?)
StrToInt 105632 105462 -0.2% 1.00x (?)
StringAdder 3803 3778 -0.7% 1.01x
StringBuilder 8390 8394 +0.0% 1.00x (?)
StringBuilderLong 1101 1102 +0.1% 1.00x (?)
StringEdits 409705 406562 -0.8% 1.01x (?)
StringEqualPointerComparison 2589 2680 +3.5% 0.97x
StringFromLongWholeSubstring 13280 13286 +0.0% 1.00x (?)
StringFromLongWholeSubstringGeneric 208 208 +0.0% 1.00x
StringHasPrefix 1721 1738 +1.0% 0.99x (?)
StringHasPrefixUnicode 16905 16898 -0.0% 1.00x (?)
StringHasSuffixUnicode 63975 63986 +0.0% 1.00x (?)
StringInterpolation 13954 13881 -0.5% 1.01x (?)
StringMatch 36542 36489 -0.1% 1.00x (?)
StringUTF16Builder 9246 9223 -0.2% 1.00x (?)
StringWalk 12872 12617 -2.0% 1.02x (?)
StringWithCString 55235 55257 +0.0% 1.00x (?)
SubstringComparable 4718 4726 +0.2% 1.00x
SubstringEqualString 6590 6622 +0.5% 1.00x (?)
SubstringEquatable 9397 9565 +1.8% 0.98x
SubstringFromLongString 12 12 +0.0% 1.00x
SubstringFromLongStringGeneric 109 109 +0.0% 1.00x
SuffixAnyCollection 6806 6958 +2.2% 0.98x (?)
SuffixAnyCollectionLazy 50732 50403 -0.6% 1.01x (?)
SuffixAnySeqCRangeIter 44627 44620 -0.0% 1.00x (?)
SuffixAnySeqCRangeIterLazy 44620 44433 -0.4% 1.00x
SuffixAnySeqCntRange 6753 6908 +2.3% 0.98x (?)
SuffixAnySeqCntRangeLazy 6762 6902 +2.1% 0.98x (?)
SuffixAnySequence 30028 30054 +0.1% 1.00x (?)
SuffixAnySequenceLazy 30031 30070 +0.1% 1.00x
SuffixArray 3506 3443 -1.8% 1.02x
SuffixArrayLazy 17677 17267 -2.3% 1.02x
SuffixCountableRange 118 118 +0.0% 1.00x
SuffixCountableRangeLazy 13045 13143 +0.8% 0.99x (?)
SuffixSequence 29628 29663 +0.1% 1.00x
SuffixSequenceLazy 29676 29613 -0.2% 1.00x
TwoSum 4249 4276 +0.6% 0.99x (?)
TypeFlood 167 166 -0.6% 1.01x (?)
UTF8Decode 49389 49379 -0.0% 1.00x (?)
Walsh 11935 11896 -0.3% 1.00x
XorLoop 23725 23728 +0.0% 1.00x (?)
accessInMatSet 328 332 +1.2% 0.99x
accessIndependent 130 125 -3.8% 1.04x
Added (6)
TEST MIN MAX MEAN MAX_RSS
FilterEvenUsingReduce 4949 4962 4954 4175462
FilterEvenUsingReduceInto 3112 3175 3132 4159078
FrequenciesUsingReduce 16603 16796 16702 4100915
FrequenciesUsingReduceInto 9446 9954 9659 4104192
SumUsingReduce 288853 289302 288998 4118118
SumUsingReduceInto 285286 291380 286561 4112384
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

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