Skip to content

[stdlib] Implement efficient DoubleWidth division and fix division-related bugs #14219

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 2 commits into from
Jan 31, 2018
Merged

[stdlib] Implement efficient DoubleWidth division and fix division-related bugs #14219

merged 2 commits into from
Jan 31, 2018

Conversation

xwu
Copy link
Collaborator

@xwu xwu commented Jan 28, 2018

This PR implements more efficient DoubleWidth division using full-width division primitives available on Base. It's one chunk of changes from #13784, which CI won't test anymore.

Also in this PR:

  1. A re-implementation of {U}Int64.dividingFullWidth in terms of DoubleWidth<{U}Int32>.dividingFullWidth (which is required to avoid circularity).
    Existing DoubleWidth tests cover this change.
  2. A bugfix in remainderReportingOverflow for builtin types when dividing by -1.
    A test is added to cover this change.
  3. A corrected implementation of DoubleWidth masking shifts.
    No types exist to test this change.


if isNegative {
let (lowComplement, overflow) = (~low).addingReportingOverflow(1)
return (~high + (overflow ? 1 : 0), lowComplement)
return (~high + (overflow ? 1 : 0 as DoubleWidth), lowComplement)
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

(Silences a compiler warning about deprecated Strideable operators.)

where Base.Words : Collection, Base.Magnitude.Words : Collection {
public struct DoubleWidth<Base : FixedWidthInteger> :
_ExpressibleByBuiltinIntegerLiteral
where Base.Magnitude : UnsignedInteger,
Copy link
Collaborator Author

@xwu xwu Jan 28, 2018

Choose a reason for hiding this comment

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

SignedInteger doesn't (and shouldn't, in fact) have the constraint Magnitude : UnsignedInteger.

But for DoubleWidth, we've assumed this constraint in many places (reasonable for SignedInteger & FixedWidthInteger), so we'd better state it. It's necessary now because division helper methods only need to be available for Magnitude, so with this constraint they'll only need to be defined in an extension for unsigned types.

@xwu
Copy link
Collaborator Author

xwu commented Jan 28, 2018

@swift-ci Please smoke test

1 similar comment
@xwu
Copy link
Collaborator Author

xwu commented Jan 28, 2018

@swift-ci Please smoke test

@xwu
Copy link
Collaborator Author

xwu commented Jan 28, 2018

@swift-ci Please smoke benchmark

1 similar comment
@xwu
Copy link
Collaborator Author

xwu commented Jan 28, 2018

@swift-ci Please smoke benchmark

@xwu xwu requested review from natecook1000 and moiseev January 28, 2018 07:52
@xwu
Copy link
Collaborator Author

xwu commented Jan 28, 2018

@swift-ci Please smoke benchmark

@moiseev
Copy link
Contributor

moiseev commented Jan 29, 2018

swift_pull_request_benchmark_os_x__smoke_test___189__jenkins_
This can't be right. I'll kill that one and start a new build instead.

@moiseev
Copy link
Contributor

moiseev commented Jan 29, 2018

@swift-ci Please smoke benchmark

@xwu
Copy link
Collaborator Author

xwu commented Jan 29, 2018

Per #14220, apparently the benchmarks are currently all sticking at CSV parsing. Something to do with the recent String guts changes?

}
let quotient_ = (self.high < (0 as High)) != (other.high < (0 as High))
Copy link
Contributor

Choose a reason for hiding this comment

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

I think extracting at least this line into a isNegative variable would help readability, even leaving aside the nested ?:s.

guard DoubleWidth.isSigned else {
return (DoubleWidth(quotient), DoubleWidth(remainder))
}
let quotient_ = (self.high < (0 as High)) != (other.high.high < (0 as High))
Copy link
Contributor

Choose a reason for hiding this comment

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

