Skip to content

[WIP] Runtime: Put ObjC class wrapper unwrapping behind a runtime call. #12732

New issue

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

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

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 6, 2017

Conversation

jckarter
Copy link
Contributor

@jckarter jckarter commented Nov 2, 2017

This is a small code size win, and also gives us some abstraction so that future cooperative ObjC compilers/runtimes might be able to interoperate ObjC class objects with Swift type metadata efficiently than they currently are in the fragile Swift runtime.

While I'm here, I also noticed that swift_getObjCClassMetadata was unnecessarily getting exposed in non-ObjC-interop runtime builds, so I fixed that as well.

[WIP] while performance impact is measured.

@jckarter
Copy link
Contributor Author

jckarter commented Nov 2, 2017

@swift-ci Please test

@jckarter
Copy link
Contributor Author

jckarter commented Nov 2, 2017

@swift-ci Please benchmark

@swift-ci
Copy link
Contributor

swift-ci commented Nov 3, 2017

Build failed
Swift Test OS X Platform
Git Sha - ba5145f48552b573a33a44ade48bc6e5753238e4

@swift-ci
Copy link
Contributor

swift-ci commented Nov 3, 2017

Build comment file:

Optimized (O)

Regression (2)
TEST OLD NEW DELTA SPEEDUP
CaptureProp 3719 4006 +7.7% 0.93x (?)
LazilyFilteredArrayContains 18033 19219 +6.6% 0.94x (?)
Improvement (1)
TEST OLD NEW DELTA SPEEDUP
Chars 596 567 -4.9% 1.05x (?)
No Changes (331)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 2766 2761 -0.2% 1.00x (?)
AnyHashableWithAClass 64941 65102 +0.2% 1.00x (?)
Array2D 1796 1794 -0.1% 1.00x (?)
ArrayAppend 1018 1018 +0.0% 1.00x
ArrayAppendArrayOfInt 565 565 +0.0% 1.00x
ArrayAppendAscii 17865 18189 +1.8% 0.98x (?)
ArrayAppendFromGeneric 564 565 +0.2% 1.00x (?)
ArrayAppendGenericStructs 1136 1135 -0.1% 1.00x (?)
ArrayAppendLatin1 38607 38745 +0.4% 1.00x (?)
ArrayAppendLazyMap 872 870 -0.2% 1.00x (?)
ArrayAppendOptionals 1135 1135 +0.0% 1.00x
ArrayAppendRepeatCol 941 942 +0.1% 1.00x (?)
ArrayAppendReserved 794 794 +0.0% 1.00x
ArrayAppendSequence 939 938 -0.1% 1.00x (?)
ArrayAppendStrings 15695 15615 -0.5% 1.01x (?)
ArrayAppendToFromGeneric 565 565 +0.0% 1.00x
ArrayAppendToGeneric 565 565 +0.0% 1.00x
ArrayAppendUTF16 38554 38755 +0.5% 0.99x
ArrayInClass 60 59 -1.7% 1.02x (?)
ArrayLiteral 0 0 +0.0% 1.00x
ArrayOfGenericPOD 207 207 +0.0% 1.00x
ArrayOfGenericRef 3731 3732 +0.0% 1.00x (?)
ArrayOfPOD 156 156 +0.0% 1.00x
ArrayOfRef 3682 3685 +0.1% 1.00x (?)
ArrayPlusEqualArrayOfInt 565 565 +0.0% 1.00x
ArrayPlusEqualFiveElementCollection 4275 4309 +0.8% 0.99x (?)
ArrayPlusEqualSingleElementCollection 1018 1018 +0.0% 1.00x
ArrayPlusEqualThreeElements 1535 1527 -0.5% 1.01x (?)
ArraySetElement 429 429 +0.0% 1.00x
ArraySubscript 1400 1404 +0.3% 1.00x (?)
ArrayValueProp 5 5 +0.0% 1.00x
ArrayValueProp2 5 5 +0.0% 1.00x
ArrayValueProp3 5 5 +0.0% 1.00x
ArrayValueProp4 5 5 +0.0% 1.00x
BitCount 136 136 +0.0% 1.00x
ByteSwap 109 110 +0.9% 0.99x (?)
CStringLongAscii 4265 4439 +4.1% 0.96x (?)
CStringLongNonAscii 2089 2084 -0.2% 1.00x (?)
CStringShortAscii 4547 4543 -0.1% 1.00x (?)
Calculator 33 33 +0.0% 1.00x
CharIndexing_ascii_unicodeScalars 12675 12677 +0.0% 1.00x (?)
CharIndexing_ascii_unicodeScalars_Backwards 10625 10632 +0.1% 1.00x (?)
CharIndexing_chinese_unicodeScalars 9614 9611 -0.0% 1.00x (?)
CharIndexing_chinese_unicodeScalars_Backwards 8065 8071 +0.1% 1.00x (?)
CharIndexing_japanese_unicodeScalars 15169 15164 -0.0% 1.00x (?)
CharIndexing_japanese_unicodeScalars_Backwards 12707 12707 +0.0% 1.00x
CharIndexing_korean_unicodeScalars 12293 12294 +0.0% 1.00x (?)
CharIndexing_korean_unicodeScalars_Backwards 10307 10313 +0.1% 1.00x (?)
CharIndexing_punctuatedJapanese_unicodeScalars 2331 2327 -0.2% 1.00x (?)
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 1975 1981 +0.3% 1.00x (?)
CharIndexing_punctuated_unicodeScalars 2918 2898 -0.7% 1.01x
CharIndexing_punctuated_unicodeScalars_Backwards 2460 2462 +0.1% 1.00x (?)
CharIndexing_russian_unicodeScalars 10568 10570 +0.0% 1.00x (?)
CharIndexing_russian_unicodeScalars_Backwards 8863 8869 +0.1% 1.00x (?)
CharIndexing_tweet_unicodeScalars 24992 24978 -0.1% 1.00x (?)
CharIndexing_tweet_unicodeScalars_Backwards 20913 20915 +0.0% 1.00x (?)
CharIndexing_utf16_unicodeScalars 76589 76596 +0.0% 1.00x (?)
CharIndexing_utf16_unicodeScalars_Backwards 56990 57009 +0.0% 1.00x (?)
CharIteration_ascii_unicodeScalars 14935 14538 -2.7% 1.03x
CharIteration_ascii_unicodeScalars_Backwards 15633 15633 +0.0% 1.00x
CharIteration_chinese_unicodeScalars 11317 11007 -2.7% 1.03x
CharIteration_chinese_unicodeScalars_Backwards 11832 11838 +0.1% 1.00x (?)
CharIteration_japanese_unicodeScalars 17870 17415 -2.5% 1.03x
CharIteration_japanese_unicodeScalars_Backwards 18721 18719 -0.0% 1.00x (?)
CharIteration_korean_unicodeScalars 14478 14107 -2.6% 1.03x
CharIteration_korean_unicodeScalars_Backwards 15158 15159 +0.0% 1.00x (?)
CharIteration_punctuatedJapanese_unicodeScalars 2707 2646 -2.3% 1.02x
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 2815 2816 +0.0% 1.00x (?)
CharIteration_punctuated_unicodeScalars 3384 3291 -2.7% 1.03x
CharIteration_punctuated_unicodeScalars_Backwards 3528 3528 +0.0% 1.00x
CharIteration_russian_unicodeScalars 12440 12115 -2.6% 1.03x
CharIteration_russian_unicodeScalars_Backwards 13022 13023 +0.0% 1.00x (?)
CharIteration_tweet_unicodeScalars 29413 28668 -2.5% 1.03x
CharIteration_tweet_unicodeScalars_Backwards 30896 30906 +0.0% 1.00x (?)
CharIteration_utf16_unicodeScalars 74463 74267 -0.3% 1.00x (?)
CharIteration_utf16_unicodeScalars_Backwards 92547 92558 +0.0% 1.00x (?)
CharacterLiteralsLarge 5609 5610 +0.0% 1.00x (?)
CharacterLiteralsSmall 378 378 +0.0% 1.00x
ClassArrayGetter 12 12 +0.0% 1.00x
DeadArray 171 171 +0.0% 1.00x
Dictionary 537 525 -2.2% 1.02x
Dictionary2 1727 1720 -0.4% 1.00x (?)
Dictionary2OfObjects 3023 3017 -0.2% 1.00x (?)
Dictionary3 442 443 +0.2% 1.00x (?)
Dictionary3OfObjects 784 786 +0.3% 1.00x (?)
DictionaryBridge 2301 2327 +1.1% 0.99x (?)
DictionaryGroup 257 260 +1.2% 0.99x (?)
DictionaryGroupOfObjects 1694 1697 +0.2% 1.00x (?)
DictionaryLiteral 1397 1396 -0.1% 1.00x (?)
DictionaryOfObjects 2070 2077 +0.3% 1.00x (?)
DictionaryRemove 2300 2306 +0.3% 1.00x (?)
DictionaryRemoveOfObjects 21547 21396 -0.7% 1.01x (?)
DictionarySwap 391 391 +0.0% 1.00x
DictionarySwapOfObjects 6967 6973 +0.1% 1.00x (?)
DropFirstAnyCollection 52 52 +0.0% 1.00x
DropFirstAnyCollectionLazy 72966 73060 +0.1% 1.00x (?)
DropFirstAnySeqCRangeIter 26107 26242 +0.5% 0.99x (?)
DropFirstAnySeqCRangeIterLazy 26107 26232 +0.5% 1.00x (?)
DropFirstAnySeqCntRange 47 47 +0.0% 1.00x
DropFirstAnySeqCntRangeLazy 47 48 +2.1% 0.98x
DropFirstAnySequence 5840 5832 -0.1% 1.00x (?)
DropFirstAnySequenceLazy 5847 5771 -1.3% 1.01x (?)
DropFirstArray 29 29 +0.0% 1.00x
DropFirstArrayLazy 28 28 +0.0% 1.00x
DropFirstCountableRange 17 17 +0.0% 1.00x
DropFirstCountableRangeLazy 17 17 +0.0% 1.00x
DropFirstSequence 1917 1919 +0.1% 1.00x (?)
DropFirstSequenceLazy 1834 1834 +0.0% 1.00x
DropLastAnyCollection 20 20 +0.0% 1.00x
DropLastAnyCollectionLazy 24362 24301 -0.3% 1.00x (?)
DropLastAnySeqCRangeIter 4447 4390 -1.3% 1.01x (?)
DropLastAnySeqCRangeIterLazy 4448 4390 -1.3% 1.01x
DropLastAnySeqCntRange 15 15 +0.0% 1.00x
DropLastAnySeqCntRangeLazy 15 15 +0.0% 1.00x
DropLastAnySequence 6340 6284 -0.9% 1.01x (?)
DropLastAnySequenceLazy 6289 6231 -0.9% 1.01x (?)
DropLastArray 7 7 +0.0% 1.00x
DropLastArrayLazy 7 7 +0.0% 1.00x
DropLastCountableRange 6 6 +0.0% 1.00x
DropLastCountableRangeLazy 6 6 +0.0% 1.00x
DropLastSequence 572 572 +0.0% 1.00x
DropLastSequenceLazy 573 572 -0.2% 1.00x (?)
DropWhileAnyCollection 64 64 +0.0% 1.00x
DropWhileAnyCollectionLazy 85 85 +0.0% 1.00x
DropWhileAnySeqCRangeIter 20525 20785 +1.3% 0.99x (?)
DropWhileAnySeqCRangeIterLazy 84 84 +0.0% 1.00x
DropWhileAnySeqCntRange 60 60 +0.0% 1.00x
DropWhileAnySeqCntRangeLazy 83 83 +0.0% 1.00x
DropWhileAnySequence 5714 5711 -0.1% 1.00x (?)
DropWhileAnySequenceLazy 1823 1824 +0.1% 1.00x (?)
DropWhileArray 40 40 +0.0% 1.00x
DropWhileArrayLazy 77 77 +0.0% 1.00x
DropWhileCountableRange 18 18 +0.0% 1.00x
DropWhileCountableRangeLazy 66 66 +0.0% 1.00x
DropWhileSequence 1522 1497 -1.6% 1.02x (?)
DropWhileSequenceLazy 44 44 +0.0% 1.00x
EqualStringSubstring 367 370 +0.8% 0.99x (?)
EqualSubstringString 367 367 +0.0% 1.00x
EqualSubstringSubstring 367 369 +0.5% 0.99x (?)
EqualSubstringSubstringGenericEquatable 370 371 +0.3% 1.00x (?)
ErrorHandling 1951 1954 +0.2% 1.00x (?)
ExclusivityGlobal 2 2 +0.0% 1.00x
ExclusivityInMatSet 17 17 +0.0% 1.00x
ExclusivityIndependent 2 2 +0.0% 1.00x
FilterEvenUsingReduce 1232 1232 +0.0% 1.00x
FilterEvenUsingReduceInto 138 139 +0.7% 0.99x (?)
FrequenciesUsingReduce 7034 7056 +0.3% 1.00x (?)
FrequenciesUsingReduceInto 3919 3924 +0.1% 1.00x (?)
Hanoi 3436 3384 -1.5% 1.02x (?)
HashTest 1619 1621 +0.1% 1.00x (?)
Histogram 263 263 +0.0% 1.00x
Integrate 235 235 +0.0% 1.00x
IterateData 1325 1300 -1.9% 1.02x
Join 360 360 +0.0% 1.00x
LazilyFilteredArrays 62806 62780 -0.0% 1.00x (?)
LazilyFilteredRange 3404 3404 +0.0% 1.00x
LessSubstringSubstring 367 370 +0.8% 0.99x
LessSubstringSubstringGenericComparable 367 369 +0.5% 0.99x (?)
LinkedList 6593 6503 -1.4% 1.01x (?)
MapReduce 341 340 -0.3% 1.00x (?)
MapReduceAnyCollection 370 370 +0.0% 1.00x
MapReduceAnyCollectionShort 1976 1985 +0.5% 1.00x (?)
MapReduceClass 2900 2889 -0.4% 1.00x (?)
MapReduceClassShort 4278 4280 +0.0% 1.00x (?)
MapReduceLazyCollection 12 12 +0.0% 1.00x
MapReduceLazyCollectionShort 4 4 +0.0% 1.00x
MapReduceLazySequence 85 85 +0.0% 1.00x
MapReduceSequence 419 418 -0.2% 1.00x (?)
MapReduceShort 1879 1866 -0.7% 1.01x
MapReduceShortString 20 20 +0.0% 1.00x
MapReduceString 101 102 +1.0% 0.99x
Memset 221 221 +0.0% 1.00x
MonteCarloE 9720 9712 -0.1% 1.00x (?)
MonteCarloPi 41512 41515 +0.0% 1.00x (?)
NSDictionaryCastToSwift 4994 4988 -0.1% 1.00x (?)
NSError 272 273 +0.4% 1.00x (?)
NSStringConversion 324 339 +4.6% 0.96x
NopDeinit 21587 21603 +0.1% 1.00x (?)
ObjectAllocation 168 167 -0.6% 1.01x (?)
ObjectiveCBridgeFromNSArrayAnyObject 20017 20129 +0.6% 0.99x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 3310 3295 -0.5% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 36641 36433 -0.6% 1.01x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 32030 31692 -1.1% 1.01x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 109716 109375 -0.3% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 4741 4744 +0.1% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 83281 82678 -0.7% 1.01x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 92068 94755 +2.9% 0.97x (?)
ObjectiveCBridgeFromNSSetAnyObject 60040 59978 -0.1% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 4043 4080 +0.9% 0.99x (?)
ObjectiveCBridgeFromNSSetAnyObjectToString 62143 61184 -1.5% 1.02x (?)
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 64533 63697 -1.3% 1.01x (?)
ObjectiveCBridgeFromNSString 932 932 +0.0% 1.00x
ObjectiveCBridgeFromNSStringForced 1766 1729 -2.1% 1.02x (?)
ObjectiveCBridgeStubDataAppend 3680 3593 -2.4% 1.02x (?)
ObjectiveCBridgeStubDateAccess 171 171 +0.0% 1.00x
ObjectiveCBridgeStubDateMutation 257 257 +0.0% 1.00x
ObjectiveCBridgeStubFromArrayOfNSString 23902 24035 +0.6% 0.99x (?)
ObjectiveCBridgeStubFromNSDate 3617 3588 -0.8% 1.01x (?)
ObjectiveCBridgeStubFromNSDateRef 3978 3979 +0.0% 1.00x (?)
ObjectiveCBridgeStubFromNSString 515 508 -1.4% 1.01x (?)
ObjectiveCBridgeStubFromNSStringRef 140 140 +0.0% 1.00x
ObjectiveCBridgeStubNSDataAppend 2263 2272 +0.4% 1.00x (?)
ObjectiveCBridgeStubNSDateMutationRef 12148 12086 -0.5% 1.01x (?)
ObjectiveCBridgeStubNSDateRefAccess 322 321 -0.3% 1.00x (?)
ObjectiveCBridgeStubToArrayOfNSString 26995 27244 +0.9% 0.99x (?)
ObjectiveCBridgeStubToNSDate 13255 12788 -3.5% 1.04x (?)
ObjectiveCBridgeStubToNSDateRef 3047 3075 +0.9% 0.99x (?)
ObjectiveCBridgeStubToNSString 1403 1416 +0.9% 0.99x (?)
ObjectiveCBridgeStubToNSStringRef 110 110 +0.0% 1.00x
ObjectiveCBridgeStubURLAppendPath 200406 202802 +1.2% 0.99x (?)
ObjectiveCBridgeStubURLAppendPathRef 202489 202517 +0.0% 1.00x (?)
ObjectiveCBridgeToNSArray 27593 27436 -0.6% 1.01x (?)
ObjectiveCBridgeToNSDictionary 43015 43218 +0.5% 1.00x (?)
ObjectiveCBridgeToNSSet 37426 37321 -0.3% 1.00x (?)
ObjectiveCBridgeToNSString 1201 1202 +0.1% 1.00x (?)
ObserverClosure 2188 2179 -0.4% 1.00x (?)
ObserverForwarderStruct 856 869 +1.5% 0.99x (?)
ObserverPartiallyAppliedMethod 3586 3573 -0.4% 1.00x (?)
ObserverUnappliedMethod 2342 2334 -0.3% 1.00x (?)
OpenClose 3 3 +0.0% 1.00x
Phonebook 5892 5885 -0.1% 1.00x (?)
PolymorphicCalls 16 16 +0.0% 1.00x
PopFrontArray 1213 1215 +0.2% 1.00x (?)
PopFrontArrayGeneric 1211 1211 +0.0% 1.00x
PopFrontUnsafePointer 5749 5748 -0.0% 1.00x (?)
PrefixAnyCollection 52 52 +0.0% 1.00x
PrefixAnyCollectionLazy 72995 72944 -0.1% 1.00x (?)
PrefixAnySeqCRangeIter 20545 20699 +0.7% 0.99x (?)
PrefixAnySeqCRangeIterLazy 20545 20701 +0.8% 0.99x (?)
PrefixAnySeqCntRange 48 48 +0.0% 1.00x
PrefixAnySeqCntRangeLazy 48 48 +0.0% 1.00x
PrefixAnySequence 5048 5014 -0.7% 1.01x (?)
PrefixAnySequenceLazy 5064 5009 -1.1% 1.01x (?)
PrefixArray 29 29 +0.0% 1.00x
PrefixArrayLazy 28 28 +0.0% 1.00x
PrefixCountableRange 17 17 +0.0% 1.00x
PrefixCountableRangeLazy 17 17 +0.0% 1.00x
PrefixSequence 1430 1430 +0.0% 1.00x
PrefixSequenceLazy 1377 1377 +0.0% 1.00x
PrefixWhileAnyCollection 87 87 +0.0% 1.00x
PrefixWhileAnyCollectionLazy 62 62 +0.0% 1.00x
PrefixWhileAnySeqCRangeIter 12164 11998 -1.4% 1.01x
PrefixWhileAnySeqCRangeIterLazy 62 62 +0.0% 1.00x
PrefixWhileAnySeqCntRange 83 83 +0.0% 1.00x
PrefixWhileAnySeqCntRangeLazy 62 62 +0.0% 1.00x
PrefixWhileAnySequence 13517 13351 -1.2% 1.01x (?)
PrefixWhileAnySequenceLazy 1355 1355 +0.0% 1.00x
PrefixWhileArray 64 64 +0.0% 1.00x
PrefixWhileArrayLazy 35 35 +0.0% 1.00x
PrefixWhileCountableRange 28 28 +0.0% 1.00x
PrefixWhileCountableRangeLazy 17 17 +0.0% 1.00x
PrefixWhileSequence 316 315 -0.3% 1.00x (?)
PrefixWhileSequenceLazy 26 26 +0.0% 1.00x
Prims 707 709 +0.3% 1.00x (?)
PrimsSplit 709 709 +0.0% 1.00x
ProtocolDispatch 2859 2859 +0.0% 1.00x
ProtocolDispatch2 128 128 +0.0% 1.00x
RC4 161 161 +0.0% 1.00x
RGBHistogram 2060 2074 +0.7% 0.99x (?)
RGBHistogramOfObjects 22021 22040 +0.1% 1.00x (?)
RangeAssignment 315 316 +0.3% 1.00x (?)
RangeIterationSigned 127 127 +0.0% 1.00x
RangeIterationSigned64 143 143 +0.0% 1.00x
RangeIterationUnsigned 143 143 +0.0% 1.00x
RecursiveOwnedParameter 2166 2164 -0.1% 1.00x (?)
ReversedArray 42 42 +0.0% 1.00x
ReversedBidirectional 27433 27401 -0.1% 1.00x (?)
ReversedDictionary 91 91 +0.0% 1.00x
SetExclusiveOr 2647 2648 +0.0% 1.00x (?)
SetExclusiveOr_OfObjects 7684 7891 +2.7% 0.97x (?)
SetIntersect 254 255 +0.4% 1.00x (?)
SetIntersect_OfObjects 1612 1612 +0.0% 1.00x
SetIsSubsetOf 277 277 +0.0% 1.00x
SetIsSubsetOf_OfObjects 346 346 +0.0% 1.00x
SetUnion 2391 2377 -0.6% 1.01x (?)
SetUnion_OfObjects 6383 6474 +1.4% 0.99x (?)
SevenBoom 1392 1398 +0.4% 1.00x (?)
Sim2DArray 323 323 +0.0% 1.00x
SortLargeExistentials 8639 8611 -0.3% 1.00x (?)
SortLettersInPlace 1075 1076 +0.1% 1.00x (?)
SortSortedStrings 842 851 +1.1% 0.99x
SortStrings 1597 1613 +1.0% 0.99x
SortStringsUnicode 7731 7748 +0.2% 1.00x (?)
StackPromo 21168 21174 +0.0% 1.00x (?)
StaticArray 5 5 +0.0% 1.00x
StrComplexWalk 1554 1554 +0.0% 1.00x
StrToInt 1767 1762 -0.3% 1.00x (?)
StringAdder 3308 3307 -0.0% 1.00x (?)
StringBuilder 944 948 +0.4% 1.00x (?)
StringBuilderLong 873 868 -0.6% 1.01x (?)
StringEdits 161679 161433 -0.2% 1.00x (?)
StringEnumRawValueInitialization 754 758 +0.5% 0.99x (?)
StringEqualPointerComparison 343 343 +0.0% 1.00x
StringFromLongWholeSubstring 166 168 +1.2% 0.99x
StringFromLongWholeSubstringGeneric 82 82 +0.0% 1.00x
StringHasPrefix 8 8 +0.0% 1.00x
StringHasPrefixUnicode 13818 13643 -1.3% 1.01x
StringHasSuffix 8 8 +0.0% 1.00x
StringHasSuffixUnicode 58319 58094 -0.4% 1.00x
StringInterpolation 10124 10137 +0.1% 1.00x (?)
StringMatch 7371 7388 +0.2% 1.00x (?)
StringUTF16Builder 1772 1776 +0.2% 1.00x (?)
StringWalk 1410 1410 +0.0% 1.00x
StringWithCString 55028 56980 +3.5% 0.97x (?)
SubstringComparable 1531 1555 +1.6% 0.98x
SubstringEqualString 1364 1361 -0.2% 1.00x (?)
SubstringEquatable 3504 3532 +0.8% 0.99x (?)
SubstringFromLongString 10 10 +0.0% 1.00x
SubstringFromLongStringGeneric 70 70 +0.0% 1.00x
SuffixAnyCollection 20 20 +0.0% 1.00x
SuffixAnyCollectionLazy 24352 24337 -0.1% 1.00x (?)
SuffixAnySeqCRangeIter 4739 4697 -0.9% 1.01x
SuffixAnySeqCRangeIterLazy 4739 4698 -0.9% 1.01x (?)
SuffixAnySeqCntRange 14 14 +0.0% 1.00x
SuffixAnySeqCntRangeLazy 14 14 +0.0% 1.00x
SuffixAnySequence 6324 6268 -0.9% 1.01x
SuffixAnySequenceLazy 6317 6266 -0.8% 1.01x (?)
SuffixArray 7 7 +0.0% 1.00x
SuffixArrayLazy 7 7 +0.0% 1.00x
SuffixCountableRange 6 6 +0.0% 1.00x
SuffixCountableRangeLazy 6 6 +0.0% 1.00x
SuffixSequence 4390 4349 -0.9% 1.01x
SuffixSequenceLazy 4370 4331 -0.9% 1.01x
SumUsingReduce 92 92 +0.0% 1.00x
SumUsingReduceInto 91 91 +0.0% 1.00x
SuperChars 78666 78809 +0.2% 1.00x (?)
TwoSum 887 886 -0.1% 1.00x (?)
TypeFlood 0 0 +0.0% 1.00x
UTF8Decode 239 239 +0.0% 1.00x
Walsh 375 375 +0.0% 1.00x
XorLoop 326 326 +0.0% 1.00x

Unoptimized (Onone)

Regression (2)
TEST OLD NEW DELTA SPEEDUP
ArrayOfPOD 671 747 +11.3% 0.90x
ArrayOfGenericPOD 1218 1302 +6.9% 0.94x
Improvement (2)
TEST OLD NEW DELTA SPEEDUP
ObjectiveCBridgeStubDateMutation 721 608 -15.7% 1.19x
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 73380 66973 -8.7% 1.10x (?)
No Changes (330)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 4734 4750 +0.3% 1.00x (?)
AnyHashableWithAClass 80960 81200 +0.3% 1.00x (?)
Array2D 620234 605266 -2.4% 1.02x
ArrayAppend 4495 4393 -2.3% 1.02x
ArrayAppendArrayOfInt 621 619 -0.3% 1.00x (?)
ArrayAppendAscii 47032 47192 +0.3% 1.00x (?)
ArrayAppendFromGeneric 621 621 +0.0% 1.00x
ArrayAppendGenericStructs 1195 1194 -0.1% 1.00x (?)
ArrayAppendLatin1 70402 68662 -2.5% 1.03x
ArrayAppendLazyMap 210278 208615 -0.8% 1.01x
ArrayAppendOptionals 1199 1196 -0.3% 1.00x (?)
ArrayAppendRepeatCol 214814 216667 +0.9% 0.99x
ArrayAppendReserved 4162 4070 -2.2% 1.02x
ArrayAppendSequence 71637 71902 +0.4% 1.00x
ArrayAppendStrings 15871 15816 -0.3% 1.00x
ArrayAppendToFromGeneric 622 621 -0.2% 1.00x (?)
ArrayAppendToGeneric 622 622 +0.0% 1.00x
ArrayAppendUTF16 70701 68606 -3.0% 1.03x
ArrayInClass 6212 6235 +0.4% 1.00x (?)
ArrayLiteral 1674 1659 -0.9% 1.01x (?)
ArrayOfGenericRef 9471 9434 -0.4% 1.00x (?)
ArrayOfRef 8743 8690 -0.6% 1.01x (?)
ArrayPlusEqualArrayOfInt 622 621 -0.2% 1.00x (?)
ArrayPlusEqualFiveElementCollection 289920 295728 +2.0% 0.98x (?)
ArrayPlusEqualSingleElementCollection 280330 280509 +0.1% 1.00x (?)
ArrayPlusEqualThreeElements 10142 10248 +1.0% 0.99x (?)
ArraySetElement 4519 4519 +0.0% 1.00x
ArraySubscript 80398 80544 +0.2% 1.00x (?)
ArrayValueProp 3451 3430 -0.6% 1.01x (?)
ArrayValueProp2 17482 17388 -0.5% 1.01x (?)
ArrayValueProp3 4008 4015 +0.2% 1.00x (?)
ArrayValueProp4 4010 4120 +2.7% 0.97x (?)
BitCount 1385 1434 +3.5% 0.97x
ByteSwap 3884 3911 +0.7% 0.99x (?)
CStringLongAscii 4481 4359 -2.7% 1.03x
CStringLongNonAscii 2291 2218 -3.2% 1.03x
CStringShortAscii 8257 8256 -0.0% 1.00x (?)
Calculator 1049 1064 +1.4% 0.99x
CaptureProp 112648 112154 -0.4% 1.00x
CharIndexing_ascii_unicodeScalars 442636 449988 +1.7% 0.98x (?)
CharIndexing_ascii_unicodeScalars_Backwards 479405 482735 +0.7% 0.99x (?)
CharIndexing_chinese_unicodeScalars 334568 337279 +0.8% 0.99x (?)
CharIndexing_chinese_unicodeScalars_Backwards 360413 364288 +1.1% 0.99x (?)
CharIndexing_japanese_unicodeScalars 530811 536735 +1.1% 0.99x (?)
CharIndexing_japanese_unicodeScalars_Backwards 569327 577130 +1.4% 0.99x (?)
CharIndexing_korean_unicodeScalars 433127 433025 -0.0% 1.00x (?)
CharIndexing_korean_unicodeScalars_Backwards 464127 467562 +0.7% 0.99x (?)
CharIndexing_punctuatedJapanese_unicodeScalars 76442 76795 +0.5% 1.00x (?)
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 81474 83001 +1.9% 0.98x (?)
CharIndexing_punctuated_unicodeScalars 96684 97273 +0.6% 0.99x (?)
CharIndexing_punctuated_unicodeScalars_Backwards 103702 105386 +1.6% 0.98x
CharIndexing_russian_unicodeScalars 368899 374483 +1.5% 0.99x
CharIndexing_russian_unicodeScalars_Backwards 399920 400279 +0.1% 1.00x (?)
CharIndexing_tweet_unicodeScalars 882328 887282 +0.6% 0.99x (?)
CharIndexing_tweet_unicodeScalars_Backwards 943544 956892 +1.4% 0.99x (?)
CharIndexing_utf16_unicodeScalars 502987 502252 -0.1% 1.00x (?)
CharIndexing_utf16_unicodeScalars_Backwards 536492 538796 +0.4% 1.00x (?)
CharIteration_ascii_unicodeScalars 173288 173111 -0.1% 1.00x (?)
CharIteration_ascii_unicodeScalars_Backwards 295206 297845 +0.9% 0.99x (?)
CharIteration_chinese_unicodeScalars 130975 130990 +0.0% 1.00x (?)
CharIteration_chinese_unicodeScalars_Backwards 223403 224701 +0.6% 0.99x (?)
CharIteration_japanese_unicodeScalars 206829 206614 -0.1% 1.00x (?)
CharIteration_japanese_unicodeScalars_Backwards 354244 356874 +0.7% 0.99x (?)
CharIteration_korean_unicodeScalars 168307 167659 -0.4% 1.00x
CharIteration_korean_unicodeScalars_Backwards 286481 288036 +0.5% 0.99x (?)
CharIteration_punctuatedJapanese_unicodeScalars 30608 30581 -0.1% 1.00x (?)
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 51252 51337 +0.2% 1.00x (?)
CharIteration_punctuated_unicodeScalars 38544 38423 -0.3% 1.00x (?)
CharIteration_punctuated_unicodeScalars_Backwards 64965 65799 +1.3% 0.99x
CharIteration_russian_unicodeScalars 144169 144272 +0.1% 1.00x
CharIteration_russian_unicodeScalars_Backwards 245651 247149 +0.6% 0.99x (?)
CharIteration_tweet_unicodeScalars 362828 358027 -1.3% 1.01x
CharIteration_tweet_unicodeScalars_Backwards 604383 605115 +0.1% 1.00x (?)
CharIteration_utf16_unicodeScalars 192147 191407 -0.4% 1.00x
CharIteration_utf16_unicodeScalars_Backwards 374548 374236 -0.1% 1.00x (?)
CharacterLiteralsLarge 5857 5831 -0.4% 1.00x
CharacterLiteralsSmall 652 663 +1.7% 0.98x (?)
Chars 47402 47147 -0.5% 1.01x
ClassArrayGetter 986 985 -0.1% 1.00x (?)
DeadArray 106351 106548 +0.2% 1.00x (?)
Dictionary 2958 2940 -0.6% 1.01x (?)
Dictionary2 3155 3159 +0.1% 1.00x (?)
Dictionary2OfObjects 5711 5744 +0.6% 0.99x (?)
Dictionary3 1285 1277 -0.6% 1.01x (?)
Dictionary3OfObjects 2199 2193 -0.3% 1.00x (?)
DictionaryBridge 2391 2384 -0.3% 1.00x (?)
DictionaryGroup 5063 5087 +0.5% 1.00x (?)
DictionaryGroupOfObjects 7727 7703 -0.3% 1.00x (?)
DictionaryLiteral 8384 8309 -0.9% 1.01x (?)
DictionaryOfObjects 6257 6328 +1.1% 0.99x (?)
DictionaryRemove 20310 20199 -0.5% 1.01x
DictionaryRemoveOfObjects 56291 57548 +2.2% 0.98x
DictionarySwap 4868 4806 -1.3% 1.01x
DictionarySwapOfObjects 21681 21805 +0.6% 0.99x (?)
DropFirstAnyCollection 19326 19752 +2.2% 0.98x (?)
DropFirstAnyCollectionLazy 131350 131496 +0.1% 1.00x (?)
DropFirstAnySeqCRangeIter 28554 28717 +0.6% 0.99x
DropFirstAnySeqCRangeIterLazy 28522 28667 +0.5% 0.99x
DropFirstAnySeqCntRange 19140 19539 +2.1% 0.98x
DropFirstAnySeqCntRangeLazy 19099 19211 +0.6% 0.99x (?)
DropFirstAnySequence 14474 14419 -0.4% 1.00x
DropFirstAnySequenceLazy 14337 14326 -0.1% 1.00x
DropFirstArray 5803 5842 +0.7% 0.99x (?)
DropFirstArrayLazy 42341 42188 -0.4% 1.00x (?)
DropFirstCountableRange 443 443 +0.0% 1.00x
DropFirstCountableRangeLazy 38096 38295 +0.5% 0.99x (?)
DropFirstSequence 13275 13298 +0.2% 1.00x
DropFirstSequenceLazy 13130 13160 +0.2% 1.00x
DropLastAnyCollection 6458 6578 +1.9% 0.98x (?)
DropLastAnyCollectionLazy 44117 44656 +1.2% 0.99x (?)
DropLastAnySeqCRangeIter 45010 45033 +0.1% 1.00x (?)
DropLastAnySeqCRangeIterLazy 44295 44420 +0.3% 1.00x
DropLastAnySeqCntRange 6459 6614 +2.4% 0.98x (?)
DropLastAnySeqCntRangeLazy 6371 6408 +0.6% 0.99x
DropLastAnySequence 31188 30978 -0.7% 1.01x
DropLastAnySequenceLazy 31196 30984 -0.7% 1.01x
DropLastArray 1934 1952 +0.9% 0.99x
DropLastArrayLazy 14123 14068 -0.4% 1.00x
DropLastCountableRange 153 153 +0.0% 1.00x
DropLastCountableRangeLazy 12738 12772 +0.3% 1.00x (?)
DropLastSequence 30874 30645 -0.7% 1.01x
DropLastSequenceLazy 30855 30592 -0.9% 1.01x
DropWhileAnyCollection 24948 25106 +0.6% 0.99x (?)
DropWhileAnyCollectionLazy 26829 27050 +0.8% 0.99x (?)
DropWhileAnySeqCRangeIter 29924 30182 +0.9% 0.99x
DropWhileAnySeqCRangeIterLazy 27133 27262 +0.5% 1.00x
DropWhileAnySeqCntRange 24745 24956 +0.9% 0.99x
DropWhileAnySeqCntRangeLazy 26854 27055 +0.7% 0.99x (?)
DropWhileAnySequence 15905 15840 -0.4% 1.00x (?)
DropWhileAnySequenceLazy 13413 13397 -0.1% 1.00x (?)
DropWhileArray 9396 9356 -0.4% 1.00x
DropWhileArrayLazy 16312 16168 -0.9% 1.01x
DropWhileCountableRange 6239 6284 +0.7% 0.99x
DropWhileCountableRangeLazy 25852 26027 +0.7% 0.99x
DropWhileSequence 14739 14703 -0.2% 1.00x (?)
DropWhileSequenceLazy 12140 12030 -0.9% 1.01x
EqualStringSubstring 644 645 +0.2% 1.00x (?)
EqualSubstringString 639 642 +0.5% 1.00x (?)
EqualSubstringSubstring 747 748 +0.1% 1.00x (?)
EqualSubstringSubstringGenericEquatable 400 403 +0.7% 0.99x (?)
ErrorHandling 6467 6421 -0.7% 1.01x (?)
ExclusivityGlobal 167 173 +3.6% 0.97x
ExclusivityInMatSet 289 294 +1.7% 0.98x (?)
ExclusivityIndependent 120 120 +0.0% 1.00x
FilterEvenUsingReduce 4003 4012 +0.2% 1.00x (?)
FilterEvenUsingReduceInto 2341 2325 -0.7% 1.01x (?)
FrequenciesUsingReduce 15143 15162 +0.1% 1.00x (?)
FrequenciesUsingReduceInto 8236 8248 +0.1% 1.00x (?)
Hanoi 19305 19096 -1.1% 1.01x
HashTest 16546 16338 -1.3% 1.01x
Histogram 7864 7897 +0.4% 1.00x (?)
Integrate 637 638 +0.2% 1.00x
IterateData 12855 12841 -0.1% 1.00x (?)
Join 1429 1437 +0.6% 0.99x
LazilyFilteredArrayContains 927502 923246 -0.5% 1.00x
LazilyFilteredArrays 1630099 1628531 -0.1% 1.00x (?)
LazilyFilteredRange 662258 668498 +0.9% 0.99x (?)
LessSubstringSubstring 750 750 +0.0% 1.00x
LessSubstringSubstringGenericComparable 416 420 +1.0% 0.99x (?)
LinkedList 38141 38119 -0.1% 1.00x (?)
MapReduce 36754 36220 -1.5% 1.01x
MapReduceAnyCollection 37008 36429 -1.6% 1.02x
MapReduceAnyCollectionShort 48929 48188 -1.5% 1.02x
MapReduceClass 41248 41054 -0.5% 1.00x (?)
MapReduceClassShort 51609 51437 -0.3% 1.00x (?)
MapReduceLazyCollection 32218 31905 -1.0% 1.01x (?)
MapReduceLazyCollectionShort 42148 42135 -0.0% 1.00x (?)
MapReduceLazySequence 26913 26565 -1.3% 1.01x
MapReduceSequence 42058 41998 -0.1% 1.00x (?)
MapReduceShort 48132 47723 -0.8% 1.01x (?)
MapReduceShortString 273 269 -1.5% 1.01x (?)
MapReduceString 2543 2526 -0.7% 1.01x
Memset 44603 44605 +0.0% 1.00x (?)
MonteCarloE 890756 902957 +1.4% 0.99x
MonteCarloPi 3839262 3867695 +0.7% 0.99x
NSDictionaryCastToSwift 5966 6020 +0.9% 0.99x (?)
NSError 687 687 +0.0% 1.00x
NSStringConversion 359 373 +3.9% 0.96x
NopDeinit 162941 161439 -0.9% 1.01x (?)
ObjectAllocation 1388 1358 -2.2% 1.02x (?)
ObjectiveCBridgeFromNSArrayAnyObject 22338 22361 +0.1% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 6622 6519 -1.6% 1.02x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 37865 38126 +0.7% 0.99x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 33607 33368 -0.7% 1.01x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 112857 112017 -0.7% 1.01x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 6989 7319 +4.7% 0.95x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 86971 89062 +2.4% 0.98x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 97360 97559 +0.2% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObject 63535 63607 +0.1% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 7009 7025 +0.2% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectToString 67204 66835 -0.5% 1.01x (?)
ObjectiveCBridgeFromNSString 3479 3470 -0.3% 1.00x (?)
ObjectiveCBridgeFromNSStringForced 2179 2145 -1.6% 1.02x (?)
ObjectiveCBridgeStubDataAppend 4391 4342 -1.1% 1.01x (?)
ObjectiveCBridgeStubDateAccess 1161 1161 +0.0% 1.00x
ObjectiveCBridgeStubFromArrayOfNSString 24301 24041 -1.1% 1.01x (?)
ObjectiveCBridgeStubFromNSDate 3918 4089 +4.4% 0.96x
ObjectiveCBridgeStubFromNSDateRef 4392 4376 -0.4% 1.00x (?)
ObjectiveCBridgeStubFromNSString 570 554 -2.8% 1.03x
ObjectiveCBridgeStubFromNSStringRef 185 186 +0.5% 0.99x (?)
ObjectiveCBridgeStubNSDataAppend 2779 2814 +1.3% 0.99x (?)
ObjectiveCBridgeStubNSDateMutationRef 15488 15009 -3.1% 1.03x (?)
ObjectiveCBridgeStubNSDateRefAccess 1339 1344 +0.4% 1.00x
ObjectiveCBridgeStubToArrayOfNSString 27455 27535 +0.3% 1.00x (?)
ObjectiveCBridgeStubToNSDate 14422 14621 +1.4% 0.99x (?)
ObjectiveCBridgeStubToNSDateRef 3316 3356 +1.2% 0.99x (?)
ObjectiveCBridgeStubToNSString 1472 1478 +0.4% 1.00x (?)
ObjectiveCBridgeStubToNSStringRef 157 157 +0.0% 1.00x
ObjectiveCBridgeStubURLAppendPath 204141 205523 +0.7% 0.99x (?)
ObjectiveCBridgeStubURLAppendPathRef 208080 208956 +0.4% 1.00x (?)
ObjectiveCBridgeToNSArray 27835 28223 +1.4% 0.99x (?)
ObjectiveCBridgeToNSDictionary 43991 44573 +1.3% 0.99x (?)
ObjectiveCBridgeToNSSet 38676 38543 -0.3% 1.00x (?)
ObjectiveCBridgeToNSString 1249 1254 +0.4% 1.00x (?)
ObserverClosure 6715 6709 -0.1% 1.00x (?)
ObserverForwarderStruct 4938 5050 +2.3% 0.98x (?)
ObserverPartiallyAppliedMethod 8109 8118 +0.1% 1.00x (?)
ObserverUnappliedMethod 8292 8277 -0.2% 1.00x (?)
OpenClose 374 373 -0.3% 1.00x
Phonebook 22479 22995 +2.3% 0.98x
PolymorphicCalls 4938 4911 -0.5% 1.01x (?)
PopFrontArray 9719 9667 -0.5% 1.01x (?)
PopFrontArrayGeneric 8773 8712 -0.7% 1.01x
PopFrontUnsafePointer 7360 7378 +0.2% 1.00x
PrefixAnyCollection 19284 19720 +2.3% 0.98x (?)
PrefixAnyCollectionLazy 133695 131560 -1.6% 1.02x (?)
PrefixAnySeqCRangeIter 22640 22709 +0.3% 1.00x (?)
PrefixAnySeqCRangeIterLazy 22652 22697 +0.2% 1.00x
PrefixAnySeqCntRange 19110 19648 +2.8% 0.97x (?)
PrefixAnySeqCntRangeLazy 19108 19209 +0.5% 0.99x
PrefixAnySequence 11883 11844 -0.3% 1.00x
PrefixAnySequenceLazy 11667 11662 -0.0% 1.00x (?)
PrefixArray 5811 5837 +0.4% 1.00x
PrefixArrayLazy 42342 42189 -0.4% 1.00x
PrefixCountableRange 442 442 +0.0% 1.00x
PrefixCountableRangeLazy 38130 38278 +0.4% 1.00x (?)
PrefixSequence 10695 10723 +0.3% 1.00x
PrefixSequenceLazy 10630 10533 -0.9% 1.01x (?)
PrefixWhileAnyCollection 36523 36736 +0.6% 0.99x (?)
PrefixWhileAnyCollectionLazy 22152 22108 -0.2% 1.00x (?)
PrefixWhileAnySeqCRangeIter 40449 40579 +0.3% 1.00x (?)
PrefixWhileAnySeqCRangeIterLazy 22221 22248 +0.1% 1.00x (?)
PrefixWhileAnySeqCntRange 36450 36558 +0.3% 1.00x (?)
PrefixWhileAnySeqCntRangeLazy 22021 22144 +0.6% 0.99x
PrefixWhileAnySequence 30514 30290 -0.7% 1.01x
PrefixWhileAnySequenceLazy 12274 12280 +0.0% 1.00x (?)
PrefixWhileArray 16404 16246 -1.0% 1.01x
PrefixWhileArrayLazy 14245 14269 +0.2% 1.00x (?)
PrefixWhileCountableRange 17824 17822 -0.0% 1.00x (?)
PrefixWhileCountableRangeLazy 21462 21365 -0.5% 1.00x (?)
PrefixWhileSequence 29256 29065 -0.7% 1.01x
PrefixWhileSequenceLazy 11016 11020 +0.0% 1.00x (?)
Prims 9926 9797 -1.3% 1.01x (?)
PrimsSplit 9889 9757 -1.3% 1.01x
ProtocolDispatch 7150 7150 +0.0% 1.00x
ProtocolDispatch2 483 482 -0.2% 1.00x (?)
RC4 18073 17706 -2.0% 1.02x
RGBHistogram 30683 30737 +0.2% 1.00x (?)
RGBHistogramOfObjects 98506 98225 -0.3% 1.00x (?)
RangeAssignment 5450 5462 +0.2% 1.00x (?)
RangeIterationSigned 17253 17202 -0.3% 1.00x (?)
RangeIterationSigned64 48958 49009 +0.1% 1.00x (?)
RangeIterationUnsigned 44772 44556 -0.5% 1.00x (?)
RecursiveOwnedParameter 10496 10429 -0.6% 1.01x
ReversedArray 42984 42956 -0.1% 1.00x (?)
ReversedBidirectional 70990 71015 +0.0% 1.00x (?)
ReversedDictionary 27652 27367 -1.0% 1.01x
SetExclusiveOr 17445 17415 -0.2% 1.00x (?)
SetExclusiveOr_OfObjects 44005 44171 +0.4% 1.00x (?)
SetIntersect 7838 7860 +0.3% 1.00x
SetIntersect_OfObjects 10737 10814 +0.7% 0.99x
SetIsSubsetOf 1305 1274 -2.4% 1.02x
SetIsSubsetOf_OfObjects 1421 1393 -2.0% 1.02x (?)
SetUnion 11182 11190 +0.1% 1.00x (?)
SetUnion_OfObjects 31744 31716 -0.1% 1.00x (?)
SevenBoom 1555 1490 -4.2% 1.04x (?)
Sim2DArray 46514 46275 -0.5% 1.01x
SortLargeExistentials 16768 16849 +0.5% 1.00x (?)
SortLettersInPlace 2918 2900 -0.6% 1.01x (?)
SortSortedStrings 1380 1375 -0.4% 1.00x
SortStrings 2540 2509 -1.2% 1.01x (?)
SortStringsUnicode 8697 8820 +1.4% 0.99x (?)
StackPromo 94717 94301 -0.4% 1.00x (?)
StaticArray 4375 4306 -1.6% 1.02x
StrComplexWalk 6587 6592 +0.1% 1.00x (?)
StrToInt 93802 93589 -0.2% 1.00x (?)
StringAdder 3608 3596 -0.3% 1.00x (?)
StringBuilder 6839 6818 -0.3% 1.00x (?)
StringBuilderLong 1029 1045 +1.6% 0.98x (?)
StringEdits 363240 359857 -0.9% 1.01x (?)
StringEnumRawValueInitialization 12004 11965 -0.3% 1.00x (?)
StringEqualPointerComparison 2462 2514 +2.1% 0.98x
StringFromLongWholeSubstring 210 210 +0.0% 1.00x
StringFromLongWholeSubstringGeneric 206 209 +1.5% 0.99x (?)
StringHasPrefix 1773 1816 +2.4% 0.98x
StringHasPrefixUnicode 15962 15983 +0.1% 1.00x (?)
StringHasSuffix 1903 1960 +3.0% 0.97x
StringHasSuffixUnicode 60293 60201 -0.2% 1.00x (?)
StringInterpolation 12931 12871 -0.5% 1.00x (?)
StringMatch 33204 33151 -0.2% 1.00x (?)
StringUTF16Builder 7617 7665 +0.6% 0.99x (?)
StringWalk 11505 11473 -0.3% 1.00x (?)
StringWithCString 53784 51868 -3.6% 1.04x
SubstringComparable 4010 4020 +0.2% 1.00x (?)
SubstringEqualString 6225 6239 +0.2% 1.00x (?)
SubstringEquatable 7944 7947 +0.0% 1.00x (?)
SubstringFromLongString 16 16 +0.0% 1.00x
SubstringFromLongStringGeneric 112 112 +0.0% 1.00x
SuffixAnyCollection 6445 6584 +2.2% 0.98x
SuffixAnyCollectionLazy 44434 44269 -0.4% 1.00x (?)
SuffixAnySeqCRangeIter 42312 42352 +0.1% 1.00x (?)
SuffixAnySeqCRangeIterLazy 41605 41621 +0.0% 1.00x (?)
SuffixAnySeqCntRange 6477 6662 +2.9% 0.97x (?)
SuffixAnySeqCntRangeLazy 6367 6408 +0.6% 0.99x
SuffixAnySequence 28800 28728 -0.2% 1.00x
SuffixAnySequenceLazy 28772 28730 -0.1% 1.00x (?)
SuffixArray 1942 1955 +0.7% 0.99x
SuffixArrayLazy 14119 14075 -0.3% 1.00x (?)
SuffixCountableRange 153 153 +0.0% 1.00x
SuffixCountableRangeLazy 12743 12773 +0.2% 1.00x (?)
SuffixSequence 28488 28345 -0.5% 1.01x
SuffixSequenceLazy 28407 28408 +0.0% 1.00x (?)
SumUsingReduce 216617 215857 -0.4% 1.00x
SumUsingReduceInto 215378 212682 -1.3% 1.01x
SuperChars 181693 181633 -0.0% 1.00x (?)
TwoSum 3649 3662 +0.4% 1.00x (?)
TypeFlood 149 154 +3.4% 0.97x (?)
UTF8Decode 36078 35675 -1.1% 1.01x
Walsh 11811 11813 +0.0% 1.00x (?)
XorLoop 23252 23254 +0.0% 1.00x (?)
Hardware Overview
  Model Name: Mac mini
  Model Identifier: Macmini7,1
  Processor Name: Intel Core i7
  Processor Speed: 3 GHz
  Number of Processors: 1
  Total Number of Cores: 2
  L2 Cache (per Core): 256 KB
  L3 Cache: 4 MB
  Memory: 16 GB

@jckarter
Copy link
Contributor Author

jckarter commented Nov 3, 2017

@eeckstein Do the benchmark numbers look acceptable? Hard to tell whether .9 is inside the noise floor or not.

This is a small code size win, and also gives us some abstraction so that future cooperative ObjC compilers/runtimes might be able to interoperate ObjC class objects with Swift type metadata efficiently than they currently are in the fragile Swift runtime.

While I'm here, I also noticed that swift_getObjCClassMetadata was unnecessarily getting exposed in non-ObjC-interop runtime builds, so I fixed that as well.
@jckarter jckarter force-pushed the objc-class-metadata-unwrapping branch from ba5145f to 95d2510 Compare November 3, 2017 17:19
@jckarter
Copy link
Contributor Author

jckarter commented Nov 3, 2017

@swift-ci Please test

1 similar comment
@jckarter
Copy link
Contributor Author

jckarter commented Nov 3, 2017

@swift-ci Please test

@jckarter
Copy link
Contributor Author

jckarter commented Nov 3, 2017

@swift-ci Please test source compatibility

1 similar comment
@jckarter
Copy link
Contributor Author

jckarter commented Nov 3, 2017

@swift-ci Please test source compatibility

@swift-ci
Copy link
Contributor

swift-ci commented Nov 3, 2017

Build failed
Swift Test OS X Platform
Git Sha - 95d2510

@jckarter
Copy link
Contributor Author

jckarter commented Nov 4, 2017

@swift-ci please test os x

@eeckstein
Copy link
Contributor

The benchmark numbers are totally reasonable (and probably noise at all).

@jckarter
Copy link
Contributor Author

jckarter commented Nov 6, 2017

Thanks Erik!

@jckarter
Copy link
Contributor Author

jckarter commented Nov 6, 2017

@swift-ci Please test source compatibility

@jckarter jckarter merged commit f8aef0a into swiftlang:master Nov 6, 2017
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