This part looks sufficiently similar to the one above (inside quotientAndRemainder. I wonder if it can be extracted into a separate @_inline(always) function without affecting performance.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Unfortunately, not possible because they’re dealing with different types (this is a heterogeneous operation).

@@ -531,7 +536,12 @@ extension DoubleWidth : FixedWidthInteger {

@_inlineable // FIXME(sil-serialize-all)
public static func &>>=(lhs: inout DoubleWidth, rhs: DoubleWidth) {
let rhs = rhs & DoubleWidth(DoubleWidth.bitWidth &- 1)
// FIXME(integers): test types with bit widths that aren't powers of 2
let rhs = DoubleWidth.bitWidth.nonzeroBitCount == 1
Copy link
Contributor

Choose a reason for hiding this comment

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

This masking piece should also be extracted into a function, I think, which can have an additional benefit of a descriptive name.

if _slowPath(rhs == (0 as ${Self})) {
_preconditionFailure("Remainder of division by zero")
_preconditionFailure("Division by zero")
Copy link
Contributor

Choose a reason for hiding this comment

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

I would argue that the old message was a bit more helpful.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

This was to align with what you get when you write ‘42 % 0’ or ‘42 / 0’—I think it’s important to be clear that the remainder never overflows; but let me see if I can improve on it a little bit.

) {
_preconditionFailure("Overflow in remainder of division")
if _slowPath(${'lhs == %s.min && rhs == (-1 as %s)' % (Self, Self)}) {
_preconditionFailure("Division results in an overflow")
Copy link
Contributor

Choose a reason for hiding this comment

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

Same here. With the new messages it is impossible to tell which one of the operations failed in the expression like a / b % c.

@moiseev
Copy link
Contributor

moiseev commented Jan 29, 2018

@swift-ci Please smoke benchmark

@swift-ci
Copy link
Contributor

Build comment file:

Optimized (O)

Regression (8)
TEST OLD NEW DELTA SPEEDUP
ObjectiveCBridgeStubFromArrayOfNSString 26730 30773 +15.1% 0.87x (?)
DropFirstAnySeqCRangeIter 19345 21565 +11.5% 0.90x (?)
DropFirstAnySeqCRangeIterLazy 19353 21546 +11.3% 0.90x (?)
ObjectiveCBridgeFromNSSetAnyObjectToString 70095 77044 +9.9% 0.91x (?)
DropLastCountableRange 11 12 +9.1% 0.92x
CharacterPropertiesPrecomputed 955 1037 +8.6% 0.92x
PopFrontUnsafePointer 8745 9454 +8.1% 0.93x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 120611 130009 +7.8% 0.93x (?)
Improvement (15)
TEST OLD NEW DELTA SPEEDUP
DoubleWidthDivision 1420 239 -83.2% 5.94x
StringBuilderLong 1626 1096 -32.6% 1.48x
Sim2DArray 599 418 -30.2% 1.43x
DropWhileAnySeqCRangeIter 18127 15708 -13.3% 1.15x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 4847 4419 -8.8% 1.10x (?)
DropLastCountableRangeLazy 12 11 -8.3% 1.09x
PrefixAnySeqCRangeIterLazy 18316 16866 -7.9% 1.09x
ArrayPlusEqualSingleElementCollection 1101 1021 -7.3% 1.08x
StringWalk 1627 1511 -7.1% 1.08x
DropLastSequence 741 697 -5.9% 1.06x
DropLastSequenceLazy 742 700 -5.7% 1.06x
ArrayPlusEqualFiveElementCollection 5915 5592 -5.5% 1.06x
ArrayAppendReserved 802 759 -5.4% 1.06x
PrefixAnySeqCRangeIter 17965 17096 -4.8% 1.05x
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 36513 34773 -4.8% 1.05x
No Changes (332)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 3778 3768 -0.3% 1.00x
AnyHashableWithAClass 71125 72022 +1.3% 0.99x
Array2D 2563 2563 +0.0% 1.00x
ArrayAppend 1068 1027 -3.8% 1.04x
ArrayAppendArrayOfInt 796 798 +0.3% 1.00x (?)
ArrayAppendAscii 13774 13718 -0.4% 1.00x
ArrayAppendFromGeneric 797 802 +0.6% 0.99x (?)
ArrayAppendGenericStructs 1432 1431 -0.1% 1.00x (?)
ArrayAppendLatin1 38653 39099 +1.2% 0.99x
ArrayAppendLazyMap 1345 1349 +0.3% 1.00x
ArrayAppendOptionals 1429 1441 +0.8% 0.99x
ArrayAppendRepeatCol 1341 1342 +0.1% 1.00x (?)
ArrayAppendSequence 1133 1134 +0.1% 1.00x (?)
ArrayAppendStrings 15287 15300 +0.1% 1.00x
ArrayAppendToFromGeneric 802 806 +0.5% 1.00x (?)
ArrayAppendToGeneric 800 803 +0.4% 1.00x (?)
ArrayAppendUTF16 37404 38964 +4.2% 0.96x
ArrayInClass 85 85 +0.0% 1.00x
ArrayLiteral 0 0 +0.0% 1.00x
ArrayOfGenericPOD2 151 151 +0.0% 1.00x
ArrayOfGenericRef 4389 4371 -0.4% 1.00x (?)
ArrayOfPOD 183 183 +0.0% 1.00x
ArrayOfRef 4349 4368 +0.4% 1.00x (?)
ArrayPlusEqualArrayOfInt 797 800 +0.4% 1.00x (?)
ArrayPlusEqualThreeElements 1651 1662 +0.7% 0.99x (?)
ArraySubscript 1572 1578 +0.4% 1.00x
ArrayValueProp 8 8 +0.0% 1.00x
ArrayValueProp2 8 8 +0.0% 1.00x
ArrayValueProp3 8 8 +0.0% 1.00x
ArrayValueProp4 8 8 +0.0% 1.00x
BinaryFloatingPointConversionFromBinaryInteger 46 46 +0.0% 1.00x
BitCount 211 202 -4.3% 1.04x
ByteSwap 98 100 +2.0% 0.98x
COWTree 3487 3455 -0.9% 1.01x (?)
CStringLongAscii 5102 5104 +0.0% 1.00x (?)
CStringLongNonAscii 2177 2161 -0.7% 1.01x
CStringShortAscii 4741 4747 +0.1% 1.00x (?)
Calculator 445 444 -0.2% 1.00x
CaptureProp 7748 7733 -0.2% 1.00x (?)
CharIndexing_ascii_unicodeScalars 15880 15340 -3.4% 1.04x
CharIndexing_ascii_unicodeScalars_Backwards 14393 14980 +4.1% 0.96x
CharIndexing_chinese_unicodeScalars 12065 11633 -3.6% 1.04x
CharIndexing_chinese_unicodeScalars_Backwards 10913 11352 +4.0% 0.96x
CharIndexing_japanese_unicodeScalars 19015 18400 -3.2% 1.03x
CharIndexing_japanese_unicodeScalars_Backwards 17247 17930 +4.0% 0.96x
CharIndexing_korean_unicodeScalars 15399 14889 -3.3% 1.03x
CharIndexing_korean_unicodeScalars_Backwards 13982 14532 +3.9% 0.96x
CharIndexing_punctuatedJapanese_unicodeScalars 2890 2789 -3.5% 1.04x
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 2640 2723 +3.1% 0.97x
CharIndexing_punctuated_unicodeScalars 3604 3489 -3.2% 1.03x
CharIndexing_punctuated_unicodeScalars_Backwards 3297 3406 +3.3% 0.97x
CharIndexing_russian_unicodeScalars 13230 12795 -3.3% 1.03x
CharIndexing_russian_unicodeScalars_Backwards 12003 12488 +4.0% 0.96x
CharIndexing_tweet_unicodeScalars 31554 30267 -4.1% 1.04x
CharIndexing_tweet_unicodeScalars_Backwards 28496 29498 +3.5% 0.97x
CharIndexing_utf16_unicodeScalars 20620 20437 -0.9% 1.01x
CharIndexing_utf16_unicodeScalars_Backwards 21160 21328 +0.8% 0.99x
CharIteration_ascii_unicodeScalars 20623 21350 +3.5% 0.97x
CharIteration_ascii_unicodeScalars_Backwards 14070 13548 -3.7% 1.04x
CharIteration_chinese_unicodeScalars 15605 16159 +3.6% 0.97x
CharIteration_chinese_unicodeScalars_Backwards 10675 10223 -4.2% 1.04x
CharIteration_japanese_unicodeScalars 24792 25576 +3.2% 0.97x
CharIteration_japanese_unicodeScalars_Backwards 16833 16158 -4.0% 1.04x
CharIteration_korean_unicodeScalars 19961 20687 +3.6% 0.96x
CharIteration_korean_unicodeScalars_Backwards 13664 13101 -4.1% 1.04x
CharIteration_punctuatedJapanese_unicodeScalars 3730 3805 +2.0% 0.98x
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 2587 2485 -3.9% 1.04x
CharIteration_punctuated_unicodeScalars 4670 4785 +2.5% 0.98x
CharIteration_punctuated_unicodeScalars_Backwards 3227 3116 -3.4% 1.04x
CharIteration_russian_unicodeScalars 17160 17770 +3.6% 0.97x
CharIteration_russian_unicodeScalars_Backwards 11744 11257 -4.1% 1.04x
CharIteration_tweet_unicodeScalars 40802 42167 +3.3% 0.97x
CharIteration_tweet_unicodeScalars_Backwards 27475 26626 -3.1% 1.03x
CharIteration_utf16_unicodeScalars 27195 27427 +0.9% 0.99x
CharIteration_utf16_unicodeScalars_Backwards 16737 16743 +0.0% 1.00x (?)
CharacterLiteralsLarge 6064 6000 -1.1% 1.01x
CharacterLiteralsSmall 412 411 -0.2% 1.00x
CharacterPropertiesFetch 4623 4810 +4.0% 0.96x (?)
CharacterPropertiesStashed 1563 1626 +4.0% 0.96x
CharacterPropertiesStashedMemo 1561 1613 +3.3% 0.97x
Chars 968 967 -0.1% 1.00x
ClassArrayGetter 15 15 +0.0% 1.00x
Combos 454 454 +0.0% 1.00x
DictOfArraysToArrayOfDicts 786 793 +0.9% 0.99x (?)
Dictionary 504 506 +0.4% 1.00x (?)
Dictionary2 1602 1598 -0.2% 1.00x
Dictionary2OfObjects 2935 2948 +0.4% 1.00x (?)
Dictionary3 233 235 +0.9% 0.99x (?)
Dictionary3OfObjects 658 659 +0.2% 1.00x (?)
DictionaryBridge 2143 2054 -4.2% 1.04x (?)
DictionaryGroup 139 140 +0.7% 0.99x
DictionaryGroupOfObjects 1901 1900 -0.1% 1.00x (?)
DictionaryLiteral 1589 1604 +0.9% 0.99x (?)
DictionaryOfObjects 2181 2173 -0.4% 1.00x (?)
DictionaryRemove 2784 2836 +1.9% 0.98x (?)
DictionaryRemoveOfObjects 23461 23284 -0.8% 1.01x
DictionarySubscriptDefaultMutation 149 150 +0.7% 0.99x (?)
DictionarySubscriptDefaultMutationArray 490 488 -0.4% 1.00x (?)
DictionarySubscriptDefaultMutationArrayOfObjects 3795 3808 +0.3% 1.00x
DictionarySubscriptDefaultMutationOfObjects 1378 1378 +0.0% 1.00x
DictionarySwap 483 489 +1.2% 0.99x
DictionarySwapOfObjects 7533 7534 +0.0% 1.00x (?)
DropFirstAnyCollection 76 76 +0.0% 1.00x
DropFirstAnyCollectionLazy 66540 66748 +0.3% 1.00x (?)
DropFirstAnySeqCntRange 71 71 +0.0% 1.00x
DropFirstAnySeqCntRangeLazy 71 71 +0.0% 1.00x
DropFirstAnySequence 4252 4237 -0.4% 1.00x
DropFirstAnySequenceLazy 4275 4240 -0.8% 1.01x
DropFirstArray 35 35 +0.0% 1.00x
DropFirstArrayLazy 35 35 +0.0% 1.00x
DropFirstCountableRange 35 35 +0.0% 1.00x
DropFirstCountableRangeLazy 35 35 +0.0% 1.00x
DropFirstSequence 2622 2623 +0.0% 1.00x (?)
DropFirstSequenceLazy 2716 2716 +0.0% 1.00x
DropLastAnyCollection 28 28 +0.0% 1.00x
DropLastAnyCollectionLazy 23273 22411 -3.7% 1.04x (?)
DropLastAnySeqCRangeIter 3537 3530 -0.2% 1.00x
DropLastAnySeqCRangeIterLazy 3533 3531 -0.1% 1.00x (?)
DropLastAnySeqCntRange 23 23 +0.0% 1.00x
DropLastAnySeqCntRangeLazy 23 23 +0.0% 1.00x
DropLastAnySequence 5102 5103 +0.0% 1.00x (?)
DropLastAnySequenceLazy 5174 5207 +0.6% 0.99x
DropWhileAnyCollection 100 99 -1.0% 1.01x
DropWhileAnyCollectionLazy 148 147 -0.7% 1.01x
DropWhileAnySeqCRangeIterLazy 147 147 +0.0% 1.00x
DropWhileAnySeqCntRange 95 95 +0.0% 1.00x
DropWhileAnySeqCntRangeLazy 147 147 +0.0% 1.00x
DropWhileAnySequence 4623 4644 +0.5% 1.00x
DropWhileAnySequenceLazy 1833 1834 +0.1% 1.00x (?)
DropWhileArrayLazy 129 129 +0.0% 1.00x
DropWhileCountableRange 36 36 +0.0% 1.00x
DropWhileCountableRangeLazy 111 111 +0.0% 1.00x
DropWhileSequence 1322 1322 +0.0% 1.00x
DropWhileSequenceLazy 88 88 +0.0% 1.00x
EqualStringSubstring 432 432 +0.0% 1.00x
EqualSubstringString 432 432 +0.0% 1.00x
EqualSubstringSubstring 432 432 +0.0% 1.00x
EqualSubstringSubstringGenericEquatable 433 432 -0.2% 1.00x (?)
ErrorHandling 2359 2359 +0.0% 1.00x
ExclusivityGlobal 5 5 +0.0% 1.00x
ExclusivityIndependent 2 2 +0.0% 1.00x
FilterEvenUsingReduce 1323 1309 -1.1% 1.01x (?)
FilterEvenUsingReduceInto 149 148 -0.7% 1.01x (?)
FrequenciesUsingReduce 6644 6693 +0.7% 0.99x (?)
FrequenciesUsingReduceInto 3168 3137 -1.0% 1.01x (?)
Hanoi 3694 3537 -4.3% 1.04x
HashTest 1798 1802 +0.2% 1.00x (?)
Histogram 329 335 +1.8% 0.98x
Integrate 217 218 +0.5% 1.00x
IterateData 1373 1332 -3.0% 1.03x
Join 371 372 +0.3% 1.00x (?)
LazilyFilteredArrayContains 31887 30718 -3.7% 1.04x
LazilyFilteredArrays 67387 64827 -3.8% 1.04x (?)
LazilyFilteredRange 3827 3827 +0.0% 1.00x
LessSubstringSubstring 432 432 +0.0% 1.00x
LessSubstringSubstringGenericComparable 432 432 +0.0% 1.00x
LinkedList 7110 7135 +0.4% 1.00x
LuhnAlgoEager 583 581 -0.3% 1.00x
LuhnAlgoLazy 585 579 -1.0% 1.01x
MapReduce 456 456 +0.0% 1.00x
MapReduceAnyCollection 429 428 -0.2% 1.00x (?)
MapReduceAnyCollectionShort 2080 2090 +0.5% 1.00x (?)
MapReduceClass 3075 3086 +0.4% 1.00x
MapReduceClassShort 4619 4627 +0.2% 1.00x
MapReduceLazyCollection 13 13 +0.0% 1.00x
MapReduceLazyCollectionShort 34 34 +0.0% 1.00x
MapReduceLazySequence 86 86 +0.0% 1.00x
MapReduceSequence 463 452 -2.4% 1.02x
MapReduceShort 2042 2073 +1.5% 0.99x (?)
MapReduceShortString 21 22 +4.8% 0.95x
MapReduceString 85 85 +0.0% 1.00x
Memset 221 216 -2.3% 1.02x (?)
MonteCarloE 10460 10445 -0.1% 1.00x (?)
MonteCarloPi 42955 42697 -0.6% 1.01x
NSDictionaryCastToSwift 5555 5499 -1.0% 1.01x (?)
NSError 307 304 -1.0% 1.01x
NSStringConversion 335 337 +0.6% 0.99x
NibbleSort 4118 4175 +1.4% 0.99x
NopDeinit 23664 23397 -1.1% 1.01x
ObjectAllocation 181 182 +0.6% 0.99x (?)
ObjectiveCBridgeFromNSArrayAnyObject 20673 21170 +2.4% 0.98x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 4184 4370 +4.4% 0.96x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 40956 42453 +3.7% 0.96x (?)
ObjectiveCBridgeFromNSSetAnyObject 66499 64376 -3.2% 1.03x
ObjectiveCBridgeFromNSString 1311 1305 -0.5% 1.00x (?)
ObjectiveCBridgeFromNSStringForced 2428 2415 -0.5% 1.01x (?)
ObjectiveCBridgeStubDataAppend 3989 3861 -3.2% 1.03x (?)
ObjectiveCBridgeStubDateMutation 257 258 +0.4% 1.00x
ObjectiveCBridgeStubFromNSDate 3959 3905 -1.4% 1.01x (?)
ObjectiveCBridgeStubFromNSString 867 870 +0.3% 1.00x (?)
ObjectiveCBridgeStubFromNSStringRef 155 159 +2.6% 0.97x
ObjectiveCBridgeStubNSDataAppend 2516 2557 +1.6% 0.98x (?)
ObjectiveCBridgeStubNSDateMutationRef 13477 13474 -0.0% 1.00x (?)
ObjectiveCBridgeStubToArrayOfNSString 29884 29693 -0.6% 1.01x (?)
ObjectiveCBridgeStubToNSDate 16226 15632 -3.7% 1.04x (?)
ObjectiveCBridgeStubToNSDateRef 3399 3466 +2.0% 0.98x (?)
ObjectiveCBridgeStubToNSString 1532 1532 +0.0% 1.00x
ObjectiveCBridgeStubToNSStringRef 115 115 +0.0% 1.00x
ObjectiveCBridgeStubURLAppendPath 353206 341146 -3.4% 1.04x (?)
ObjectiveCBridgeStubURLAppendPathRef 341024 333930 -2.1% 1.02x (?)
ObjectiveCBridgeToNSArray 29763 30313 +1.8% 0.98x (?)
ObjectiveCBridgeToNSDictionary 55527 57610 +3.8% 0.96x (?)
ObjectiveCBridgeToNSSet 47303 46059 -2.6% 1.03x (?)
ObjectiveCBridgeToNSString 1326 1313 -1.0% 1.01x (?)
ObserverClosure 2147 2139 -0.4% 1.00x (?)
ObserverForwarderStruct 997 1004 +0.7% 0.99x
ObserverPartiallyAppliedMethod 3718 3705 -0.3% 1.00x (?)
ObserverUnappliedMethod 2334 2412 +3.3% 0.97x
OpenClose 263 257 -2.3% 1.02x
PartialApplyDynamicType 0 0 +0.0% 1.00x
Phonebook 4104 4135 +0.8% 0.99x (?)
PointerArithmetics 31506 31491 -0.0% 1.00x (?)
PolymorphicCalls 25 25 +0.0% 1.00x
PopFrontArray 1966 1967 +0.1% 1.00x (?)
PopFrontArrayGeneric 1971 1992 +1.1% 0.99x
PrefixAnyCollection 76 76 +0.0% 1.00x
PrefixAnyCollectionLazy 66675 66190 -0.7% 1.01x (?)
PrefixAnySeqCntRange 71 71 +0.0% 1.00x
PrefixAnySeqCntRangeLazy 71 71 +0.0% 1.00x
PrefixAnySequence 3799 3710 -2.3% 1.02x
PrefixAnySequenceLazy 3784 3700 -2.2% 1.02x
PrefixArray 35 35 +0.0% 1.00x
PrefixArrayLazy 35 35 +0.0% 1.00x
PrefixCountableRange 35 35 +0.0% 1.00x
PrefixCountableRangeLazy 35 35 +0.0% 1.00x
PrefixSequence 1309 1308 -0.1% 1.00x (?)
PrefixSequenceLazy 1380 1380 +0.0% 1.00x
PrefixWhileAnyCollection 146 146 +0.0% 1.00x
PrefixWhileAnyCollectionLazy 106 106 +0.0% 1.00x
PrefixWhileAnySeqCRangeIter 9381 9442 +0.7% 0.99x (?)
PrefixWhileAnySeqCRangeIterLazy 106 106 +0.0% 1.00x
PrefixWhileAnySeqCntRange 142 142 +0.0% 1.00x
PrefixWhileAnySeqCntRangeLazy 106 106 +0.0% 1.00x
PrefixWhileAnySequence 10473 10466 -0.1% 1.00x (?)
PrefixWhileAnySequenceLazy 1373 1374 +0.1% 1.00x (?)
PrefixWhileArray 105 105 +0.0% 1.00x
PrefixWhileArrayLazy 70 70 +0.0% 1.00x
PrefixWhileCountableRange 46 46 +0.0% 1.00x
PrefixWhileCountableRangeLazy 35 35 +0.0% 1.00x
PrefixWhileSequence 392 392 +0.0% 1.00x
PrefixWhileSequenceLazy 52 52 +0.0% 1.00x
Prims 768 766 -0.3% 1.00x (?)
PrimsSplit 764 769 +0.7% 0.99x (?)
RC4 164 167 +1.8% 0.98x
RGBHistogram 2772 2784 +0.4% 1.00x
RGBHistogramOfObjects 23154 23205 +0.2% 1.00x (?)
RangeAssignment 382 380 -0.5% 1.01x (?)
RangeIterationSigned 171 171 +0.0% 1.00x
RangeIterationSigned64 200 200 +0.0% 1.00x
RangeIterationUnsigned 200 200 +0.0% 1.00x
RangeReplaceableCollectionPlusDefault 981 978 -0.3% 1.00x (?)
RecursiveOwnedParameter 2295 2296 +0.0% 1.00x (?)
ReversedArray 57 57 +0.0% 1.00x
ReversedBidirectional 15579 15538 -0.3% 1.00x
ReversedDictionary 134 129 -3.7% 1.04x
RomanNumbers 116111 111579 -3.9% 1.04x
SetExclusiveOr 3479 3388 -2.6% 1.03x
SetExclusiveOr_OfObjects 8564 8497 -0.8% 1.01x (?)
SetIntersect 324 333 +2.8% 0.97x
SetIntersect_OfObjects 1721 1715 -0.3% 1.00x
SetIsSubsetOf 292 292 +0.0% 1.00x
SetIsSubsetOf_OfObjects 349 352 +0.9% 0.99x
SetUnion 3173 3152 -0.7% 1.01x (?)
SetUnion_OfObjects 7095 7145 +0.7% 0.99x
SevenBoom 1528 1532 +0.3% 1.00x (?)
SortLargeExistentials 6798 6769 -0.4% 1.00x
SortLettersInPlace 1119 1124 +0.4% 1.00x (?)
SortSortedStrings 1116 1130 +1.3% 0.99x
SortStrings 1971 1991 +1.0% 0.99x
SortStringsUnicode 15476 15512 +0.2% 1.00x (?)
StackPromo 22418 22711 +1.3% 0.99x
StaticArray 6 6 +0.0% 1.00x
StrComplexWalk 1564 1566 +0.1% 1.00x (?)
StrToInt 2240 2171 -3.1% 1.03x
StringAdder 4295 4253 -1.0% 1.01x
StringBuilder 1448 1474 +1.8% 0.98x (?)
StringComparison_abnormal 861 861 +0.0% 1.00x
StringComparison_ascii 978 978 +0.0% 1.00x
StringComparison_emoji 2561 2550 -0.4% 1.00x
StringComparison_fastPrenormal 8705 8711 +0.1% 1.00x (?)
StringComparison_latin1 5995 5996 +0.0% 1.00x (?)
StringComparison_longSharedPrefix 11523 11525 +0.0% 1.00x (?)
StringComparison_nonBMPSlowestPrenormal 4693 4674 -0.4% 1.00x
StringComparison_slowerPrenormal 4177 4165 -0.3% 1.00x
StringComparison_zalgo 1735 1726 -0.5% 1.01x
StringEdits 117230 117921 +0.6% 0.99x (?)
StringEnumRawValueInitialization 991 1009 +1.8% 0.98x (?)
StringEqualPointerComparison 286 286 +0.0% 1.00x
StringFromLongWholeSubstring 21 21 +0.0% 1.00x
StringFromLongWholeSubstringGeneric 10 10 +0.0% 1.00x
StringHasPrefixAscii 1632 1574 -3.6% 1.04x
StringHasPrefixUnicode 28278 28217 -0.2% 1.00x (?)
StringHasSuffixAscii 1747 1717 -1.7% 1.02x
StringHasSuffixUnicode 85811 85361 -0.5% 1.01x (?)
StringInterpolation 9565 9289 -2.9% 1.03x (?)
StringMatch 7543 7594 +0.7% 0.99x
StringRemoveDupes 1012 1008 -0.4% 1.00x (?)
StringUTF16Builder 2421 2446 +1.0% 0.99x (?)
StringWithCString 46654 46801 +0.3% 1.00x
StringWordBuilder 1771 1752 -1.1% 1.01x
StringWordBuilderReservingCapacity 1316 1303 -1.0% 1.01x
SubstringComparable 2061 2067 +0.3% 1.00x (?)
SubstringEqualString 2109 2128 +0.9% 0.99x
SubstringEquatable 3168 3165 -0.1% 1.00x (?)
SubstringFromLongString 10 10 +0.0% 1.00x
SubstringFromLongStringGeneric 69 70 +1.4% 0.99x
SuffixAnyCollection 28 28 +0.0% 1.00x
SuffixAnyCollectionLazy 23092 22694 -1.7% 1.02x (?)
SuffixAnySeqCRangeIter 3827 3825 -0.1% 1.00x (?)
SuffixAnySeqCRangeIterLazy 3825 3822 -0.1% 1.00x (?)
SuffixAnySeqCntRange 23 23 +0.0% 1.00x
SuffixAnySeqCntRangeLazy 23 23 +0.0% 1.00x
SuffixAnySequence 5080 5076 -0.1% 1.00x (?)
SuffixAnySequenceLazy 5193 5199 +0.1% 1.00x (?)
SuffixCountableRange 11 11 +0.0% 1.00x
SuffixCountableRangeLazy 11 11 +0.0% 1.00x
SuffixSequence 3777 3788 +0.3% 1.00x
SuffixSequenceLazy 3771 3750 -0.6% 1.01x (?)
SumUsingReduce 102 102 +0.0% 1.00x
SumUsingReduceInto 102 102 +0.0% 1.00x
SuperChars 42108 41847 -0.6% 1.01x (?)
TwoSum 990 990 +0.0% 1.00x
TypeFlood 0 0 +0.0% 1.00x
UTF8Decode 313 313 +0.0% 1.00x
Walsh 429 451 +5.1% 0.95x
WordCountHistogramASCII 8147 7994 -1.9% 1.02x
WordCountHistogramUTF16 54184 51892 -4.2% 1.04x (?)
WordCountUniqueASCII 1745 1757 +0.7% 0.99x (?)
WordCountUniqueUTF16 21180 21786 +2.9% 0.97x (?)
WordSplitASCII 20809 20999 +0.9% 0.99x (?)
WordSplitUTF16 21955 21636 -1.5% 1.01x (?)
XorLoop 394 394 +0.0% 1.00x

Unoptimized (Onone)

Regression (17)
TEST OLD NEW DELTA SPEEDUP
StringRemoveDupes 1449 1633 +12.7% 0.89x
DropFirstArrayLazy 25771 29026 +12.6% 0.89x
PrefixArrayLazy 25770 28971 +12.4% 0.89x
DropFirstAnySeqCRangeIter 21806 24372 +11.8% 0.89x
CharIteration_punctuated_unicodeScalars_Backwards 64457 71222 +10.5% 0.91x (?)
ObjectiveCBridgeStubFromArrayOfNSString 27904 30786 +10.3% 0.91x (?)
TypeFlood 155 171 +10.3% 0.91x
DropFirstAnySeqCRangeIterLazy 22115 24273 +9.8% 0.91x
CharIndexing_tweet_unicodeScalars 703709 770262 +9.5% 0.91x (?)
DropLastAnyCollectionLazy 34827 38113 +9.4% 0.91x (?)
CStringShortAscii 7807 8541 +9.4% 0.91x
ObjectiveCBridgeFromNSSetAnyObjectToString 82897 90552 +9.2% 0.92x (?)
ObjectiveCBridgeFromNSArrayAnyObject 22068 24087 +9.1% 0.92x (?)
BitCount 2100 2268 +8.0% 0.93x
SuffixAnyCollectionLazy 35792 38144 +6.6% 0.94x
PrefixArray 4003 4259 +6.4% 0.94x
DictionarySwapOfObjects 22516 23830 +5.8% 0.94x
Improvement (21)
TEST OLD NEW DELTA SPEEDUP
DoubleWidthDivision 1920739 23831 -98.8% 80.60x
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 61233 51670 -15.6% 1.19x
DropWhileAnySeqCRangeIter 26944 23412 -13.1% 1.15x
ErrorHandling 7982 6953 -12.9% 1.15x (?)
CaptureProp 384871 339871 -11.7% 1.13x
DictionaryGroup 4851 4330 -10.7% 1.12x
ArrayOfPOD 842 758 -10.0% 1.11x
CharIteration_japanese_unicodeScalars_Backwards 386790 350188 -9.5% 1.10x
CharIteration_russian_unicodeScalars_Backwards 273145 249185 -8.8% 1.10x (?)
LuhnAlgoEager 5361 4952 -7.6% 1.08x
SuffixAnySeqCRangeIterLazy 37362 34580 -7.4% 1.08x
StringEqualPointerComparison 3406 3153 -7.4% 1.08x
ObjectiveCBridgeFromNSSetAnyObjectForced 7497 6948 -7.3% 1.08x (?)
COWTree 13011 12135 -6.7% 1.07x (?)
ArrayAppend 5125 4792 -6.5% 1.07x
SuffixAnySeqCRangeIter 37030 34659 -6.4% 1.07x
StackPromo 93666 87915 -6.1% 1.07x (?)
CharIteration_korean_unicodeScalars_Backwards 329896 310094 -6.0% 1.06x
MapReduceShortString 251 238 -5.2% 1.05x (?)
ObjectiveCBridgeStubNSDataAppend 3081 2931 -4.9% 1.05x
ArrayAppendReserved 4743 4515 -4.8% 1.05x
No Changes (317)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 5071 5047 -0.5% 1.00x (?)
AnyHashableWithAClass 87846 87375 -0.5% 1.01x
Array2D 636849 636284 -0.1% 1.00x (?)
ArrayAppendArrayOfInt 859 862 +0.3% 1.00x
ArrayAppendAscii 40328 40309 -0.0% 1.00x (?)
ArrayAppendFromGeneric 863 866 +0.3% 1.00x (?)
ArrayAppendGenericStructs 1499 1504 +0.3% 1.00x
ArrayAppendLatin1 63698 64103 +0.6% 0.99x
ArrayAppendLazyMap 166916 168574 +1.0% 0.99x
ArrayAppendOptionals 1499 1501 +0.1% 1.00x (?)
ArrayAppendRepeatCol 175353 173476 -1.1% 1.01x (?)
ArrayAppendSequence 148012 147308 -0.5% 1.00x
ArrayAppendStrings 15434 15437 +0.0% 1.00x (?)
ArrayAppendToFromGeneric 862 866 +0.5% 1.00x (?)
ArrayAppendToGeneric 867 869 +0.2% 1.00x (?)
ArrayAppendUTF16 64505 63526 -1.5% 1.02x (?)
ArrayInClass 6246 6226 -0.3% 1.00x
ArrayLiteral 1781 1770 -0.6% 1.01x (?)
ArrayOfGenericPOD2 1129 1128 -0.1% 1.00x (?)
ArrayOfGenericRef 10143 10027 -1.1% 1.01x (?)
ArrayOfRef 9273 9333 +0.6% 0.99x (?)
ArrayPlusEqualArrayOfInt 864 865 +0.1% 1.00x (?)
ArrayPlusEqualFiveElementCollection 233948 234016 +0.0% 1.00x (?)
ArrayPlusEqualSingleElementCollection 230423 230448 +0.0% 1.00x (?)
ArrayPlusEqualThreeElements 9305 8949 -3.8% 1.04x
ArraySubscript 81095 80922 -0.2% 1.00x (?)
ArrayValueProp 3610 3602 -0.2% 1.00x (?)
ArrayValueProp2 16182 15960 -1.4% 1.01x (?)
ArrayValueProp3 4107 4108 +0.0% 1.00x (?)
ArrayValueProp4 4143 4070 -1.8% 1.02x (?)
BinaryFloatingPointConversionFromBinaryInteger 5967 6077 +1.8% 0.98x (?)
ByteSwap 3914 3939 +0.6% 0.99x
CStringLongAscii 5253 5444 +3.6% 0.96x
CStringLongNonAscii 2254 2240 -0.6% 1.01x (?)
Calculator 1756 1690 -3.8% 1.04x
CharIndexing_ascii_unicodeScalars 356607 359865 +0.9% 0.99x (?)
CharIndexing_ascii_unicodeScalars_Backwards 386660 385342 -0.3% 1.00x (?)
CharIndexing_chinese_unicodeScalars 281871 273003 -3.1% 1.03x (?)
CharIndexing_chinese_unicodeScalars_Backwards 298572 291451 -2.4% 1.02x (?)
CharIndexing_japanese_unicodeScalars 431724 431616 -0.0% 1.00x (?)
CharIndexing_japanese_unicodeScalars_Backwards 463810 469128 +1.1% 0.99x (?)
CharIndexing_korean_unicodeScalars 349288 350345 +0.3% 1.00x (?)
CharIndexing_korean_unicodeScalars_Backwards 381700 377014 -1.2% 1.01x (?)
CharIndexing_punctuatedJapanese_unicodeScalars 63753 63733 -0.0% 1.00x (?)
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 68404 68799 +0.6% 0.99x (?)
CharIndexing_punctuated_unicodeScalars 80845 84743 +4.8% 0.95x (?)
CharIndexing_punctuated_unicodeScalars_Backwards 84929 86233 +1.5% 0.98x (?)
CharIndexing_russian_unicodeScalars 299321 300382 +0.4% 1.00x (?)
CharIndexing_russian_unicodeScalars_Backwards 322026 320369 -0.5% 1.01x (?)
CharIndexing_tweet_unicodeScalars_Backwards 775882 784539 +1.1% 0.99x (?)
CharIndexing_utf16_unicodeScalars 302357 303743 +0.5% 1.00x (?)
CharIndexing_utf16_unicodeScalars_Backwards 324200 321300 -0.9% 1.01x (?)
CharIteration_ascii_unicodeScalars 153078 153878 +0.5% 0.99x
CharIteration_ascii_unicodeScalars_Backwards 339172 332596 -1.9% 1.02x (?)
CharIteration_chinese_unicodeScalars 115791 116416 +0.5% 0.99x (?)
CharIteration_chinese_unicodeScalars_Backwards 223668 222015 -0.7% 1.01x (?)
CharIteration_japanese_unicodeScalars 183177 184152 +0.5% 0.99x
CharIteration_korean_unicodeScalars 148216 149222 +0.7% 0.99x (?)
CharIteration_punctuatedJapanese_unicodeScalars 27405 27503 +0.4% 1.00x (?)
CharIteration_punctuated_unicodeScalars 34357 34539 +0.5% 0.99x
CharIteration_russian_unicodeScalars 127438 127978 +0.4% 1.00x (?)
CharIteration_tweet_unicodeScalars 302090 303489 +0.5% 1.00x
CharIteration_tweet_unicodeScalars_Backwards 586482 586350 -0.0% 1.00x (?)
CharIteration_utf16_unicodeScalars 130753 129941 -0.6% 1.01x (?)
CharIteration_utf16_unicodeScalars_Backwards 277662 272321 -1.9% 1.02x (?)
CharacterLiteralsLarge 5952 5978 +0.4% 1.00x (?)
CharacterLiteralsSmall 708 710 +0.3% 1.00x
CharacterPropertiesFetch 5481 5478 -0.1% 1.00x (?)
CharacterPropertiesPrecomputed 4235 4169 -1.6% 1.02x (?)
CharacterPropertiesStashed 2340 2305 -1.5% 1.02x (?)
CharacterPropertiesStashedMemo 5023 4941 -1.6% 1.02x (?)
Chars 39714 39508 -0.5% 1.01x (?)
ClassArrayGetter 983 979 -0.4% 1.00x
Combos 2182 2265 +3.8% 0.96x
DictOfArraysToArrayOfDicts 3447 3413 -1.0% 1.01x (?)
Dictionary 2572 2578 +0.2% 1.00x (?)
Dictionary2 2864 2862 -0.1% 1.00x (?)
Dictionary2OfObjects 5510 5506 -0.1% 1.00x (?)
Dictionary3 1265 1264 -0.1% 1.00x (?)
Dictionary3OfObjects 2271 2252 -0.8% 1.01x (?)
DictionaryBridge 2229 2189 -1.8% 1.02x (?)
DictionaryGroupOfObjects 7367 7491 +1.7% 0.98x
DictionaryLiteral 8705 8869 +1.9% 0.98x (?)
DictionaryOfObjects 6059 6322 +4.3% 0.96x (?)
DictionaryRemove 18414 18426 +0.1% 1.00x (?)
DictionaryRemoveOfObjects 49579 50943 +2.8% 0.97x (?)
DictionarySubscriptDefaultMutation 2090 2103 +0.6% 0.99x (?)
DictionarySubscriptDefaultMutationArray 2351 2341 -0.4% 1.00x (?)
DictionarySubscriptDefaultMutationArrayOfObjects 9143 9085 -0.6% 1.01x (?)
DictionarySubscriptDefaultMutationOfObjects 5519 5552 +0.6% 0.99x (?)
DictionarySwap 5306 5310 +0.1% 1.00x (?)
DropFirstAnyCollection 14637 14434 -1.4% 1.01x
DropFirstAnyCollectionLazy 111561 117060 +4.9% 0.95x
DropFirstAnySeqCntRange 14308 14067 -1.7% 1.02x
DropFirstAnySeqCntRangeLazy 14367 14173 -1.4% 1.01x
DropFirstAnySequence 11042 10804 -2.2% 1.02x
DropFirstAnySequenceLazy 10937 11020 +0.8% 0.99x
DropFirstArray 4003 4004 +0.0% 1.00x (?)
DropFirstCountableRange 327 326 -0.3% 1.00x
DropFirstCountableRangeLazy 27558 26414 -4.2% 1.04x
DropFirstSequence 10868 10718 -1.4% 1.01x
DropFirstSequenceLazy 10580 10564 -0.2% 1.00x (?)
DropLastAnyCollection 4910 4870 -0.8% 1.01x (?)
DropLastAnySeqCRangeIter 39278 38389 -2.3% 1.02x
DropLastAnySeqCRangeIterLazy 39393 38466 -2.4% 1.02x
DropLastAnySeqCntRange 4804 4839 +0.7% 0.99x
DropLastAnySeqCntRangeLazy 4821 4739 -1.7% 1.02x
DropLastAnySequence 29081 29240 +0.5% 0.99x
DropLastAnySequenceLazy 29202 29154 -0.2% 1.00x (?)
DropLastCountableRange 114 113 -0.9% 1.01x (?)
DropLastCountableRangeLazy 9155 8822 -3.6% 1.04x (?)
DropLastSequence 29065 29074 +0.0% 1.00x (?)
DropLastSequenceLazy 28978 29119 +0.5% 1.00x (?)
DropWhileAnyCollection 18341 18184 -0.9% 1.01x
DropWhileAnyCollectionLazy 20122 19830 -1.5% 1.01x
DropWhileAnySeqCRangeIterLazy 19952 19781 -0.9% 1.01x
DropWhileAnySeqCntRange 18286 18249 -0.2% 1.00x
DropWhileAnySeqCntRangeLazy 20033 19902 -0.7% 1.01x
DropWhileAnySequence 12466 12404 -0.5% 1.00x (?)
DropWhileAnySequenceLazy 10173 10034 -1.4% 1.01x
DropWhileArrayLazy 13954 13642 -2.2% 1.02x
DropWhileCountableRange 4403 4339 -1.5% 1.01x
DropWhileCountableRangeLazy 19434 19464 +0.2% 1.00x (?)
DropWhileSequence 11941 11994 +0.4% 1.00x (?)
DropWhileSequenceLazy 9615 9704 +0.9% 0.99x
EqualStringSubstring 477 477 +0.0% 1.00x
EqualSubstringString 477 478 +0.2% 1.00x (?)
EqualSubstringSubstring 478 478 +0.0% 1.00x
EqualSubstringSubstringGenericEquatable 487 487 +0.0% 1.00x
ExclusivityGlobal 186 186 +0.0% 1.00x
ExclusivityIndependent 67 69 +3.0% 0.97x (?)
FilterEvenUsingReduce 3769 3893 +3.3% 0.97x (?)
FilterEvenUsingReduceInto 2155 2172 +0.8% 0.99x (?)
FrequenciesUsingReduce 11057 10561 -4.5% 1.05x (?)
FrequenciesUsingReduceInto 5711 5582 -2.3% 1.02x (?)
Hanoi 20038 20001 -0.2% 1.00x (?)
HashTest 16733 16422 -1.9% 1.02x (?)
Histogram 6573 6489 -1.3% 1.01x
Integrate 799 778 -2.6% 1.03x
IterateData 7613 7697 +1.1% 0.99x
Join 1103 1108 +0.5% 1.00x (?)
LazilyFilteredArrayContains 772193 769444 -0.4% 1.00x (?)
LazilyFilteredArrays 1488559 1480846 -0.5% 1.01x (?)
LazilyFilteredRange 489559 487072 -0.5% 1.01x
LessSubstringSubstring 479 477 -0.4% 1.00x
LessSubstringSubstringGenericComparable 485 485 +0.0% 1.00x
LinkedList 31379 31210 -0.5% 1.01x
LuhnAlgoLazy 5370 5174 -3.6% 1.04x
MapReduce 27423 27426 +0.0% 1.00x (?)
MapReduceAnyCollection 27549 27484 -0.2% 1.00x (?)
MapReduceAnyCollectionShort 38729 39231 +1.3% 0.99x (?)
MapReduceClass 32096 31987 -0.3% 1.00x
MapReduceClassShort 43112 43995 +2.0% 0.98x
MapReduceLazyCollection 22978 23011 +0.1% 1.00x (?)
MapReduceLazyCollectionShort 34904 34276 -1.8% 1.02x
MapReduceLazySequence 18226 17958 -1.5% 1.01x
MapReduceSequence 30411 30344 -0.2% 1.00x (?)
MapReduceShort 38761 39311 +1.4% 0.99x (?)
MapReduceString 1937 1934 -0.2% 1.00x (?)
Memset 44981 45130 +0.3% 1.00x (?)
MonteCarloE 901188 884014 -1.9% 1.02x (?)
MonteCarloPi 3947849 3941711 -0.2% 1.00x (?)
NSDictionaryCastToSwift 6787 7006 +3.2% 0.97x
NSError 732 757 +3.4% 0.97x (?)
NSStringConversion 372 380 +2.2% 0.98x
NibbleSort 309673 307230 -0.8% 1.01x (?)
NopDeinit 165143 170592 +3.3% 0.97x (?)
ObjectAllocation 1373 1358 -1.1% 1.01x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 8902 8526 -4.2% 1.04x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 46613 45124 -3.2% 1.03x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 39696 39617 -0.2% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 132212 136260 +3.1% 0.97x (?)
ObjectiveCBridgeFromNSSetAnyObject 64640 66909 +3.5% 0.97x (?)
ObjectiveCBridgeFromNSString 3292 3229 -1.9% 1.02x (?)
ObjectiveCBridgeFromNSStringForced 2753 2768 +0.5% 0.99x (?)
ObjectiveCBridgeStubDataAppend 4415 4283 -3.0% 1.03x (?)
ObjectiveCBridgeStubDateMutation 660 633 -4.1% 1.04x
ObjectiveCBridgeStubFromNSDate 4422 4485 +1.4% 0.99x (?)
ObjectiveCBridgeStubFromNSString 931 906 -2.7% 1.03x (?)
ObjectiveCBridgeStubFromNSStringRef 202 199 -1.5% 1.02x
ObjectiveCBridgeStubNSDateMutationRef 16407 16119 -1.8% 1.02x (?)
ObjectiveCBridgeStubToArrayOfNSString 30209 30060 -0.5% 1.00x (?)
ObjectiveCBridgeStubToNSDate 16446 16419 -0.2% 1.00x (?)
ObjectiveCBridgeStubToNSDateRef 3479 3469 -0.3% 1.00x (?)
ObjectiveCBridgeStubToNSString 1564 1565 +0.1% 1.00x (?)
ObjectiveCBridgeStubToNSStringRef 159 153 -3.8% 1.04x
ObjectiveCBridgeStubURLAppendPath 348850 341116 -2.2% 1.02x (?)
ObjectiveCBridgeStubURLAppendPathRef 360043 353314 -1.9% 1.02x (?)
ObjectiveCBridgeToNSArray 30169 30076 -0.3% 1.00x (?)
ObjectiveCBridgeToNSDictionary 58896 59989 +1.9% 0.98x (?)
ObjectiveCBridgeToNSSet 47701 47482 -0.5% 1.00x (?)
ObjectiveCBridgeToNSString 1354 1339 -1.1% 1.01x
ObserverClosure 6360 6352 -0.1% 1.00x (?)
ObserverForwarderStruct 4399 4406 +0.2% 1.00x
ObserverPartiallyAppliedMethod 7843 7782 -0.8% 1.01x
ObserverUnappliedMethod 7907 7891 -0.2% 1.00x (?)
OpenClose 570 561 -1.6% 1.02x
PartialApplyDynamicType 41547 40984 -1.4% 1.01x (?)
Phonebook 20824 20851 +0.1% 1.00x
PointerArithmetics 114584 117532 +2.6% 0.97x
PolymorphicCalls 6089 6165 +1.2% 0.99x (?)
PopFrontArray 6836 6805 -0.5% 1.00x (?)
PopFrontArrayGeneric 5768 5817 +0.8% 0.99x
PopFrontUnsafePointer 10579 10607 +0.3% 1.00x (?)
PrefixAnyCollection 14649 14569 -0.5% 1.01x (?)
PrefixAnyCollectionLazy 109859 115619 +5.2% 0.95x
PrefixAnySeqCRangeIter 19998 19262 -3.7% 1.04x
PrefixAnySeqCRangeIterLazy 20356 19448 -4.5% 1.05x
PrefixAnySeqCntRange 14412 14516 +0.7% 0.99x (?)
PrefixAnySeqCntRangeLazy 14406 14212 -1.3% 1.01x (?)
PrefixAnySequence 9186 9167 -0.2% 1.00x (?)
PrefixAnySequenceLazy 9094 9275 +2.0% 0.98x (?)
PrefixCountableRange 340 326 -4.1% 1.04x
PrefixCountableRangeLazy 27432 26443 -3.6% 1.04x
PrefixSequence 8699 8811 +1.3% 0.99x (?)
PrefixSequenceLazy 8788 8872 +1.0% 0.99x (?)
PrefixWhileAnyCollection 26326 26213 -0.4% 1.00x
PrefixWhileAnyCollectionLazy 16546 16501 -0.3% 1.00x
PrefixWhileAnySeqCRangeIter 34070 33962 -0.3% 1.00x (?)
PrefixWhileAnySeqCRangeIterLazy 16667 16642 -0.1% 1.00x (?)
PrefixWhileAnySeqCntRange 26199 26164 -0.1% 1.00x
PrefixWhileAnySeqCntRangeLazy 16512 16530 +0.1% 1.00x (?)
PrefixWhileAnySequence 26655 26631 -0.1% 1.00x (?)
PrefixWhileAnySequenceLazy 9199 9122 -0.8% 1.01x (?)
PrefixWhileArray 11585 11617 +0.3% 1.00x (?)
PrefixWhileArrayLazy 12224 12117 -0.9% 1.01x
PrefixWhileCountableRange 12274 12279 +0.0% 1.00x (?)
PrefixWhileCountableRangeLazy 16128 16159 +0.2% 1.00x
PrefixWhileSequence 26407 26382 -0.1% 1.00x (?)
PrefixWhileSequenceLazy 8962 8842 -1.3% 1.01x (?)
Prims 10021 10211 +1.9% 0.98x (?)
PrimsSplit 10195 9944 -2.5% 1.03x (?)
RC4 16537 17084 +3.3% 0.97x
RGBHistogram 26651 26872 +0.8% 0.99x (?)
RGBHistogramOfObjects 94536 94645 +0.1% 1.00x (?)
RangeAssignment 2708 2747 +1.4% 0.99x (?)
RangeIterationSigned 17162 16957 -1.2% 1.01x (?)
RangeIterationSigned64 40261 39944 -0.8% 1.01x
RangeIterationUnsigned 35761 35677 -0.2% 1.00x (?)
RangeReplaceableCollectionPlusDefault 8798 8475 -3.7% 1.04x
RecursiveOwnedParameter 7844 7978 +1.7% 0.98x (?)
ReversedArray 13073 12986 -0.7% 1.01x (?)
ReversedBidirectional 42252 41888 -0.9% 1.01x (?)
ReversedDictionary 23227 22998 -1.0% 1.01x
RomanNumbers 1213920 1160387 -4.4% 1.05x
SetExclusiveOr 17246 17055 -1.1% 1.01x
SetExclusiveOr_OfObjects 42532 41337 -2.8% 1.03x (?)
SetIntersect 8323 8208 -1.4% 1.01x
SetIntersect_OfObjects 12175 12006 -1.4% 1.01x (?)
SetIsSubsetOf 1327 1331 +0.3% 1.00x
SetIsSubsetOf_OfObjects 1551 1550 -0.1% 1.00x (?)
SetUnion 11883 11729 -1.3% 1.01x
SetUnion_OfObjects 28933 29002 +0.2% 1.00x (?)
SevenBoom 1684 1680 -0.2% 1.00x (?)
Sim2DArray 43843 43851 +0.0% 1.00x (?)
SortLargeExistentials 15654 15668 +0.1% 1.00x (?)
SortLettersInPlace 2869 2822 -1.6% 1.02x
SortSortedStrings 1294 1333 +3.0% 0.97x
SortStrings 2424 2447 +0.9% 0.99x
SortStringsUnicode 16371 16380 +0.1% 1.00x (?)
StaticArray 2650 2642 -0.3% 1.00x (?)
StrComplexWalk 6657 6657 +0.0% 1.00x
StrToInt 57572 59644 +3.6% 0.97x
StringAdder 4800 4736 -1.3% 1.01x
StringBuilder 6794 7072 +4.1% 0.96x (?)
StringBuilderLong 2759 2733 -0.9% 1.01x
StringComparison_abnormal 1432 1433 +0.1% 1.00x (?)
StringComparison_ascii 9672 9604 -0.7% 1.01x
StringComparison_emoji 3909 3830 -2.0% 1.02x (?)
StringComparison_fastPrenormal 13262 13264 +0.0% 1.00x (?)
StringComparison_latin1 9604 9545 -0.6% 1.01x
StringComparison_longSharedPrefix 13112 13091 -0.2% 1.00x (?)
StringComparison_nonBMPSlowestPrenormal 7140 7126 -0.2% 1.00x
StringComparison_slowerPrenormal 6860 6868 +0.1% 1.00x (?)
StringComparison_zalgo 2950 2945 -0.2% 1.00x (?)
StringEdits 359010 371732 +3.5% 0.97x (?)
StringEnumRawValueInitialization 21088 20976 -0.5% 1.01x (?)
StringFromLongWholeSubstring 22 23 +4.5% 0.96x
StringFromLongWholeSubstringGeneric 205 207 +1.0% 0.99x (?)
StringHasPrefixAscii 3149 3079 -2.2% 1.02x
StringHasPrefixUnicode 31061 30892 -0.5% 1.01x (?)
StringHasSuffixAscii 3256 3225 -1.0% 1.01x
StringHasSuffixUnicode 88248 87900 -0.4% 1.00x (?)
StringInterpolation 14228 13877 -2.5% 1.03x (?)
StringMatch 33283 33959 +2.0% 0.98x
StringUTF16Builder 7646 7970 +4.2% 0.96x (?)
StringWalk 12946 13235 +2.2% 0.98x
StringWithCString 45544 47226 +3.7% 0.96x
StringWordBuilder 2557 2582 +1.0% 0.99x
StringWordBuilderReservingCapacity 2217 2237 +0.9% 0.99x
SubstringComparable 4134 4142 +0.2% 1.00x (?)
SubstringEqualString 3526 3468 -1.6% 1.02x (?)
SubstringEquatable 7858 7892 +0.4% 1.00x (?)
SubstringFromLongString 24 24 +0.0% 1.00x
SubstringFromLongStringGeneric 103 103 +0.0% 1.00x
SuffixAnyCollection 4884 4869 -0.3% 1.00x
SuffixAnySeqCntRange 4818 4830 +0.2% 1.00x (?)
SuffixAnySeqCntRangeLazy 4823 4737 -1.8% 1.02x
SuffixAnySequence 25192 25222 +0.1% 1.00x (?)
SuffixAnySequenceLazy 25112 25256 +0.6% 0.99x (?)
SuffixCountableRange 115 113 -1.7% 1.02x (?)
SuffixCountableRangeLazy 9172 8828 -3.8% 1.04x
SuffixSequence 24953 25088 +0.5% 0.99x
SuffixSequenceLazy 25201 25106 -0.4% 1.00x
SumUsingReduce 172116 175533 +2.0% 0.98x
SumUsingReduceInto 171534 169010 -1.5% 1.01x (?)
SuperChars 217482 210837 -3.1% 1.03x
TwoSum 3997 4026 +0.7% 0.99x
UTF8Decode 30167 30123 -0.1% 1.00x
Walsh 12337 12146 -1.5% 1.02x (?)
WordCountHistogramASCII 48936 47970 -2.0% 1.02x
WordCountHistogramUTF16 105828 103339 -2.4% 1.02x
WordCountUniqueASCII 7994 7932 -0.8% 1.01x
WordCountUniqueUTF16 32807 32054 -2.3% 1.02x (?)
WordSplitASCII 26088 25537 -2.1% 1.02x
WordSplitUTF16 27537 27270 -1.0% 1.01x (?)
XorLoop 23659 23669 +0.0% 1.00x (?)
Hardware Overview
  Model Name: Mac Pro
  Model Identifier: MacPro6,1
  Processor Name: 12-Core Intel Xeon E5
  Processor Speed: 2.7 GHz
  Number of Processors: 1
  Total Number of Cores: 12
  L2 Cache (per Core): 256 KB
  L3 Cache: 30 MB
  Memory: 64 GB

@xwu
Copy link
Collaborator Author

xwu commented Jan 29, 2018

Nice :)

@xwu
Copy link
Collaborator Author

xwu commented Jan 31, 2018

@swift-ci Please smoke test and merge

1 similar comment
@xwu
Copy link
Collaborator Author

xwu commented Jan 31, 2018

@swift-ci Please smoke test and merge

@swift-ci swift-ci merged commit b28c282 into swiftlang:master Jan 31, 2018
@xwu xwu deleted the nunc-est-dividendum branch January 31, 2018 02:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants