Skip to content

IRGen: Access concrete type metadata by mangled name. #26455

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
Aug 5, 2019

Conversation

jckarter
Copy link
Contributor

@jckarter jckarter commented Aug 1, 2019

When we generate code that asks for complete metadata for a fully concrete specific type that
doesn't have trivial metadata access, like (Int, String) or [String: [Any]],
generate a cache variable that points to a mangled name, and use a common accessor function
that turns that cache variable into a pointer to the instantiated metadata. This saves a bunch
of code size, and should have minimal runtime impact, since the demangling of any string only
has to happen once.

This mostly just works, though it exposed a couple of issues:

  • Mangling a type ref including objc protocols didn't cause the objc protocol record to get
    instantiated. Fixed as part of this patch.
  • The runtime type demangler doesn't correctly handle retroactive conformances. If there are
    multiple retroactive conformances in a process at runtime, then even though the mangled string
    refers to a specific conformance, the runtime still just picks one without listening to the
    mangler. This is left to fix later, rdar://problem/53828345.

There is some more follow-up work that we can do to further improve the gains:

  • We could improve the runtime-provided entry points, adding versions that don't require size
    to be cached, and which can handle arbitrary metadata requests. This would allow for mangled
    names to also be used for incomplete metadata accesses and improve code size of some generic
    type accessors. However, we'd only be able to take advantage of the new entry points in
    OSes that ship a new runtime.
  • We could choose to always symbolic reference all type references, which would generally reduce
    the size of mangled strings, as well as make runtime demangling more efficient, since it wouldn't
    need to hit the runtime caches. This would however require that we be able to handle symbolic
    references across files in the MetadataReader in order to avoid regressing remote mirror
    functionality.

@jckarter
Copy link
Contributor Author

jckarter commented Aug 1, 2019

@swift-ci Please test

@jckarter
Copy link
Contributor Author

jckarter commented Aug 1, 2019

@swift-ci Please test compiler performance

@jckarter
Copy link
Contributor Author

jckarter commented Aug 1, 2019

@swift-ci Please benchmark

@swift-ci
Copy link
Contributor

swift-ci commented Aug 1, 2019

Performance: -O

Regression OLD NEW DELTA RATIO
FatCompactMap 1080 1260 +16.7% 0.86x
ChainedFilterMap 972 1134 +16.7% 0.86x
DataSetCountSmall 117 133 +13.7% 0.88x
SubstringEqualString 377 407 +8.0% 0.93x (?)
 
Improvement OLD NEW DELTA RATIO
FlattenListLoop 4595 3582 -22.0% 1.28x (?)
RemoveWhereMoveInts 33 28 -15.2% 1.18x
ReversedArray2 179 154 -14.0% 1.16x
DataCountSmall 23 20 -13.0% 1.15x
Data.hash.Empty 69 61 -11.6% 1.13x (?)
DataCountMedium 28 25 -10.7% 1.12x (?)
MapReduceLazyCollectionShort 33 30 -9.1% 1.10x (?)
Ackermann 246 224 -8.9% 1.10x
Array2D 6736 6208 -7.8% 1.09x (?)
StrComplexWalk 2480 2290 -7.7% 1.08x (?)
MapReduceAnyCollection 357 331 -7.3% 1.08x
Set.subtracting.Empty.Box 14 13 -7.1% 1.08x (?)
DropLastSequence 513 477 -7.0% 1.08x
RandomShuffleLCG2 688 640 -7.0% 1.07x
DropLastSequenceLazy 512 477 -6.8% 1.07x
RemoveWhereSwapInts 60 56 -6.7% 1.07x

Code size: -O

Regression OLD NEW DELTA RATIO
IterateData.o 1693 1854 +9.5% 0.91x
ProtocolDispatch.o 765 820 +7.2% 0.93x
TypeFlood.o 903 963 +6.6% 0.94x
CaptureProp.o 906 963 +6.3% 0.94x
CharacterLiteralsLarge.o 883 938 +6.2% 0.94x
Radix2CooleyTukey.o 5215 5516 +5.8% 0.95x
RecursiveOwnedParameter.o 1382 1457 +5.4% 0.95x
ArraySetElement.o 1135 1195 +5.3% 0.95x
Sim2DArray.o 1207 1267 +5.0% 0.95x
CharacterLiteralsSmall.o 1324 1386 +4.7% 0.96x
SuperChars.o 1462 1526 +4.4% 0.96x
NSError.o 1294 1348 +4.2% 0.96x
CharacterProperties.o 19292 20063 +4.0% 0.96x
Chars.o 1619 1683 +4.0% 0.96x
OpaqueConsumingUsers.o 2046 2124 +3.8% 0.96x
RangeIteration.o 1684 1748 +3.8% 0.96x
InsertCharacter.o 5144 5336 +3.7% 0.96x
RandomValues.o 2894 2991 +3.4% 0.97x
Hanoi.o 3528 3613 +2.4% 0.98x
Fibonacci.o 1612 1650 +2.4% 0.98x
PointerArithmetics.o 1759 1799 +2.3% 0.98x
ObjectAllocation.o 4123 4214 +2.2% 0.98x
AnyHashableWithAClass.o 2979 3044 +2.2% 0.98x
BitCount.o 1876 1914 +2.0% 0.98x
ArrayOfPOD.o 2385 2431 +1.9% 0.98x
XorLoop.o 2012 2050 +1.9% 0.98x
MonteCarloPi.o 1593 1623 +1.9% 0.98x
ErrorHandling.o 2969 3023 +1.8% 0.98x
ChainedFilterMap.o 2669 2717 +1.8% 0.98x
DictionaryLiteral.o 1251 1273 +1.8% 0.98x
NSDictionaryCastToSwift.o 1657 1685 +1.7% 0.98x
FloatingPointPrinting.o 5927 6024 +1.6% 0.98x
OpenClose.o 3218 3270 +1.6% 0.98x
Exclusivity.o 4420 4487 +1.5% 0.99x
ArrayInClass.o 4079 4134 +1.3% 0.99x
SevenBoom.o 1642 1664 +1.3% 0.99x
ByteSwap.o 1652 1674 +1.3% 0.99x
Join.o 2272 2302 +1.3% 0.99x
Memset.o 2148 2176 +1.3% 0.99x
ProtocolDispatch2.o 1740 1762 +1.3% 0.99x
Ackermann.o 1884 1906 +1.2% 0.99x
DeadArray.o 1892 1914 +1.2% 0.99x
PopFront.o 5181 5237 +1.1% 0.99x
StringBuilder.o 7716 7796 +1.0% 0.99x
 
Improvement OLD NEW DELTA RATIO
ArrayOfGenericRef.o 15077 11831 -21.5% 1.27x
DictOfArraysToArrayOfDicts.o 29949 27160 -9.3% 1.10x
DictionaryGroup.o 18235 16643 -8.7% 1.10x
Prefix.o 23544 21506 -8.7% 1.09x
RangeOverlaps.o 10767 9912 -7.9% 1.09x
DropWhile.o 23363 21601 -7.5% 1.08x
Array2D.o 4495 4156 -7.5% 1.08x
ReversedCollections.o 11491 10698 -6.9% 1.07x
RC4.o 4068 3816 -6.2% 1.07x
PolymorphicCalls.o 8544 8034 -6.0% 1.06x
LazyFilter.o 11092 10431 -6.0% 1.06x
FlattenList.o 6279 5918 -5.7% 1.06x
Combos.o 7232 6834 -5.5% 1.06x
DropFirst.o 23731 22445 -5.4% 1.06x
BucketSort.o 11618 11047 -4.9% 1.05x
DictTest.o 20601 19600 -4.9% 1.05x
PrefixWhile.o 21565 20525 -4.8% 1.05x
DictTest2.o 15528 14784 -4.8% 1.05x
ArrayOfRef.o 12379 11808 -4.6% 1.05x
NopDeinit.o 5664 5424 -4.2% 1.04x
MapReduce.o 31298 30003 -4.1% 1.04x
DropLast.o 25410 24374 -4.1% 1.04x
DictionarySubscriptDefault.o 28778 27622 -4.0% 1.04x
LinkedList.o 2376 2282 -4.0% 1.04x
Suffix.o 25184 24204 -3.9% 1.04x
Diffing.o 9134 8795 -3.7% 1.04x
ClassArrayGetter.o 5715 5509 -3.6% 1.04x
DictionaryCompactMapValues.o 18939 18265 -3.6% 1.04x
RGBHistogram.o 27738 26780 -3.5% 1.04x
DictionarySwap.o 21986 21247 -3.4% 1.03x
DictTest3.o 22776 22064 -3.1% 1.03x
DictionaryRemove.o 16472 15961 -3.1% 1.03x
CString.o 8272 8034 -2.9% 1.03x
WordCount.o 45164 43870 -2.9% 1.03x
DictTest4Legacy.o 24640 23947 -2.8% 1.03x
DriverUtils.o 155317 151087 -2.7% 1.03x
UTF8Decode.o 13034 12690 -2.6% 1.03x
StringEdits.o 12151 11845 -2.5% 1.03x
ArraySubscript.o 3764 3670 -2.5% 1.03x
SetTests.o 153118 149315 -2.5% 1.03x
ArrayAppend.o 34955 34138 -2.3% 1.02x
DictTest4.o 23400 22892 -2.2% 1.02x
ObserverPartiallyAppliedMethod.o 3535 3461 -2.1% 1.02x
ObserverClosure.o 3247 3180 -2.1% 1.02x
COWTree.o 13042 12794 -1.9% 1.02x
CSVParsing.o 60559 59416 -1.9% 1.02x
DictionaryKeysContains.o 10105 9930 -1.7% 1.02x
ObserverUnappliedMethod.o 5226 5136 -1.7% 1.02x
TwoSum.o 5508 5414 -1.7% 1.02x
ObserverForwarderStruct.o 3648 3592 -1.5% 1.02x
SortIntPyramids.o 12453 12263 -1.5% 1.02x
Prims.o 16984 16730 -1.5% 1.02x
ExistentialPerformance.o 47173 46481 -1.5% 1.01x
ArrayOfGenericPOD.o 4041 3983 -1.4% 1.01x
DictionaryCopy.o 10933 10779 -1.4% 1.01x
PrimsSplit.o 17054 16824 -1.3% 1.01x
LuhnAlgoLazy.o 10860 10718 -1.3% 1.01x
LuhnAlgoEager.o 10862 10720 -1.3% 1.01x
SortLettersInPlace.o 9164 9045 -1.3% 1.01x
SequenceAlgos.o 20405 20159 -1.2% 1.01x
BinaryFloatingPointProperties.o 7580 7490 -1.2% 1.01x
Breadcrumbs.o 45437 44908 -1.2% 1.01x
Histogram.o 4171 4124 -1.1% 1.01x
StringRemoveDupes.o 7552 7467 -1.1% 1.01x
StringInterpolation.o 7339 7265 -1.0% 1.01x

Performance: -Osize

Regression OLD NEW DELTA RATIO
DropFirstSequence 52 68 +30.8% 0.76x
DropFirstSequenceLazy 52 68 +30.8% 0.76x
SubstringComparable 10 12 +20.0% 0.83x (?)
DataSetCountSmall 117 133 +13.7% 0.88x (?)
PrefixWhileAnySeqCntRangeLazy 142 158 +11.3% 0.90x (?)
DropWhileAnySeqCRangeIter 146 162 +11.0% 0.90x (?)
PrefixAnySeqCntRangeLazy 143 158 +10.5% 0.91x
DataSubscriptSmall 23 25 +8.7% 0.92x (?)
DataCreateSmall 2690 2920 +8.6% 0.92x (?)
 
Improvement OLD NEW DELTA RATIO
RemoveWhereMoveInts 36 31 -13.9% 1.16x
DataCreateEmpty 170 150 -11.8% 1.13x
RemoveWhereSwapInts 60 53 -11.7% 1.13x
RemoveWhereFilterInts 44 39 -11.4% 1.13x (?)
StringEqualPointerComparison 230 205 -10.9% 1.12x
ObjectiveCBridgeStubDateMutation 256 229 -10.5% 1.12x
Set.isStrictSubset.Int.Empty 95 85 -10.5% 1.12x
CharIteration_chinese_unicodeScalars 3080 2760 -10.4% 1.12x
ParseInt.Small.Binary 511 459 -10.2% 1.11x
PrefixAnyCollection 163 147 -9.8% 1.11x
PrefixAnySeqCRangeIterLazy 158 143 -9.5% 1.10x (?)
ArrayLiteral2 174 158 -9.2% 1.10x (?)
DropLastAnyCollection 58 53 -8.6% 1.09x
ParseInt.Small.UncommonRadix 354 324 -8.5% 1.09x (?)
Array2D 6480 5936 -8.4% 1.09x (?)
ParseInt.Small.Decimal 336 308 -8.3% 1.09x (?)
Set.isDisjoint.Seq.Empty.Box 110 101 -8.2% 1.09x (?)
FatCompactMap 9110 8370 -8.1% 1.09x (?)
CharIteration_russian_unicodeScalars 3480 3200 -8.0% 1.09x (?)
Set.isSuperset.Seq.Empty.Int 89 82 -7.9% 1.09x
ObjectiveCBridgeStubNSDateRefAccess 333 307 -7.8% 1.08x (?)
Set.isDisjoint.Seq.Int.Empty 91 84 -7.7% 1.08x (?)
Set.isSubset.Int.Empty 91 84 -7.7% 1.08x (?)
CharIteration_korean_unicodeScalars 3800 3520 -7.4% 1.08x (?)
Set.isDisjoint.Seq.Box.Empty 153 142 -7.2% 1.08x (?)
DropWhileAnySeqCRangeIterLazy 237 221 -6.8% 1.07x (?)

Code size: -Osize

Regression OLD NEW DELTA RATIO
Radix2CooleyTukey.o 4948 5236 +5.8% 0.94x
IterateData.o 1741 1841 +5.7% 0.95x
PolymorphicCalls.o 7968 8370 +5.0% 0.95x
RecursiveOwnedParameter.o 1313 1378 +5.0% 0.95x
NIOChannelPipeline.o 3963 4151 +4.7% 0.95x
OpaqueConsumingUsers.o 2081 2173 +4.4% 0.96x
TypeFlood.o 972 1011 +4.0% 0.96x
CharacterLiteralsLarge.o 948 986 +4.0% 0.96x
CaptureProp.o 1101 1139 +3.5% 0.97x
StackPromo.o 1931 1996 +3.4% 0.97x
CharacterProperties.o 19612 20255 +3.3% 0.97x
NSError.o 1662 1712 +3.0% 0.97x
CharacterLiteralsSmall.o 1428 1466 +2.7% 0.97x
ObjectAllocation.o 4046 4153 +2.6% 0.97x
ProtocolDispatch.o 846 868 +2.6% 0.97x
AnyHashableWithAClass.o 3211 3292 +2.5% 0.98x
Hanoi.o 3737 3802 +1.7% 0.98x
DictionaryBridge.o 3484 3544 +1.7% 0.98x
Integrate.o 2430 2467 +1.5% 0.99x
InsertCharacter.o 4751 4815 +1.3% 0.99x
BitCount.o 1634 1656 +1.3% 0.99x
Fibonacci.o 1642 1664 +1.3% 0.99x
SevenBoom.o 1816 1838 +1.2% 0.99x
 
Improvement OLD NEW DELTA RATIO
DropWhile.o 22236 19588 -11.9% 1.14x
ReversedCollections.o 9850 8695 -11.7% 1.13x
Array2D.o 4594 4107 -10.6% 1.12x
DropFirst.o 21596 19553 -9.5% 1.10x
COWArrayGuaranteedParameterOverhead.o 1467 1334 -9.1% 1.10x
Prefix.o 21345 19471 -8.8% 1.10x
DictionaryLiteral.o 995 921 -7.4% 1.08x
PrefixWhile.o 20222 18814 -7.0% 1.07x
ArraySubscript.o 4067 3796 -6.7% 1.07x
DictOfArraysToArrayOfDicts.o 26541 24882 -6.3% 1.07x
DropLast.o 23762 22322 -6.1% 1.06x
ArrayOfGenericPOD.o 4291 4033 -6.0% 1.06x
Combos.o 7792 7330 -5.9% 1.06x
FlattenList.o 6679 6286 -5.9% 1.06x
Suffix.o 23640 22320 -5.6% 1.06x
RangeOverlaps.o 11775 11140 -5.4% 1.06x
LazyFilter.o 8905 8432 -5.3% 1.06x
ArrayOfGenericRef.o 13709 13023 -5.0% 1.05x
DictionaryBridgeToObjC.o 4619 4399 -4.8% 1.05x
DictionarySubscriptDefault.o 18890 18012 -4.6% 1.05x
ArraySetElement.o 1309 1251 -4.4% 1.05x
DictTest2.o 9689 9266 -4.4% 1.05x
Memset.o 2098 2008 -4.3% 1.04x
DictionaryKeysContains.o 8156 7810 -4.2% 1.04x
RC4.o 3586 3436 -4.2% 1.04x
ChainedFilterMap.o 3493 3349 -4.1% 1.04x
Sim2DArray.o 1421 1363 -4.1% 1.04x
XorLoop.o 2082 2000 -3.9% 1.04x
DictTest.o 12409 11935 -3.8% 1.04x
DictionaryCompactMapValues.o 14133 13632 -3.5% 1.04x
ArrayLiteral.o 3189 3077 -3.5% 1.04x
RandomShuffle.o 3799 3669 -3.4% 1.04x
Walsh.o 5796 5600 -3.4% 1.03x
BinaryFloatingPointProperties.o 7412 7170 -3.3% 1.03x
RomanNumbers.o 8602 8329 -3.2% 1.03x
CString.o 8072 7818 -3.1% 1.03x
DictionaryGroup.o 14319 13870 -3.1% 1.03x
RemoveWhere.o 24294 23543 -3.1% 1.03x
Ackermann.o 1957 1898 -3.0% 1.03x
WordCount.o 40957 39762 -2.9% 1.03x
Prims.o 14192 13792 -2.8% 1.03x
ArrayInClass.o 4548 4421 -2.8% 1.03x
DictTest3.o 13945 13570 -2.7% 1.03x
MonteCarloE.o 3762 3662 -2.7% 1.03x
SortIntPyramids.o 12921 12584 -2.6% 1.03x
NSDictionaryCastToSwift.o 1722 1678 -2.6% 1.03x
PrimsSplit.o 14262 13898 -2.6% 1.03x
SequenceAlgos.o 20381 19875 -2.5% 1.03x
StringRemoveDupes.o 4857 4737 -2.5% 1.03x
ArrayOfPOD.o 2761 2695 -2.4% 1.02x
Histogram.o 1920 1876 -2.3% 1.02x
BucketSort.o 11415 11159 -2.2% 1.02x
StringEdits.o 12358 12092 -2.2% 1.02x
SuperChars.o 1600 1566 -2.1% 1.02x
UTF8Decode.o 11089 10856 -2.1% 1.02x
ArrayAppend.o 31507 30850 -2.1% 1.02x
DriverUtils.o 134806 132038 -2.1% 1.02x
ClassArrayGetter.o 5753 5636 -2.0% 1.02x
FloatingPointParsing.o 15258 14950 -2.0% 1.02x
PopFrontGeneric.o 4759 4665 -2.0% 1.02x
COWTree.o 13592 13324 -2.0% 1.02x
Join.o 2549 2499 -2.0% 1.02x
Chars.o 1741 1707 -2.0% 1.02x
DiffingMyers.o 9176 8998 -1.9% 1.02x
ObjectiveCBridging.o 54698 53654 -1.9% 1.02x
Hash.o 19905 19527 -1.9% 1.02x
ObserverPartiallyAppliedMethod.o 3911 3837 -1.9% 1.02x
DictionarySwap.o 16745 16437 -1.8% 1.02x
RangeIteration.o 1770 1738 -1.8% 1.02x
DictionaryCopy.o 7861 7719 -1.8% 1.02x
Phonebook.o 12298 12077 -1.8% 1.02x
StaticArray.o 12703 12476 -1.8% 1.02x
NibbleSort.o 14366 14112 -1.8% 1.02x
DictionaryRemove.o 11067 10873 -1.8% 1.02x
PointerArithmetics.o 1864 1832 -1.7% 1.02x
RGBHistogram.o 23177 22808 -1.6% 1.02x
SortLettersInPlace.o 9054 8911 -1.6% 1.02x
MapReduce.o 26074 25675 -1.5% 1.02x
TwoSum.o 3077 3030 -1.5% 1.02x
RangeAssignment.o 5018 4944 -1.5% 1.01x
CSVParsing.o 60543 59684 -1.4% 1.01x
Codable.o 26643 26267 -1.4% 1.01x
StringEnum.o 13109 12937 -1.3% 1.01x
ArrayOfRef.o 13091 12920 -1.3% 1.01x
ObserverClosure.o 3557 3513 -1.2% 1.01x
LuhnAlgoLazy.o 13588 13434 -1.1% 1.01x
LuhnAlgoEager.o 13590 13436 -1.1% 1.01x
ObjectiveCNoBridgingStubs.o 8495 8400 -1.1% 1.01x
ObserverUnappliedMethod.o 5354 5296 -1.1% 1.01x
StringWalk.o 34906 34535 -1.1% 1.01x
StringMatch.o 4577 4530 -1.0% 1.01x

Performance: -Onone

Regression OLD NEW DELTA RATIO
CharIndexing_utf16_unicodeScalars 451120 525480 +16.5% 0.86x (?)
CharIteration_utf16_unicodeScalars_Backwards 262920 304440 +15.8% 0.86x (?)
DataSetCountSmall 164 187 +14.0% 0.88x (?)
CharIndexing_tweet_unicodeScalars 999080 1137560 +13.9% 0.88x (?)
Set.subtracting.Seq.Box0 7768 8626 +11.0% 0.90x (?)
UTF8Decode_InitDecoding 206 228 +10.7% 0.90x (?)
Radix2CooleyTukey 41760 46032 +10.2% 0.91x
ArrayOfPOD 930 1003 +7.8% 0.93x (?)
 
Improvement OLD NEW DELTA RATIO
PopFrontArrayGeneric 6440 5160 -19.9% 1.25x
SubstringComparable 2663 2328 -12.6% 1.14x (?)
StringHashing_latin1 778 690 -11.3% 1.13x
Breadcrumbs.MutatedIdxToUTF16.ASCII 21 19 -9.5% 1.11x (?)
QueueConcrete 19310 17520 -9.3% 1.10x (?)
SubstringEquatable 7125 6504 -8.7% 1.10x (?)
Histogram 7772 7146 -8.1% 1.09x (?)
Set.isSubset.Empty.Int 414 384 -7.2% 1.08x (?)
StringHashing_fastPrenormal 1400 1300 -7.1% 1.08x (?)
AngryPhonebook.ASCII 14 13 -7.1% 1.08x (?)
ErrorHandling 7530 7000 -7.0% 1.08x (?)

Code size: -swiftlibs

Regression OLD NEW DELTA RATIO
libswiftAccelerate.dylib 237568 253952 +6.9% 0.94x
libswiftSwiftLang.dylib 90112 94208 +4.5% 0.96x
 
Improvement OLD NEW DELTA RATIO
libswiftMetal.dylib 40960 36864 -10.0% 1.11x
libswiftXCTest.dylib 73728 69632 -5.6% 1.06x
libswiftFoundation.dylib 1585152 1523712 -3.9% 1.04x
libswiftStdlibUnittest.dylib 348160 335872 -3.5% 1.04x
How to read the data The tables contain differences in performance which are larger than 8% and differences in code size which are larger than 1%.

If you see any unexpected regressions, you should consider fixing the
regressions before you merge the PR.

Noise: Sometimes the performance results (not code size!) contain false
alarms. Unexpected regressions which are marked with '(?)' are probably noise.
If you see regressions which you cannot explain you can try to run the
benchmarks again. If regressions still show up, please consult with the
performance team (@eeckstein).

Hardware Overview
  Model Name: Mac Pro
  Model Identifier: MacPro6,1
  Processor Name: 8-Core Intel Xeon E5
  Processor Speed: 3 GHz
  Number of Processors: 1
  Total Number of Cores: 8
  L2 Cache (per Core): 256 KB
  L3 Cache: 25 MB
  Memory: 64 GB

@jckarter
Copy link
Contributor Author

jckarter commented Aug 1, 2019

@swift-ci Please benchmark

@swift-ci
Copy link
Contributor

swift-ci commented Aug 1, 2019

Build failed
Swift Test Linux Platform
Git Sha - 84c0ba9a80b45e866ee3d4ed16fd3af18108dd72

@swift-ci
Copy link
Contributor

swift-ci commented Aug 1, 2019

Performance: -O

Regression OLD NEW DELTA RATIO
PrefixArrayLazy 15 26 +73.3% 0.58x
DataCountMedium 13 17 +30.8% 0.76x
DataCountSmall 10 13 +30.0% 0.77x
ClosedRangeOverlapsClosedRange 41 48 +17.1% 0.85x
DataSubscriptSmall 13 15 +15.4% 0.87x (?)
SequenceAlgosContiguousArray 1150 1310 +13.9% 0.88x (?)
ObjectiveCBridgeStubNSDateRefAccess 174 196 +12.6% 0.89x (?)
ProtocolDispatch 174 196 +12.6% 0.89x
ObjectiveCBridgeStringHash 40 45 +12.5% 0.89x (?)
DropWhileAnySeqCRangeIter 43 47 +9.3% 0.91x (?)
OpenClose 56 61 +8.9% 0.92x
 
Improvement OLD NEW DELTA RATIO
DropFirstSequence 44 29 -34.1% 1.52x
DropFirstSequenceLazy 44 29 -34.1% 1.52x
DropWhileArray 35 25 -28.6% 1.40x
DropWhileCountableRangeLazy 58 44 -24.1% 1.32x
Dictionary4 199 155 -22.1% 1.28x
ReversedArray2 109 90 -17.4% 1.21x (?)
PrefixWhileAnySeqCRangeIterLazy 41 34 -17.1% 1.21x (?)
Dictionary4OfObjects 237 197 -16.9% 1.20x
ParseInt.Small.UncommonRadix 221 186 -15.8% 1.19x (?)
DropWhileAnySeqCntRange 50 43 -14.0% 1.16x
Set.isDisjoint.Box.Empty 104 91 -12.5% 1.14x (?)
Set.isStrictSubset.Seq.Int.Empty 129 113 -12.4% 1.14x (?)
ParseInt.Small.Binary 323 283 -12.4% 1.14x
Set.isDisjoint.Empty.Box 101 89 -11.9% 1.13x (?)
NSStringConversion.Long 491 433 -11.8% 1.13x
PrefixWhileAnySeqCRangeIter 195 172 -11.8% 1.13x
Set.isDisjoint.Seq.Empty.Box 88 78 -11.4% 1.13x
PrefixWhileAnySeqCntRange 195 173 -11.3% 1.13x
RemoveWhereMoveInts 18 16 -11.1% 1.12x (?)
ObjectiveCBridgeStubToNSDate2 1090 970 -11.0% 1.12x (?)
Set.isStrictSubset.Int.Empty 57 51 -10.5% 1.12x (?)
ArrayAppendAsciiSubstring 11520 10404 -9.7% 1.11x (?)
StrComplexWalk 2090 1890 -9.6% 1.11x
Data.init.Sequence.2047B.Count.I 85 77 -9.4% 1.10x (?)
Data.init.Sequence.2049B.Count.I 85 77 -9.4% 1.10x (?)
ArrayAppendUTF16Substring 11484 10404 -9.4% 1.10x (?)
ArrayAppendLatin1Substring 11700 10620 -9.2% 1.10x (?)
PointerArithmetics 23900 21700 -9.2% 1.10x (?)
DataCreateSmallArray 2350 2150 -8.5% 1.09x (?)
DataAccessBytesMedium 47 43 -8.5% 1.09x (?)
NSStringConversion.Medium 228 210 -7.9% 1.09x
Set.isDisjoint.Seq.Box.Empty 76 70 -7.9% 1.09x (?)
Set.isSubset.Int.Empty 52 48 -7.7% 1.08x (?)
Set.isStrictSuperset.Seq.Empty.Int 174 161 -7.5% 1.08x (?)
Data.init.Sequence.64kB.Count.I 54 50 -7.4% 1.08x (?)
Data.init.Sequence.64kB.Count 54 50 -7.4% 1.08x (?)
Set.isSubset.Seq.Int.Empty 125 116 -7.2% 1.08x (?)
Data.init.Sequence.809B.Count 98 91 -7.1% 1.08x (?)
MapReduceLazyCollectionShort 28 26 -7.1% 1.08x
PolymorphicCalls 15 14 -6.7% 1.07x (?)

Code size: -O

Regression OLD NEW DELTA RATIO
IterateData.o 1693 1854 +9.5% 0.91x
ProtocolDispatch.o 765 820 +7.2% 0.93x
TypeFlood.o 903 963 +6.6% 0.94x
CaptureProp.o 906 963 +6.3% 0.94x
CharacterLiteralsLarge.o 883 938 +6.2% 0.94x
Radix2CooleyTukey.o 5215 5516 +5.8% 0.95x
RecursiveOwnedParameter.o 1382 1457 +5.4% 0.95x
ArraySetElement.o 1135 1195 +5.3% 0.95x
Sim2DArray.o 1207 1267 +5.0% 0.95x
CharacterLiteralsSmall.o 1324 1386 +4.7% 0.96x
SuperChars.o 1462 1526 +4.4% 0.96x
NSError.o 1294 1348 +4.2% 0.96x
CharacterProperties.o 19292 20063 +4.0% 0.96x
Chars.o 1619 1683 +4.0% 0.96x
OpaqueConsumingUsers.o 2046 2124 +3.8% 0.96x
RangeIteration.o 1684 1748 +3.8% 0.96x
InsertCharacter.o 5144 5336 +3.7% 0.96x
RandomValues.o 2894 2991 +3.4% 0.97x
Hanoi.o 3528 3613 +2.4% 0.98x
Fibonacci.o 1612 1650 +2.4% 0.98x
PointerArithmetics.o 1759 1799 +2.3% 0.98x
ObjectAllocation.o 4123 4214 +2.2% 0.98x
AnyHashableWithAClass.o 2979 3044 +2.2% 0.98x
BitCount.o 1876 1914 +2.0% 0.98x
ArrayOfPOD.o 2385 2431 +1.9% 0.98x
XorLoop.o 2012 2050 +1.9% 0.98x
MonteCarloPi.o 1593 1623 +1.9% 0.98x
ErrorHandling.o 2969 3023 +1.8% 0.98x
ChainedFilterMap.o 2669 2717 +1.8% 0.98x
DictionaryLiteral.o 1251 1273 +1.8% 0.98x
NSDictionaryCastToSwift.o 1657 1685 +1.7% 0.98x
FloatingPointPrinting.o 5927 6024 +1.6% 0.98x
OpenClose.o 3218 3270 +1.6% 0.98x
Exclusivity.o 4420 4487 +1.5% 0.99x
ArrayInClass.o 4079 4134 +1.3% 0.99x
SevenBoom.o 1642 1664 +1.3% 0.99x
ByteSwap.o 1652 1674 +1.3% 0.99x
Join.o 2272 2302 +1.3% 0.99x
Memset.o 2148 2176 +1.3% 0.99x
ProtocolDispatch2.o 1740 1762 +1.3% 0.99x
Ackermann.o 1884 1906 +1.2% 0.99x
DeadArray.o 1892 1914 +1.2% 0.99x
PopFront.o 5181 5237 +1.1% 0.99x
StringBuilder.o 7716 7796 +1.0% 0.99x
 
Improvement OLD NEW DELTA RATIO
ArrayOfGenericRef.o 15077 11831 -21.5% 1.27x
DictOfArraysToArrayOfDicts.o 29949 27160 -9.3% 1.10x
DictionaryGroup.o 18235 16643 -8.7% 1.10x
Prefix.o 23544 21506 -8.7% 1.09x
RangeOverlaps.o 10767 9912 -7.9% 1.09x
DropWhile.o 23363 21601 -7.5% 1.08x
Array2D.o 4495 4156 -7.5% 1.08x
ReversedCollections.o 11491 10698 -6.9% 1.07x
RC4.o 4068 3816 -6.2% 1.07x
PolymorphicCalls.o 8544 8034 -6.0% 1.06x
LazyFilter.o 11092 10431 -6.0% 1.06x
FlattenList.o 6279 5918 -5.7% 1.06x
Combos.o 7232 6834 -5.5% 1.06x
DropFirst.o 23731 22445 -5.4% 1.06x
BucketSort.o 11618 11047 -4.9% 1.05x
DictTest.o 20601 19600 -4.9% 1.05x
PrefixWhile.o 21565 20525 -4.8% 1.05x
DictTest2.o 15528 14784 -4.8% 1.05x
ArrayOfRef.o 12379 11808 -4.6% 1.05x
NopDeinit.o 5664 5424 -4.2% 1.04x
MapReduce.o 31298 30003 -4.1% 1.04x
DropLast.o 25410 24374 -4.1% 1.04x
DictionarySubscriptDefault.o 28778 27622 -4.0% 1.04x
LinkedList.o 2376 2282 -4.0% 1.04x
Suffix.o 25184 24204 -3.9% 1.04x
Diffing.o 9134 8795 -3.7% 1.04x
ClassArrayGetter.o 5715 5509 -3.6% 1.04x
DictionaryCompactMapValues.o 18939 18265 -3.6% 1.04x
RGBHistogram.o 27738 26780 -3.5% 1.04x
DictionarySwap.o 21986 21247 -3.4% 1.03x
DictTest3.o 22776 22064 -3.1% 1.03x
DictionaryRemove.o 16472 15961 -3.1% 1.03x
CString.o 8272 8034 -2.9% 1.03x
WordCount.o 45164 43870 -2.9% 1.03x
DictTest4Legacy.o 24640 23947 -2.8% 1.03x
DriverUtils.o 155317 151087 -2.7% 1.03x
UTF8Decode.o 13034 12690 -2.6% 1.03x
StringEdits.o 12151 11845 -2.5% 1.03x
ArraySubscript.o 3764 3670 -2.5% 1.03x
SetTests.o 153118 149315 -2.5% 1.03x
ArrayAppend.o 34955 34138 -2.3% 1.02x
DictTest4.o 23400 22892 -2.2% 1.02x
ObserverPartiallyAppliedMethod.o 3535 3461 -2.1% 1.02x
ObserverClosure.o 3247 3180 -2.1% 1.02x
COWTree.o 13042 12794 -1.9% 1.02x
CSVParsing.o 60559 59416 -1.9% 1.02x
DictionaryKeysContains.o 10105 9930 -1.7% 1.02x
ObserverUnappliedMethod.o 5226 5136 -1.7% 1.02x
TwoSum.o 5508 5414 -1.7% 1.02x
ObserverForwarderStruct.o 3648 3592 -1.5% 1.02x
SortIntPyramids.o 12453 12263 -1.5% 1.02x
Prims.o 16984 16730 -1.5% 1.02x
ExistentialPerformance.o 47173 46481 -1.5% 1.01x
ArrayOfGenericPOD.o 4041 3983 -1.4% 1.01x
DictionaryCopy.o 10933 10779 -1.4% 1.01x
PrimsSplit.o 17054 16824 -1.3% 1.01x
LuhnAlgoLazy.o 10860 10718 -1.3% 1.01x
LuhnAlgoEager.o 10862 10720 -1.3% 1.01x
SortLettersInPlace.o 9164 9045 -1.3% 1.01x
SequenceAlgos.o 20405 20159 -1.2% 1.01x
BinaryFloatingPointProperties.o 7580 7490 -1.2% 1.01x
Breadcrumbs.o 45437 44908 -1.2% 1.01x
Histogram.o 4171 4124 -1.1% 1.01x
StringRemoveDupes.o 7552 7467 -1.1% 1.01x
StringInterpolation.o 7339 7265 -1.0% 1.01x

Performance: -Osize

Regression OLD NEW DELTA RATIO
SuffixArray 4 9 +125.0% 0.44x
PrefixWhileCountableRangeLazy 16 26 +62.5% 0.62x
DataCreateMedium 4200 6400 +52.4% 0.66x
DropLastCountableRange 6 9 +50.0% 0.67x
DropLastCountableRangeLazy 6 9 +50.0% 0.67x
DropFirstSequence 33 49 +48.5% 0.67x
DropFirstSequenceLazy 33 49 +48.5% 0.67x
DropWhileArray 25 35 +40.0% 0.71x
DropWhileAnyCollection 81 112 +38.3% 0.72x
SuffixAnyCollection 28 38 +35.7% 0.74x
PrefixWhileArray 40 53 +32.5% 0.75x
PrefixWhileAnyCollection 100 132 +32.0% 0.76x
DropWhileCountableRangeLazy 45 58 +28.9% 0.78x
PrefixCountableRange 15 18 +20.0% 0.83x (?)
DropFirstAnyCollection 89 105 +18.0% 0.85x (?)
ArrayOfPOD 333 381 +14.4% 0.87x (?)
StringHasPrefixAscii 1150 1300 +13.0% 0.88x
StringComparison_ascii 338 373 +10.4% 0.91x (?)
SubstringEquatable 408 450 +10.3% 0.91x
MapReduce 215 236 +9.8% 0.91x (?)
ObjectiveCBridgeStringHash 41 45 +9.8% 0.91x (?)
DataSetCountSmall 74 80 +8.1% 0.93x
RangeOverlapsClosedRange 51 55 +7.8% 0.93x (?)
 
Improvement OLD NEW DELTA RATIO
PrefixArrayLazy 26 14 -46.2% 1.86x
DropFirstArray 26 14 -46.2% 1.86x
MapReduceLazyCollectionShort 47 26 -44.7% 1.81x
DropWhileCountableRange 31 19 -38.7% 1.63x
PrefixCountableRangeLazy 26 17 -34.6% 1.53x
SuffixCountableRange 9 6 -33.3% 1.50x
PrefixAnyCollection 104 73 -29.8% 1.42x
DropLastAnyCollection 38 28 -26.3% 1.36x
ArrayAppendSequence 850 680 -20.0% 1.25x (?)
DataCreateEmpty 100 80 -20.0% 1.25x
DropFirstAnySeqCRangeIterLazy 127 102 -19.7% 1.25x
Dictionary4 204 165 -19.1% 1.24x
StringEqualPointerComparison 130 108 -16.9% 1.20x (?)
DropFirstCountableRangeLazy 18 15 -16.7% 1.20x (?)
PrefixWhileAnyCollectionLazy 95 81 -14.7% 1.17x
ClosedRangeOverlapsClosedRange 48 41 -14.6% 1.17x
Set.isStrictSubset.Int.Empty 62 53 -14.5% 1.17x (?)
PrefixWhileAnySeqCRangeIterLazy 94 81 -13.8% 1.16x (?)
PrefixWhileAnySeqCntRangeLazy 94 81 -13.8% 1.16x
Set.isSubset.Int.Empty 59 51 -13.6% 1.16x
BitCount 168 146 -13.1% 1.15x (?)
Set.isSuperset.Seq.Empty.Int 57 50 -12.3% 1.14x (?)
Set.isSubset.Empty.Int 134 118 -11.9% 1.14x
Set.isDisjoint.Seq.Empty.Box 101 89 -11.9% 1.13x (?)
Set.isDisjoint.Seq.Empty.Int 98 87 -11.2% 1.13x
Set.isDisjoint.Empty.Int 98 87 -11.2% 1.13x
DropWhileAnySeqCRangeIterLazy 131 117 -10.7% 1.12x (?)
Set.isDisjoint.Int.Empty 100 90 -10.0% 1.11x
CharIteration_punctuated_unicodeScalars 440 400 -9.1% 1.10x (?)
CaptureProp 2820 2570 -8.9% 1.10x
Set.isDisjoint.Box.Empty 115 105 -8.7% 1.10x
CharIteration_ascii_unicodeScalars 1880 1720 -8.5% 1.09x (?)
SequenceAlgosArray 1960 1800 -8.2% 1.09x (?)
Set.isStrictSubset.Seq.Int.Empty 137 126 -8.0% 1.09x (?)
RemoveWhereFilterInts 25 23 -8.0% 1.09x (?)
ParseInt.Small.UncommonRadix 216 199 -7.9% 1.09x
CharIteration_tweet_unicodeScalars 3720 3440 -7.5% 1.08x
Set.isDisjoint.Int100 213 197 -7.5% 1.08x (?)
UTF8Decode_InitDecoding 125 116 -7.2% 1.08x (?)
DataAccessBytesMedium 56 52 -7.1% 1.08x (?)
DropWhileSequence 14 13 -7.1% 1.08x (?)

Code size: -Osize

Regression OLD NEW DELTA RATIO
Radix2CooleyTukey.o 4948 5236 +5.8% 0.94x
IterateData.o 1741 1841 +5.7% 0.95x
PolymorphicCalls.o 7968 8370 +5.0% 0.95x
RecursiveOwnedParameter.o 1313 1378 +5.0% 0.95x
NIOChannelPipeline.o 3963 4151 +4.7% 0.95x
OpaqueConsumingUsers.o 2081 2173 +4.4% 0.96x
TypeFlood.o 972 1011 +4.0% 0.96x
CharacterLiteralsLarge.o 948 986 +4.0% 0.96x
CaptureProp.o 1101 1139 +3.5% 0.97x
StackPromo.o 1931 1996 +3.4% 0.97x
CharacterProperties.o 19612 20255 +3.3% 0.97x
NSError.o 1662 1712 +3.0% 0.97x
CharacterLiteralsSmall.o 1428 1466 +2.7% 0.97x
ObjectAllocation.o 4046 4153 +2.6% 0.97x
ProtocolDispatch.o 846 868 +2.6% 0.97x
AnyHashableWithAClass.o 3211 3292 +2.5% 0.98x
Hanoi.o 3737 3802 +1.7% 0.98x
DictionaryBridge.o 3484 3544 +1.7% 0.98x
Integrate.o 2430 2467 +1.5% 0.99x
InsertCharacter.o 4751 4815 +1.3% 0.99x
BitCount.o 1634 1656 +1.3% 0.99x
Fibonacci.o 1642 1664 +1.3% 0.99x
SevenBoom.o 1816 1838 +1.2% 0.99x
 
Improvement OLD NEW DELTA RATIO
DropWhile.o 22236 19588 -11.9% 1.14x
ReversedCollections.o 9850 8695 -11.7% 1.13x
Array2D.o 4594 4107 -10.6% 1.12x
DropFirst.o 21596 19553 -9.5% 1.10x
COWArrayGuaranteedParameterOverhead.o 1467 1334 -9.1% 1.10x
Prefix.o 21345 19471 -8.8% 1.10x
DictionaryLiteral.o 995 921 -7.4% 1.08x
PrefixWhile.o 20222 18814 -7.0% 1.07x
ArraySubscript.o 4067 3796 -6.7% 1.07x
DictOfArraysToArrayOfDicts.o 26541 24882 -6.3% 1.07x
DropLast.o 23762 22322 -6.1% 1.06x
ArrayOfGenericPOD.o 4291 4033 -6.0% 1.06x
Combos.o 7792 7330 -5.9% 1.06x
FlattenList.o 6679 6286 -5.9% 1.06x
Suffix.o 23640 22320 -5.6% 1.06x
RangeOverlaps.o 11775 11140 -5.4% 1.06x
LazyFilter.o 8905 8432 -5.3% 1.06x
ArrayOfGenericRef.o 13709 13023 -5.0% 1.05x
DictionaryBridgeToObjC.o 4619 4399 -4.8% 1.05x
DictionarySubscriptDefault.o 18890 18012 -4.6% 1.05x
ArraySetElement.o 1309 1251 -4.4% 1.05x
DictTest2.o 9689 9266 -4.4% 1.05x
Memset.o 2098 2008 -4.3% 1.04x
DictionaryKeysContains.o 8156 7810 -4.2% 1.04x
RC4.o 3586 3436 -4.2% 1.04x
ChainedFilterMap.o 3493 3349 -4.1% 1.04x
Sim2DArray.o 1421 1363 -4.1% 1.04x
XorLoop.o 2082 2000 -3.9% 1.04x
DictTest.o 12409 11935 -3.8% 1.04x
DictionaryCompactMapValues.o 14133 13632 -3.5% 1.04x
ArrayLiteral.o 3189 3077 -3.5% 1.04x
RandomShuffle.o 3799 3669 -3.4% 1.04x
Walsh.o 5796 5600 -3.4% 1.03x
BinaryFloatingPointProperties.o 7412 7170 -3.3% 1.03x
RomanNumbers.o 8602 8329 -3.2% 1.03x
CString.o 8072 7818 -3.1% 1.03x
DictionaryGroup.o 14319 13870 -3.1% 1.03x
RemoveWhere.o 24294 23543 -3.1% 1.03x
Ackermann.o 1957 1898 -3.0% 1.03x
WordCount.o 40957 39762 -2.9% 1.03x
Prims.o 14192 13792 -2.8% 1.03x
ArrayInClass.o 4548 4421 -2.8% 1.03x
DictTest3.o 13945 13570 -2.7% 1.03x
MonteCarloE.o 3762 3662 -2.7% 1.03x
SortIntPyramids.o 12921 12584 -2.6% 1.03x
NSDictionaryCastToSwift.o 1722 1678 -2.6% 1.03x
PrimsSplit.o 14262 13898 -2.6% 1.03x
SequenceAlgos.o 20381 19875 -2.5% 1.03x
StringRemoveDupes.o 4857 4737 -2.5% 1.03x
ArrayOfPOD.o 2761 2695 -2.4% 1.02x
Histogram.o 1920 1876 -2.3% 1.02x
BucketSort.o 11415 11159 -2.2% 1.02x
StringEdits.o 12358 12092 -2.2% 1.02x
SuperChars.o 1600 1566 -2.1% 1.02x
UTF8Decode.o 11089 10856 -2.1% 1.02x
ArrayAppend.o 31507 30850 -2.1% 1.02x
DriverUtils.o 134806 132038 -2.1% 1.02x
ClassArrayGetter.o 5753 5636 -2.0% 1.02x
FloatingPointParsing.o 15258 14950 -2.0% 1.02x
PopFrontGeneric.o 4759 4665 -2.0% 1.02x
COWTree.o 13592 13324 -2.0% 1.02x
Join.o 2549 2499 -2.0% 1.02x
Chars.o 1741 1707 -2.0% 1.02x
DiffingMyers.o 9176 8998 -1.9% 1.02x
ObjectiveCBridging.o 54698 53654 -1.9% 1.02x
Hash.o 19905 19527 -1.9% 1.02x
ObserverPartiallyAppliedMethod.o 3911 3837 -1.9% 1.02x
DictionarySwap.o 16745 16437 -1.8% 1.02x
RangeIteration.o 1770 1738 -1.8% 1.02x
DictionaryCopy.o 7861 7719 -1.8% 1.02x
Phonebook.o 12298 12077 -1.8% 1.02x
StaticArray.o 12703 12476 -1.8% 1.02x
NibbleSort.o 14366 14112 -1.8% 1.02x
DictionaryRemove.o 11067 10873 -1.8% 1.02x
PointerArithmetics.o 1864 1832 -1.7% 1.02x
RGBHistogram.o 23177 22808 -1.6% 1.02x
SortLettersInPlace.o 9054 8911 -1.6% 1.02x
MapReduce.o 26074 25675 -1.5% 1.02x
TwoSum.o 3077 3030 -1.5% 1.02x
RangeAssignment.o 5018 4944 -1.5% 1.01x
CSVParsing.o 60543 59684 -1.4% 1.01x
Codable.o 26643 26267 -1.4% 1.01x
StringEnum.o 13109 12937 -1.3% 1.01x
ArrayOfRef.o 13091 12920 -1.3% 1.01x
ObserverClosure.o 3557 3513 -1.2% 1.01x
LuhnAlgoLazy.o 13588 13434 -1.1% 1.01x
LuhnAlgoEager.o 13590 13436 -1.1% 1.01x
ObjectiveCNoBridgingStubs.o 8495 8400 -1.1% 1.01x
ObserverUnappliedMethod.o 5354 5296 -1.1% 1.01x
StringWalk.o 34906 34535 -1.1% 1.01x
StringMatch.o 4577 4530 -1.0% 1.01x

Performance: -Onone

Regression OLD NEW DELTA RATIO
ObjectiveCBridgeStringHash 41 45 +9.8% 0.91x (?)
ArrayOfPOD 662 726 +9.7% 0.91x (?)
BitCount 2780 2994 +7.7% 0.93x (?)
 
Improvement OLD NEW DELTA RATIO
UTF8Decode_InitDecoding 145 134 -7.6% 1.08x (?)
Ackermann 1047 968 -7.5% 1.08x (?)

Code size: -swiftlibs

Regression OLD NEW DELTA RATIO
libswiftAccelerate.dylib 237568 253952 +6.9% 0.94x
libswiftSwiftLang.dylib 90112 94208 +4.5% 0.96x
 
Improvement OLD NEW DELTA RATIO
libswiftMetal.dylib 40960 36864 -10.0% 1.11x
libswiftXCTest.dylib 73728 69632 -5.6% 1.06x
libswiftFoundation.dylib 1585152 1523712 -3.9% 1.04x
libswiftStdlibUnittest.dylib 348160 335872 -3.5% 1.04x
How to read the data The tables contain differences in performance which are larger than 8% and differences in code size which are larger than 1%.

If you see any unexpected regressions, you should consider fixing the
regressions before you merge the PR.

Noise: Sometimes the performance results (not code size!) contain false
alarms. Unexpected regressions which are marked with '(?)' are probably noise.
If you see regressions which you cannot explain you can try to run the
benchmarks again. If regressions still show up, please consult with the
performance team (@eeckstein).

Hardware Overview
  Model Name: Mac mini
  Model Identifier: Macmini8,1
  Processor Name: Intel Core i7
  Processor Speed: 3.2 GHz
  Number of Processors: 1
  Total Number of Cores: 6
  L2 Cache (per Core): 256 KB
  L3 Cache: 12 MB
  Memory: 64 GB

@jckarter
Copy link
Contributor Author

jckarter commented Aug 1, 2019

The performance numbers look reasonable to my untrained eye; the ones that are out of the 1x band all look too variable to get much signal from. @palimondo would you agree?

@swift-ci
Copy link
Contributor

swift-ci commented Aug 1, 2019

Build failed
Swift Test OS X Platform
Git Sha - 84c0ba9a80b45e866ee3d4ed16fd3af18108dd72

@jckarter jckarter force-pushed the type-metadata-by-mangled-name branch from 84c0ba9 to a70df24 Compare August 1, 2019 23:17
@jckarter
Copy link
Contributor Author

jckarter commented Aug 1, 2019

@swift-ci Please test

@jckarter
Copy link
Contributor Author

jckarter commented Aug 1, 2019

@swift-ci Please test source compatibility

@jckarter
Copy link
Contributor Author

jckarter commented Aug 1, 2019

@swift-ci Please test compiler performance

@swift-ci
Copy link
Contributor

swift-ci commented Aug 1, 2019

Build failed
Swift Test OS X Platform
Git Sha - 84c0ba9a80b45e866ee3d4ed16fd3af18108dd72

@swift-ci
Copy link
Contributor

swift-ci commented Aug 1, 2019

Build failed
Swift Test Linux Platform
Git Sha - 84c0ba9a80b45e866ee3d4ed16fd3af18108dd72

@jckarter jckarter force-pushed the type-metadata-by-mangled-name branch from a70df24 to 2dd6697 Compare August 2, 2019 00:25
@jckarter
Copy link
Contributor Author

jckarter commented Aug 2, 2019

@swift-ci Please test

@jckarter
Copy link
Contributor Author

jckarter commented Aug 2, 2019

@swift-ci Please test source compatibility

@swift-ci
Copy link
Contributor

swift-ci commented Aug 2, 2019

Build failed
Swift Test Linux Platform
Git Sha - a70df24a353bad60838e6f12ad68212c7b00118a

@swift-ci
Copy link
Contributor

swift-ci commented Aug 2, 2019

Build failed
Swift Test OS X Platform
Git Sha - a70df24a353bad60838e6f12ad68212c7b00118a

@jckarter
Copy link
Contributor Author

jckarter commented Aug 2, 2019

@swift-ci Please test compiler performance

@jckarter
Copy link
Contributor Author

jckarter commented Aug 2, 2019

@swift-ci Please test Linux

@jckarter jckarter force-pushed the type-metadata-by-mangled-name branch from 2dd6697 to 1dfaa02 Compare August 2, 2019 03:33
@jckarter
Copy link
Contributor Author

jckarter commented Aug 2, 2019

@swift-ci Please benchmark

@jckarter
Copy link
Contributor Author

jckarter commented Aug 2, 2019

@swift-ci Please test source compatibility

@swift-ci
Copy link
Contributor

swift-ci commented Aug 2, 2019

Performance: -O

Regression OLD NEW DELTA RATIO
PrefixArrayLazy 15 26 +73.3% 0.58x
MapReduce 193 236 +22.3% 0.82x
DataCountSmall 10 12 +20.0% 0.83x (?)
ArraySetElement 240 283 +17.9% 0.85x
ClosedRangeOverlapsClosedRange 41 48 +17.1% 0.85x (?)
DataSubscriptSmall 13 15 +15.4% 0.87x (?)
DataCountMedium 13 15 +15.4% 0.87x
PrefixWhileAnyCollectionLazy 34 39 +14.7% 0.87x (?)
SequenceAlgosContiguousArray 1150 1310 +13.9% 0.88x (?)
FlattenListLoop 2274 2584 +13.6% 0.88x (?)
ObjectiveCBridgeStubNSDateRefAccess 174 196 +12.6% 0.89x (?)
ProtocolDispatch 174 196 +12.6% 0.89x
Set.subtracting.Empty.Box 8 9 +12.5% 0.89x
DropLastAnySequence 298 333 +11.7% 0.89x (?)
MapReduceAnyCollection 194 215 +10.8% 0.90x (?)
OpenClose 56 61 +8.9% 0.92x (?)
SuffixSequence 291 316 +8.6% 0.92x (?)
SuffixSequenceLazy 291 316 +8.6% 0.92x (?)
PrefixArray 13 14 +7.7% 0.93x (?)
 
Improvement OLD NEW DELTA RATIO
DropFirstSequence 44 29 -34.1% 1.52x
DropFirstSequenceLazy 44 29 -34.1% 1.52x
DropWhileArray 35 24 -31.4% 1.46x
DropWhileCountableRangeLazy 58 44 -24.1% 1.32x
Dictionary4 199 156 -21.6% 1.28x
ReversedArray2 109 89 -18.3% 1.22x
Dictionary4OfObjects 236 197 -16.5% 1.20x (?)
ParseInt.Small.UncommonRadix 221 185 -16.3% 1.19x (?)
DropWhileAnySeqCntRange 50 43 -14.0% 1.16x
ParseInt.Small.Binary 322 283 -12.1% 1.14x
Set.isDisjoint.Empty.Box 101 89 -11.9% 1.13x
Set.isDisjoint.Seq.Empty.Box 88 78 -11.4% 1.13x
StrComplexWalk 2080 1870 -10.1% 1.11x
UTF8Decode_InitDecoding 123 111 -9.8% 1.11x (?)
ParseInt.Small.Decimal 196 177 -9.7% 1.11x (?)
ArrayAppendLatin1Substring 11700 10584 -9.5% 1.11x (?)
ArrayAppendUTF16Substring 11484 10404 -9.4% 1.10x (?)
ArrayAppendAsciiSubstring 11484 10404 -9.4% 1.10x (?)
PointerArithmetics 23900 21700 -9.2% 1.10x
ParseInt.Small.Hex 210 191 -9.0% 1.10x (?)
SortLettersInPlace 412 376 -8.7% 1.10x (?)
DataAccessBytesMedium 47 43 -8.5% 1.09x (?)
Set.isDisjoint.Box.Empty 104 96 -7.7% 1.08x (?)
MapReduceLazyCollectionShort 28 26 -7.1% 1.08x (?)

Code size: -O

Regression OLD NEW DELTA RATIO
ProtocolDispatch.o 765 820 +7.2% 0.93x
TypeFlood.o 903 963 +6.6% 0.94x
CaptureProp.o 906 963 +6.3% 0.94x
CharacterLiteralsLarge.o 883 938 +6.2% 0.94x
Radix2CooleyTukey.o 5215 5516 +5.8% 0.95x
ArraySetElement.o 1135 1195 +5.3% 0.95x
Sim2DArray.o 1207 1267 +5.0% 0.95x
CharacterLiteralsSmall.o 1324 1386 +4.7% 0.96x
SuperChars.o 1462 1526 +4.4% 0.96x
NSError.o 1294 1348 +4.2% 0.96x
IterateData.o 1693 1763 +4.1% 0.96x
RecursiveOwnedParameter.o 1382 1437 +4.0% 0.96x
Chars.o 1619 1683 +4.0% 0.96x
RangeIteration.o 1684 1748 +3.8% 0.96x
InsertCharacter.o 5144 5336 +3.7% 0.96x
RandomValues.o 2894 2991 +3.4% 0.97x
CharacterProperties.o 19292 19827 +2.8% 0.97x
OpaqueConsumingUsers.o 2046 2095 +2.4% 0.98x
Fibonacci.o 1612 1650 +2.4% 0.98x
PointerArithmetics.o 1759 1799 +2.3% 0.98x
BitCount.o 1876 1914 +2.0% 0.98x
ArrayOfPOD.o 2385 2431 +1.9% 0.98x
NIOChannelPipeline.o 4357 4441 +1.9% 0.98x
XorLoop.o 2012 2050 +1.9% 0.98x
MonteCarloPi.o 1593 1623 +1.9% 0.98x
AnyHashableWithAClass.o 2979 3034 +1.8% 0.98x
Hanoi.o 3528 3593 +1.8% 0.98x
ErrorHandling.o 2969 3023 +1.8% 0.98x
ChainedFilterMap.o 2669 2717 +1.8% 0.98x
DictionaryLiteral.o 1251 1273 +1.8% 0.98x
FloatingPointPrinting.o 5927 6024 +1.6% 0.98x
OpenClose.o 3218 3270 +1.6% 0.98x
PolymorphicCalls.o 8544 8678 +1.6% 0.98x
Exclusivity.o 4420 4485 +1.5% 0.99x
SevenBoom.o 1642 1664 +1.3% 0.99x
ByteSwap.o 1652 1674 +1.3% 0.99x
Join.o 2272 2302 +1.3% 0.99x
Memset.o 2148 2176 +1.3% 0.99x
ProtocolDispatch2.o 1740 1762 +1.3% 0.99x
Ackermann.o 1884 1906 +1.2% 0.99x
DeadArray.o 1892 1914 +1.2% 0.99x
ArrayInClass.o 4079 4126 +1.2% 0.99x
PopFront.o 5181 5237 +1.1% 0.99x
StringBuilder.o 7716 7796 +1.0% 0.99x
 
Improvement OLD NEW DELTA RATIO
ArrayOfGenericRef.o 15077 11867 -21.3% 1.27x
DictOfArraysToArrayOfDicts.o 29949 27160 -9.3% 1.10x
DictionaryGroup.o 18235 16643 -8.7% 1.10x
Prefix.o 23544 21506 -8.7% 1.09x
RangeOverlaps.o 10767 9912 -7.9% 1.09x
DropWhile.o 23363 21601 -7.5% 1.08x
Array2D.o 4495 4156 -7.5% 1.08x
ReversedCollections.o 11491 10698 -6.9% 1.07x
RC4.o 4068 3816 -6.2% 1.07x
LazyFilter.o 11092 10431 -6.0% 1.06x
FlattenList.o 6279 5918 -5.7% 1.06x
Combos.o 7232 6834 -5.5% 1.06x
DropFirst.o 23731 22445 -5.4% 1.06x
BucketSort.o 11618 11047 -4.9% 1.05x
DictTest.o 20601 19600 -4.9% 1.05x
PrefixWhile.o 21565 20525 -4.8% 1.05x
DictTest2.o 15528 14784 -4.8% 1.05x
NopDeinit.o 5664 5424 -4.2% 1.04x
DropLast.o 25410 24374 -4.1% 1.04x
DictionarySubscriptDefault.o 28778 27622 -4.0% 1.04x
Suffix.o 25184 24204 -3.9% 1.04x
Diffing.o 9134 8795 -3.7% 1.04x
RGBHistogram.o 27738 26780 -3.5% 1.04x
UTF8Decode.o 13034 12598 -3.3% 1.03x
DictionaryCompactMapValues.o 18939 18335 -3.2% 1.03x
DictTest3.o 22776 22064 -3.1% 1.03x
DictionarySwap.o 21986 21317 -3.0% 1.03x
CString.o 8272 8034 -2.9% 1.03x
WordCount.o 45164 43870 -2.9% 1.03x
DictTest4Legacy.o 24640 23947 -2.8% 1.03x
DictionaryRemove.o 16472 16031 -2.7% 1.03x
DriverUtils.o 155317 151207 -2.6% 1.03x
StringEdits.o 12151 11845 -2.5% 1.03x
ArraySubscript.o 3764 3670 -2.5% 1.03x
SetTests.o 153118 149315 -2.5% 1.03x
ArrayAppend.o 34955 34138 -2.3% 1.02x
DictTest4.o 23400 22892 -2.2% 1.02x
ObserverClosure.o 3247 3180 -2.1% 1.02x
ObserverPartiallyAppliedMethod.o 3535 3467 -1.9% 1.02x
COWTree.o 13042 12794 -1.9% 1.02x
CSVParsing.o 60559 59416 -1.9% 1.02x
Prims.o 16984 16674 -1.8% 1.02x
ArrayOfRef.o 12379 12161 -1.8% 1.02x
PrimsSplit.o 17054 16762 -1.7% 1.02x
TwoSum.o 5508 5414 -1.7% 1.02x
ClassArrayGetter.o 5715 5618 -1.7% 1.02x
SortIntPyramids.o 12453 12263 -1.5% 1.02x
ArrayOfGenericPOD.o 4041 3983 -1.4% 1.01x
Codable.o 26675 26313 -1.4% 1.01x
LuhnAlgoLazy.o 10860 10718 -1.3% 1.01x
LuhnAlgoEager.o 10862 10720 -1.3% 1.01x
Breadcrumbs.o 45437 44858 -1.3% 1.01x
SequenceAlgos.o 20405 20159 -1.2% 1.01x
BinaryFloatingPointProperties.o 7580 7490 -1.2% 1.01x
Histogram.o 4171 4124 -1.1% 1.01x
StringRemoveDupes.o 7552 7467 -1.1% 1.01x
DictionaryCopy.o 10933 10817 -1.1% 1.01x
AngryPhonebook.o 10251 10146 -1.0% 1.01x
StringInterpolation.o 7339 7265 -1.0% 1.01x

Performance: -Osize

Regression OLD NEW DELTA RATIO
SuffixArray 4 9 +125.0% 0.44x
PrefixWhileCountableRangeLazy 15 26 +73.3% 0.58x (?)
DropLastCountableRange 6 9 +50.0% 0.67x
DropLastCountableRangeLazy 6 9 +50.0% 0.67x
DropFirstSequence 33 49 +48.5% 0.67x
DropFirstSequenceLazy 33 49 +48.5% 0.67x
DropWhileArray 24 35 +45.8% 0.69x
DropWhileAnyCollection 81 112 +38.3% 0.72x
PrefixWhileArray 40 53 +32.5% 0.75x
SuffixAnyCollection 28 37 +32.1% 0.76x
PrefixWhileAnyCollection 99 130 +31.3% 0.76x
DropWhileCountableRangeLazy 45 58 +28.9% 0.78x (?)
RemoveWhereMoveInts 18 22 +22.2% 0.82x (?)
MapReduce 215 258 +20.0% 0.83x
DropFirstAnyCollection 88 105 +19.3% 0.84x (?)
ObjectiveCBridgeStubDateAccess 130 152 +16.9% 0.86x
DataSubscriptSmall 13 15 +15.4% 0.87x
ArrayOfPOD 333 380 +14.1% 0.88x (?)
PrefixCountableRange 15 17 +13.3% 0.88x (?)
DataCountMedium 15 17 +13.3% 0.88x
RandomShuffleLCG2 368 416 +13.0% 0.88x (?)
Array2D 3456 3904 +13.0% 0.89x
FlattenListLoop 2171 2443 +12.5% 0.89x (?)
PrefixWhileAnySeqCRangeIter 187 210 +12.3% 0.89x (?)
PrefixWhileAnySeqCntRange 187 210 +12.3% 0.89x (?)
MapReduceAnyCollection 237 259 +9.3% 0.92x (?)
ArraySetElement 262 283 +8.0% 0.93x (?)
RangeOverlapsClosedRange 51 55 +7.8% 0.93x (?)
 
Improvement OLD NEW DELTA RATIO
DropFirstArray 26 13 -50.0% 2.00x
PrefixCountableRangeLazy 26 14 -46.2% 1.86x
PrefixArrayLazy 26 14 -46.2% 1.86x
DropWhileCountableRange 31 19 -38.7% 1.63x
SuffixCountableRange 9 6 -33.3% 1.50x
PrefixAnyCollection 103 72 -30.1% 1.43x
DropLastAnyCollection 37 28 -24.3% 1.32x
DataCountSmall 13 10 -23.1% 1.30x (?)
ArrayAppendSequence 850 670 -21.2% 1.27x (?)
Dictionary4 204 163 -20.1% 1.25x (?)
DataCreateEmpty 100 80 -20.0% 1.25x
DropFirstAnySeqCRangeIterLazy 127 103 -18.9% 1.23x
ClosedRangeOverlapsClosedRange 48 41 -14.6% 1.17x (?)
PrefixWhileAnyCollectionLazy 94 81 -13.8% 1.16x (?)
PrefixWhileAnySeqCRangeIterLazy 94 81 -13.8% 1.16x
PrefixWhileAnySeqCntRangeLazy 94 81 -13.8% 1.16x
BitCount 168 146 -13.1% 1.15x (?)
ParseInt.Small.UncommonRadix 215 187 -13.0% 1.15x
ParseInt.Small.Decimal 201 175 -12.9% 1.15x (?)
Set.isDisjoint.Seq.Empty.Box 101 89 -11.9% 1.13x (?)
Set.isSubset.Empty.Int 133 118 -11.3% 1.13x (?)
Set.isDisjoint.Seq.Empty.Int 98 87 -11.2% 1.13x
Set.isDisjoint.Empty.Int 98 87 -11.2% 1.13x (?)
UTF8Decode_InitDecoding 126 112 -11.1% 1.12x
Set.subtracting.Empty.Box 9 8 -11.1% 1.12x
PointerArithmetics 19500 17400 -10.8% 1.12x (?)
DropWhileAnySeqCRangeIterLazy 131 117 -10.7% 1.12x
ParseInt.Small.Hex 214 194 -9.3% 1.10x (?)
CharIteration_punctuated_unicodeScalars 440 400 -9.1% 1.10x
Set.isSuperset.Seq.Empty.Int 57 52 -8.8% 1.10x (?)
CaptureProp 2810 2570 -8.5% 1.09x (?)
CharIteration_ascii_unicodeScalars 1880 1720 -8.5% 1.09x (?)
Set.isStrictSubset.Int.Empty 62 57 -8.1% 1.09x
Set.isStrictSubset.Seq.Int.Empty 137 126 -8.0% 1.09x (?)
IterateData 899 829 -7.8% 1.08x (?)
SetIsSubsetInt0 212 196 -7.5% 1.08x
CharIteration_tweet_unicodeScalars 3720 3440 -7.5% 1.08x (?)
ParseFloat.Float.Exp 14 13 -7.1% 1.08x (?)
Set.isDisjoint.Box.Empty 115 107 -7.0% 1.07x (?)

Code size: -Osize

Regression OLD NEW DELTA RATIO
Radix2CooleyTukey.o 4948 5236 +5.8% 0.94x
IterateData.o 1741 1811 +4.0% 0.96x
TypeFlood.o 972 1011 +4.0% 0.96x
CharacterLiteralsLarge.o 948 986 +4.0% 0.96x
CaptureProp.o 1101 1139 +3.5% 0.97x
CharacterLiteralsSmall.o 1428 1466 +2.7% 0.97x
ProtocolDispatch.o 846 868 +2.6% 0.97x
NSError.o 1662 1700 +2.3% 0.98x
CharacterProperties.o 19612 20035 +2.2% 0.98x
RecursiveOwnedParameter.o 1313 1336 +1.8% 0.98x
StackPromo.o 1931 1962 +1.6% 0.98x
InsertCharacter.o 4751 4815 +1.3% 0.99x
BitCount.o 1634 1656 +1.3% 0.99x
Fibonacci.o 1642 1664 +1.3% 0.99x
PolymorphicCalls.o 7968 8070 +1.3% 0.99x
AnyHashableWithAClass.o 3211 3250 +1.2% 0.99x
SevenBoom.o 1816 1838 +1.2% 0.99x
 
Improvement OLD NEW DELTA RATIO
DropWhile.o 22236 19588 -11.9% 1.14x
ReversedCollections.o 9850 8695 -11.7% 1.13x
Array2D.o 4594 4107 -10.6% 1.12x
DropFirst.o 21596 19553 -9.5% 1.10x
COWArrayGuaranteedParameterOverhead.o 1467 1334 -9.1% 1.10x
Prefix.o 21345 19471 -8.8% 1.10x
DictionaryLiteral.o 995 921 -7.4% 1.08x
PrefixWhile.o 20222 18814 -7.0% 1.07x
ArraySubscript.o 4067 3796 -6.7% 1.07x
DictOfArraysToArrayOfDicts.o 26541 24882 -6.3% 1.07x
DropLast.o 23762 22322 -6.1% 1.06x
ArrayOfGenericPOD.o 4291 4033 -6.0% 1.06x
Combos.o 7792 7330 -5.9% 1.06x
FlattenList.o 6679 6286 -5.9% 1.06x
Suffix.o 23640 22320 -5.6% 1.06x
RangeOverlaps.o 11775 11140 -5.4% 1.06x
ArrayOfGenericRef.o 13709 12979 -5.3% 1.06x
LazyFilter.o 8905 8432 -5.3% 1.06x
ArrayInClass.o 4548 4333 -4.7% 1.05x
DictionarySubscriptDefault.o 18890 18012 -4.6% 1.05x
ArraySetElement.o 1309 1251 -4.4% 1.05x
DictTest2.o 9689 9266 -4.4% 1.05x
Memset.o 2098 2008 -4.3% 1.04x
RC4.o 3586 3436 -4.2% 1.04x
ChainedFilterMap.o 3493 3349 -4.1% 1.04x
DictionaryBridgeToObjC.o 4619 4429 -4.1% 1.04x
Sim2DArray.o 1421 1363 -4.1% 1.04x
XorLoop.o 2082 2000 -3.9% 1.04x
DictTest.o 12409 11935 -3.8% 1.04x
ArrayLiteral.o 3189 3077 -3.5% 1.04x
RandomShuffle.o 3799 3669 -3.4% 1.04x
Walsh.o 5796 5600 -3.4% 1.03x
ObserverPartiallyAppliedMethod.o 3911 3779 -3.4% 1.03x
BinaryFloatingPointProperties.o 7412 7170 -3.3% 1.03x
RomanNumbers.o 8602 8329 -3.2% 1.03x
DictionaryCompactMapValues.o 14133 13686 -3.2% 1.03x
CString.o 8072 7818 -3.1% 1.03x
DictionaryGroup.o 14319 13870 -3.1% 1.03x
Prims.o 14192 13752 -3.1% 1.03x
RemoveWhere.o 24294 23543 -3.1% 1.03x
ObserverClosure.o 3557 3449 -3.0% 1.03x
Ackermann.o 1957 1898 -3.0% 1.03x
ClassArrayGetter.o 5753 5580 -3.0% 1.03x
WordCount.o 40957 39762 -2.9% 1.03x
PrimsSplit.o 14262 13852 -2.9% 1.03x
LinkedList.o 2313 2248 -2.8% 1.03x
DictTest3.o 13945 13570 -2.7% 1.03x
MonteCarloE.o 3762 3662 -2.7% 1.03x
UTF8Decode.o 11089 10798 -2.6% 1.03x
SortIntPyramids.o 12921 12584 -2.6% 1.03x
SequenceAlgos.o 20381 19875 -2.5% 1.03x
StringRemoveDupes.o 4857 4737 -2.5% 1.03x
ArrayOfPOD.o 2761 2695 -2.4% 1.02x
DiffingMyers.o 9176 8960 -2.4% 1.02x
Histogram.o 1920 1876 -2.3% 1.02x
SortLettersInPlace.o 9054 8849 -2.3% 1.02x
BucketSort.o 11415 11159 -2.2% 1.02x
Hash.o 19905 19473 -2.2% 1.02x
StringEdits.o 12358 12092 -2.2% 1.02x
SuperChars.o 1600 1566 -2.1% 1.02x
ObjectiveCBridging.o 54698 53554 -2.1% 1.02x
ArrayAppend.o 31507 30850 -2.1% 1.02x
DriverUtils.o 134806 132062 -2.0% 1.02x
Codable.o 26643 26105 -2.0% 1.02x
FloatingPointParsing.o 15258 14950 -2.0% 1.02x
PopFrontGeneric.o 4759 4665 -2.0% 1.02x
COWTree.o 13592 13324 -2.0% 1.02x
Join.o 2549 2499 -2.0% 1.02x
Chars.o 1741 1707 -2.0% 1.02x
RangeIteration.o 1770 1738 -1.8% 1.02x
Phonebook.o 12298 12077 -1.8% 1.02x
DictionaryKeysContains.o 8156 8010 -1.8% 1.02x
ArrayOfRef.o 13091 12857 -1.8% 1.02x
StaticArray.o 12703 12476 -1.8% 1.02x
NibbleSort.o 14366 14112 -1.8% 1.02x
MapReduce.o 26074 25621 -1.7% 1.02x
PointerArithmetics.o 1864 1832 -1.7% 1.02x
RGBHistogram.o 23177 22808 -1.6% 1.02x
TwoSum.o 3077 3030 -1.5% 1.02x
DictionarySwap.o 16745 16491 -1.5% 1.02x
RangeAssignment.o 5018 4944 -1.5% 1.01x
Breadcrumbs.o 43782 43137 -1.5% 1.01x
ObserverUnappliedMethod.o 5354 5276 -1.5% 1.01x
CSVParsing.o 60543 59684 -1.4% 1.01x
StringEnum.o 13109 12937 -1.3% 1.01x
DictionaryRemove.o 11067 10939 -1.2% 1.01x
LuhnAlgoLazy.o 13588 13434 -1.1% 1.01x
LuhnAlgoEager.o 13590 13436 -1.1% 1.01x
DictionaryCopy.o 7861 7773 -1.1% 1.01x
StringWalk.o 34906 34535 -1.1% 1.01x
AngryPhonebook.o 9869 9765 -1.1% 1.01x
StringMatch.o 4577 4530 -1.0% 1.01x

Performance: -Onone

Regression OLD NEW DELTA RATIO
ObjectiveCBridgeStubDateMutation 305 370 +21.3% 0.82x
ArrayOfPOD 657 722 +9.9% 0.91x (?)
DataSubscriptMedium 43 47 +9.3% 0.91x (?)
ObjectiveCBridgeStubFromNSDateRef 2480 2690 +8.5% 0.92x (?)
 
Improvement OLD NEW DELTA RATIO
UTF8Decode_InitDecoding 145 130 -10.3% 1.12x (?)

Code size: -swiftlibs

Regression OLD NEW DELTA RATIO
libswiftAccelerate.dylib 237568 253952 +6.9% 0.94x
libswiftSwiftLang.dylib 90112 94208 +4.5% 0.96x
 
Improvement OLD NEW DELTA RATIO
libswiftFoundation.dylib 1585152 1544192 -2.6% 1.03x
libswiftStdlibUnittest.dylib 348160 339968 -2.4% 1.02x
How to read the data The tables contain differences in performance which are larger than 8% and differences in code size which are larger than 1%.

If you see any unexpected regressions, you should consider fixing the
regressions before you merge the PR.

Noise: Sometimes the performance results (not code size!) contain false
alarms. Unexpected regressions which are marked with '(?)' are probably noise.
If you see regressions which you cannot explain you can try to run the
benchmarks again. If regressions still show up, please consult with the
performance team (@eeckstein).

Hardware Overview
  Model Name: Mac mini
  Model Identifier: Macmini8,1
  Processor Name: Intel Core i7
  Processor Speed: 3.2 GHz
  Number of Processors: 1
  Total Number of Cores: 6
  L2 Cache (per Core): 256 KB
  L3 Cache: 12 MB
  Memory: 64 GB

@palimondo
Copy link
Contributor

palimondo commented Aug 2, 2019

That’s a lot of numbers from the benchmarks! At first glance: The most recent run (after the force-push) looks much less intrusive than the first two. Should I look more closely?

@palimondo
Copy link
Contributor

The regression in -O benchmark PrefixArrayLazy concerns me. Could you have a closer look there, please?

@palimondo
Copy link
Contributor

Also the regressions and improvements in-Osize benchmarks for sequence operations (Drop*, Prefix*, Suffix*) seems to indicate the heuristic needs more tuning?

@jckarter
Copy link
Contributor Author

jckarter commented Aug 2, 2019

@palimondo PrefixArrayLazy also seems noisy to me, since it didn't show up at all in the first benchmark run (against identical code), and in the second run, it's both 0.58x slower at -O and 1.86x faster at -Osize, when the difference in optimization passes should not make that much of a difference. (I also wouldn't expect this to make anything faster at all, really.)

@jckarter
Copy link
Contributor Author

jckarter commented Aug 2, 2019

Source compat failure in RxSwift looks unrelated:

CompileSwift normal x86_64 /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/macOS/NSTextView+Rx.swift (in target 'RxCocoa' from project 'Rx')
    cd /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift
    /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/build/compat_macos/install/toolchain/usr/bin/swift -frontend -c /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UISlider+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UIScrollView+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/macOS/NSSlider+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UIPickerView+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Foundation/Logging.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UIWebView+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/macOS/NSControl+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Common/DelegateProxyType.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Common/RxTarget.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UITextView+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/DataSources/RxTableViewReactiveArrayDataSource.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Traits/Driver/BehaviorRelay+Driver.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/Proxies/RxCollectionViewDataSourceProxy.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Traits/SharedSequence/SchedulerType+SharedSequence.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/Proxies/RxTextStorageDelegateProxy.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Traits/Driver/Driver.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/Proxies/RxTableViewDelegateProxy.swift -primary-file /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/macOS/NSTextView+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UIRefreshControl+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UIStepper+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Traits/Signal/ObservableConvertibleType+Signal.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Traits/ControlEvent.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Traits/Signal/ControlEvent+Signal.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UIImageView+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/Proxies/RxPickerViewDataSourceProxy.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UIControl+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Common/Binder.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Common/SectionedViewDataSourceType.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/Proxies/RxCollectionViewDataSourcePrefetchingProxy.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UISearchController+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/macOS/NSImageView+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UITableView+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Common/RxCocoaObjCRuntimeError+Extensions.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/DataSources/RxCollectionViewReactiveArrayDataSource.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Foundation/URLSession+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/Proxies/RxSearchControllerDelegateProxy.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/Proxies/RxCollectionViewDelegateProxy.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UIAlertAction+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/Proxies/RxScrollViewDelegateProxy.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Foundation/KVORepresentable.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Common/TextInput.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UILabel+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Traits/Driver/ControlEvent+Driver.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Traits/Driver/Driver+Subscription.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UINavigationItem+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UIPageControl+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/Proxies/RxSearchBarDelegateProxy.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/Protocols/RxPickerViewDataSourceType.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Traits/Signal/Signal+Subscription.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Common/KeyPathBinder.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UITabBarItem+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UIApplication+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/Proxies/RxPickerViewDelegateProxy.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/RxCocoa.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Traits/SharedSequence/SharedSequence.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Traits/SharedSequence/SharedSequence+Operators+arity.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UITabBarController+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Foundation/NSObject+Rx+RawRepresentable.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UIView+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/DataSources/RxPickerViewAdapter.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Foundation/KVORepresentable+CoreGraphics.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Common/Observable+Bind.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Deprecated.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UISegmentedControl+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UIProgressView+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UIViewController+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/macOS/NSButton+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/macOS/NSTextField+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Traits/Signal/PublishRelay+Signal.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Traits/Signal/Signal.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/macOS/NSView+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UIButton+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Traits/SharedSequence/ObservableConvertibleType+SharedSequence.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Traits/ControlProperty.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/Proxies/RxTabBarControllerDelegateProxy.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Traits/SharedSequence/SharedSequence+Operators.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UIActivityIndicatorView+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/NSTextStorage+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/Proxies/RxTextViewDelegateProxy.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Foundation/KVORepresentable+Swift.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Traits/Driver/ObservableConvertibleType+Driver.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/Proxies/RxNavigationControllerDelegateProxy.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UIBarButtonItem+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Foundation/NSObject+Rx+KVORepresentable.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UIDatePicker+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/Proxies/RxTableViewDataSourceProxy.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Common/NSLayoutConstraint+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UIGestureRecognizer+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Traits/Driver/ControlProperty+Driver.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Common/DelegateProxy.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Foundation/NSObject+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UINavigationController+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UITabBar+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/Proxies/RxTabBarDelegateProxy.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UISwitch+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UICollectionView+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/Protocols/RxCollectionViewDataSourceType.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Platform/DispatchQueue+Extensions.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UITextField+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/Proxies/RxWebViewDelegateProxy.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/UISearchBar+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Foundation/NotificationCenter+Rx.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/Events/ItemEvents.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/Common/ControlTarget.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/Protocols/RxTableViewDataSourceType.swift /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/iOS/Proxies/RxTableViewDataSourcePrefetchingProxy.swift -emit-module-path /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/build/Build/Intermediates.noindex/Rx.build/Debug/RxCocoa.build/Objects-normal/x86_64/NSTextView+Rx\~partial.swiftmodule -emit-module-doc-path /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/build/Build/Intermediates.noindex/Rx.build/Debug/RxCocoa.build/Objects-normal/x86_64/NSTextView+Rx\~partial.swiftdoc -serialize-diagnostics-path /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/build/Build/Intermediates.noindex/Rx.build/Debug/RxCocoa.build/Objects-normal/x86_64/NSTextView+Rx.dia -emit-dependencies-path /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/build/Build/Intermediates.noindex/Rx.build/Debug/RxCocoa.build/Objects-normal/x86_64/NSTextView+Rx.d -emit-reference-dependencies-path /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/build/Build/Intermediates.noindex/Rx.build/Debug/RxCocoa.build/Objects-normal/x86_64/NSTextView+Rx.swiftdeps -target x86_64-apple-macos10.9 -enable-objc-interop -sdk /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -I /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/build/Build/Products/Debug -F /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/build/Build/Products/Debug -application-extension -enable-testing -g -import-underlying-module -module-cache-path /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/build/ModuleCache.noindex -swift-version 5 -enforce-exclusivity=checked -Onone -D TRACE_RESOURCES -D DEBUG -serialize-debugging-options -enable-anonymous-context-mangled-names -Xcc -I/Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/build/Build/Intermediates.noindex/Rx.build/Debug/RxCocoa.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/build/Build/Intermediates.noindex/Rx.build/Debug/RxCocoa.build/RxCocoa-generated-files.hmap -Xcc -I/Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/build/Build/Intermediates.noindex/Rx.build/Debug/RxCocoa.build/RxCocoa-own-target-headers.hmap -Xcc -I/Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/build/Build/Intermediates.noindex/Rx.build/Debug/RxCocoa.build/RxCocoa-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/build/Build/Intermediates.noindex/Rx.build/Debug/RxCocoa.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/build/Build/Intermediates.noindex/Rx.build/Debug/RxCocoa.build/RxCocoa-project-headers.hmap -Xcc -I/Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/build/Build/Products/Debug/include -Xcc -I/Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/build/Build/Intermediates.noindex/Rx.build/Debug/RxCocoa.build/DerivedSources-normal/x86_64 -Xcc -I/Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/build/Build/Intermediates.noindex/Rx.build/Debug/RxCocoa.build/DerivedSources/x86_64 -Xcc -I/Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/build/Build/Intermediates.noindex/Rx.build/Debug/RxCocoa.build/DerivedSources -Xcc -DDEBUG=1 -Xcc -DTRACE_RESOURCES=1 -Xcc -ivfsoverlay -Xcc /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/build/Build/Intermediates.noindex/Rx.build/Debug/RxCocoa.build/unextended-module-overlay.yaml -Xcc -working-directory/Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift -module-name RxCocoa -o /Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/build/Build/Intermediates.noindex/Rx.build/Debug/RxCocoa.build/Objects-normal/x86_64/NSTextView+Rx.o
/Users/buildnode/jenkins/workspace-private/swift-PR-source-compat-suite-debug/project_cache/RxSwift/RxCocoa/macOS/NSTextView+Rx.swift:20:12: error: 'NSTextView' is incompatible with 'weak' references
    public weak private(set) var textView: NSTextView?
           ^~~~~

@palimondo
Copy link
Contributor

palimondo commented Aug 2, 2019

PrefixArrayLazy also seems noisy to me

I'm looking into it, but my general stance is: there are no noisy benchmarks.
Addendum: there is only wrong measurement process and uncontrolled variables.

@palimondo
Copy link
Contributor

Just to clarify, the first two benchmark runs here were done on identical code, correct? If so, I really have a beef with the run_smoke_bench… I'm working on something to fix that.

@jckarter
Copy link
Contributor Author

jckarter commented Aug 2, 2019

@palimondo Yeah, I ran it twice on the same code to begin with. (For the third one, I was more interested in the code size benchmarks.)

@palimondo
Copy link
Contributor

Did you see anything similarly strange when running benchmarks locally? (Did you use Benchmark_Driver or run_smoke_bench for that?)

@jckarter
Copy link
Contributor Author

jckarter commented Aug 2, 2019

@palimondo I hadn't tried running locally. I'll give that a shot.

@jckarter
Copy link
Contributor Author

jckarter commented Aug 2, 2019

@swift-ci Please benchmark

@swift-ci
Copy link
Contributor

swift-ci commented Aug 2, 2019

Performance: -O

Regression OLD NEW DELTA RATIO
PrefixArray 13 26 +100.0% 0.50x
ProtocolDispatch 174 217 +24.7% 0.80x
ClosedRangeOverlapsClosedRange 41 48 +17.1% 0.85x
CharIndexing_punctuated_unicodeScalars_Backwards 720 840 +16.7% 0.86x (?)
Data.append.Sequence.64kB.Count.I 30 35 +16.7% 0.86x (?)
DataSubscriptSmall 13 15 +15.4% 0.87x
Data.append.Sequence.64kB.Count 30 34 +13.3% 0.88x (?)
ObjectiveCBridgeStubNSDateRefAccess 174 196 +12.6% 0.89x (?)
DataToStringEmpty 450 500 +11.1% 0.90x (?)
ArrayLiteral2 77 85 +10.4% 0.91x (?)
StringToDataSmall 500 550 +10.0% 0.91x (?)
ReversedDictionary2 239 261 +9.2% 0.92x (?)
LazilyFilteredArrayContains 21200 23000 +8.5% 0.92x (?)
DataSetCountSmall 74 80 +8.1% 0.93x
 
Improvement OLD NEW DELTA RATIO
DropFirstSequence 44 33 -25.0% 1.33x
DropFirstSequenceLazy 44 33 -25.0% 1.33x
DropWhileCountableRangeLazy 58 44 -24.1% 1.32x
Dictionary4 199 155 -22.1% 1.28x
DataCreateEmpty 100 80 -20.0% 1.25x
PrefixWhileAnySeqCRangeIterLazy 41 34 -17.1% 1.21x (?)
Dictionary4OfObjects 237 197 -16.9% 1.20x
UTF8Decode_InitDecoding 124 104 -16.1% 1.19x
PrefixWhileAnySeqCntRangeLazy 40 34 -15.0% 1.18x (?)
DropWhileAnySeqCntRange 50 43 -14.0% 1.16x (?)
ParseInt.Small.UncommonRadix 221 191 -13.6% 1.16x
Set.isDisjoint.Empty.Box 101 89 -11.9% 1.13x (?)
PrefixWhileAnySeqCntRange 196 173 -11.7% 1.13x (?)
ParseInt.Small.Binary 323 286 -11.5% 1.13x (?)
Set.isDisjoint.Seq.Empty.Box 88 78 -11.4% 1.13x
PrefixWhileAnySeqCRangeIter 195 173 -11.3% 1.13x
RemoveWhereMoveInts 18 16 -11.1% 1.12x
Data.init.Sequence.2049B.Count.I 85 77 -9.4% 1.10x (?)
ArrayAppendAsciiSubstring 11520 10440 -9.4% 1.10x (?)
ArrayAppendLatin1Substring 11700 10620 -9.2% 1.10x (?)
StrComplexWalk 2070 1880 -9.2% 1.10x
ArrayAppendUTF16Substring 11484 10440 -9.1% 1.10x (?)
StringBuilderLong 930 850 -8.6% 1.09x (?)
DataAccessBytesMedium 47 43 -8.5% 1.09x (?)
Data.init.Sequence.2047B.Count.I 85 78 -8.2% 1.09x (?)
Data.init.Sequence.64kB.Count.I 55 51 -7.3% 1.08x
Data.init.Sequence.64kB.Count 55 51 -7.3% 1.08x (?)
Data.init.Sequence.809B.Count 97 90 -7.2% 1.08x (?)
MapReduceLazyCollectionShort 28 26 -7.1% 1.08x
DropFirstArray 14 13 -7.1% 1.08x (?)
IterateData 903 840 -7.0% 1.07x (?)
PrefixArrayLazy 15 14 -6.7% 1.07x (?)
PolymorphicCalls 15 14 -6.7% 1.07x (?)
Set.isDisjoint.Seq.Box.Empty 76 71 -6.6% 1.07x (?)

Code size: -O

Regression OLD NEW DELTA RATIO
ProtocolDispatch.o 765 820 +7.2% 0.93x
IterateData.o 1693 1811 +7.0% 0.93x
TypeFlood.o 903 963 +6.6% 0.94x
CaptureProp.o 906 963 +6.3% 0.94x
CharacterLiteralsLarge.o 883 938 +6.2% 0.94x
Radix2CooleyTukey.o 5215 5516 +5.8% 0.95x
ArraySetElement.o 1135 1195 +5.3% 0.95x
Sim2DArray.o 1207 1267 +5.0% 0.95x
CharacterLiteralsSmall.o 1324 1386 +4.7% 0.96x
SuperChars.o 1462 1526 +4.4% 0.96x
NSError.o 1294 1348 +4.2% 0.96x
Chars.o 1619 1683 +4.0% 0.96x
RangeIteration.o 1684 1748 +3.8% 0.96x
NSDictionaryCastToSwift.o 1657 1719 +3.7% 0.96x
InsertCharacter.o 5144 5336 +3.7% 0.96x
RandomValues.o 2894 2991 +3.4% 0.97x
StrToInt.o 3508 3613 +3.0% 0.97x
ErrorHandling.o 2969 3055 +2.9% 0.97x
CharacterProperties.o 19292 19827 +2.8% 0.97x
Join.o 2272 2334 +2.7% 0.97x
StackPromo.o 1939 1986 +2.4% 0.98x
Fibonacci.o 1612 1650 +2.4% 0.98x
PointerArithmetics.o 1759 1799 +2.3% 0.98x
OpenClose.o 3218 3286 +2.1% 0.98x
BitCount.o 1876 1914 +2.0% 0.98x
ArrayOfPOD.o 2385 2431 +1.9% 0.98x
XorLoop.o 2012 2050 +1.9% 0.98x
MonteCarloPi.o 1593 1623 +1.9% 0.98x
ChainedFilterMap.o 2669 2717 +1.8% 0.98x
ObjectiveCNoBridgingStubs.o 8836 8994 +1.8% 0.98x
DictionaryLiteral.o 1251 1273 +1.8% 0.98x
RangeReplaceableCollectionPlusDefault.o 6077 6182 +1.7% 0.98x
RecursiveOwnedParameter.o 1382 1405 +1.7% 0.98x
FloatingPointPrinting.o 5927 6024 +1.6% 0.98x
Hanoi.o 3528 3577 +1.4% 0.99x
SevenBoom.o 1642 1664 +1.3% 0.99x
ByteSwap.o 1652 1674 +1.3% 0.99x
Memset.o 2148 2176 +1.3% 0.99x
ProtocolDispatch2.o 1740 1762 +1.3% 0.99x
Ackermann.o 1884 1906 +1.2% 0.99x
Exclusivity.o 4420 4469 +1.1% 0.99x
PopFront.o 5181 5237 +1.1% 0.99x
 
Improvement OLD NEW DELTA RATIO
ArrayOfGenericRef.o 15077 11803 -21.7% 1.28x
DictOfArraysToArrayOfDicts.o 29949 27144 -9.4% 1.10x
PolymorphicCalls.o 8544 7750 -9.3% 1.10x
DictionaryGroup.o 18235 16643 -8.7% 1.10x
Prefix.o 23544 21490 -8.7% 1.10x
RangeOverlaps.o 10767 9912 -7.9% 1.09x
DropWhile.o 23363 21569 -7.7% 1.08x
Array2D.o 4495 4156 -7.5% 1.08x
ReversedCollections.o 11491 10714 -6.8% 1.07x
RC4.o 4068 3816 -6.2% 1.07x
LinkedList.o 2376 2231 -6.1% 1.06x
LazyFilter.o 11092 10431 -6.0% 1.06x
FlattenList.o 6279 5918 -5.7% 1.06x
Combos.o 7232 6834 -5.5% 1.06x
DropFirst.o 23731 22429 -5.5% 1.06x
ArrayOfRef.o 12379 11745 -5.1% 1.05x
NSStringConversion.o 9243 8775 -5.1% 1.05x
BucketSort.o 11618 11047 -4.9% 1.05x
PrefixWhile.o 21565 20509 -4.9% 1.05x
DictTest.o 20601 19600 -4.9% 1.05x
DictTest2.o 15528 14784 -4.8% 1.05x
ClassArrayGetter.o 5715 5458 -4.5% 1.05x
NopDeinit.o 5664 5424 -4.2% 1.04x
CString.o 8272 7922 -4.2% 1.04x
DropLast.o 25410 24358 -4.1% 1.04x
MapReduce.o 31298 30021 -4.1% 1.04x
ObserverClosure.o 3247 3116 -4.0% 1.04x
DictionarySubscriptDefault.o 28778 27622 -4.0% 1.04x
Suffix.o 25184 24188 -4.0% 1.04x
NIOChannelPipeline.o 4357 4185 -3.9% 1.04x
ObserverPartiallyAppliedMethod.o 3535 3403 -3.7% 1.04x
UTF8Decode.o 13034 12550 -3.7% 1.04x
Diffing.o 9134 8812 -3.5% 1.04x
DriverUtils.o 155317 149943 -3.5% 1.04x
StringEdits.o 12151 11733 -3.4% 1.04x
DictTest3.o 22776 22064 -3.1% 1.03x
SetTests.o 153118 148355 -3.1% 1.03x
BinaryFloatingPointConversionFromBinaryInteger.o 26504 25696 -3.0% 1.03x
DictionarySwap.o 21986 21317 -3.0% 1.03x
Codable.o 26675 25897 -2.9% 1.03x
DictionaryCompactMapValues.o 18939 18406 -2.8% 1.03x
RGBHistogram.o 27738 26979 -2.7% 1.03x
WordCount.o 45164 43948 -2.7% 1.03x
DictionaryRemove.o 16472 16035 -2.7% 1.03x
COWTree.o 13042 12698 -2.6% 1.03x
ArrayAppend.o 34955 34042 -2.6% 1.03x
DictTest4Legacy.o 24640 24011 -2.6% 1.03x
ArraySubscript.o 3764 3670 -2.5% 1.03x
CSVParsing.o 60559 59048 -2.5% 1.03x
ObserverForwarderStruct.o 3648 3563 -2.3% 1.02x
DictionaryOfAnyHashableStrings.o 10372 10132 -2.3% 1.02x
DictTest4.o 23400 22892 -2.2% 1.02x
ObserverUnappliedMethod.o 5226 5116 -2.1% 1.02x
DictionaryBridge.o 3390 3321 -2.0% 1.02x
SortIntPyramids.o 12453 12215 -1.9% 1.02x
DictionaryKeysContains.o 10105 9931 -1.7% 1.02x
TwoSum.o 5508 5414 -1.7% 1.02x
Breadcrumbs.o 45437 44666 -1.7% 1.02x
ObjectiveCBridging.o 60886 59853 -1.7% 1.02x
SortLettersInPlace.o 9164 9015 -1.6% 1.02x
Queue.o 11242 11065 -1.6% 1.02x
ExistentialPerformance.o 47173 46435 -1.6% 1.02x
Prims.o 16984 16722 -1.5% 1.02x
StringInterpolation.o 7339 7233 -1.4% 1.01x
PrimsSplit.o 17054 16810 -1.4% 1.01x
SequenceAlgos.o 20405 20127 -1.4% 1.01x
AngryPhonebook.o 10251 10114 -1.3% 1.01x
IntegerParsing.o 19820 19566 -1.3% 1.01x
BinaryFloatingPointProperties.o 7580 7490 -1.2% 1.01x
Histogram.o 4171 4124 -1.1% 1.01x
StringRemoveDupes.o 7552 7467 -1.1% 1.01x
ArrayOfGenericPOD.o 4041 3999 -1.0% 1.01x

Performance: -Osize

Regression OLD NEW DELTA RATIO
SuffixArray 4 9 +125.0% 0.44x
PrefixWhileCountableRangeLazy 15 26 +73.3% 0.58x
DropLastCountableRange 6 9 +50.0% 0.67x
DropLastCountableRangeLazy 6 9 +50.0% 0.67x
DropFirstSequence 33 49 +48.5% 0.67x
DropFirstSequenceLazy 33 49 +48.5% 0.67x
DropWhileArray 24 35 +45.8% 0.69x
DropWhileAnyCollection 81 112 +38.3% 0.72x
SuffixAnyCollection 28 38 +35.7% 0.74x
PrefixWhileArray 40 53 +32.5% 0.75x
PrefixWhileAnyCollection 99 130 +31.3% 0.76x
DropWhileCountableRangeLazy 45 58 +28.9% 0.78x
MapReduce 214 258 +20.6% 0.83x
DropFirstAnyCollection 88 104 +18.2% 0.85x
ObjectiveCBridgeStubDateAccess 130 152 +16.9% 0.86x
DataSubscriptSmall 13 15 +15.4% 0.87x
ArrayOfPOD 335 383 +14.3% 0.87x (?)
DataCountMedium 15 17 +13.3% 0.88x
RandomShuffleLCG2 368 416 +13.0% 0.88x
Array2D 3456 3904 +13.0% 0.89x (?)
PrefixWhileAnySeqCRangeIter 187 210 +12.3% 0.89x (?)
PrefixWhileAnySeqCntRange 187 210 +12.3% 0.89x (?)
ObjectiveCBridgeStubFromNSString 474 524 +10.5% 0.90x (?)
FlattenListLoop 2145 2368 +10.4% 0.91x (?)
MapReduceAnyCollection 238 259 +8.8% 0.92x (?)
DataSetCountSmall 74 80 +8.1% 0.93x (?)
ArraySetElement 262 283 +8.0% 0.93x (?)
RangeOverlapsClosedRange 51 55 +7.8% 0.93x (?)
SubstringEquatable 409 440 +7.6% 0.93x (?)
 
Improvement OLD NEW DELTA RATIO
PrefixArrayLazy 26 14 -46.2% 1.86x
DropFirstArray 26 14 -46.2% 1.86x
DropWhileCountableRange 31 19 -38.7% 1.63x
PrefixCountableRangeLazy 26 17 -34.6% 1.53x
SuffixCountableRange 9 6 -33.3% 1.50x
PrefixAnyCollection 104 73 -29.8% 1.42x
DropLastAnyCollection 38 28 -26.3% 1.36x
DataCountSmall 13 10 -23.1% 1.30x
ArrayAppendSequence 850 680 -20.0% 1.25x
DataCreateEmpty 100 80 -20.0% 1.25x (?)
Dictionary4 204 165 -19.1% 1.24x
DropFirstAnySeqCRangeIterLazy 127 103 -18.9% 1.23x
UTF8Decode_InitDecoding 124 102 -17.7% 1.22x
StringEqualPointerComparison 130 108 -16.9% 1.20x (?)
PrefixWhileAnyCollectionLazy 95 81 -14.7% 1.17x (?)
ClosedRangeOverlapsClosedRange 48 41 -14.6% 1.17x (?)
PrefixWhileAnySeqCRangeIterLazy 94 81 -13.8% 1.16x
PrefixWhileAnySeqCntRangeLazy 94 81 -13.8% 1.16x (?)
BitCount 168 146 -13.1% 1.15x (?)
ParseInt.Small.UncommonRadix 217 190 -12.4% 1.14x (?)
Set.isDisjoint.Seq.Empty.Box 101 89 -11.9% 1.13x (?)
DropFirstCountableRangeLazy 17 15 -11.8% 1.13x (?)
Set.isStrictSubset.Int.Empty 62 55 -11.3% 1.13x
Set.isDisjoint.Seq.Empty.Int 98 87 -11.2% 1.13x (?)
Set.isDisjoint.Empty.Int 98 87 -11.2% 1.13x (?)
DropWhileAnySeqCRangeIterLazy 131 117 -10.7% 1.12x (?)
ParseInt.Small.Decimal 201 180 -10.4% 1.12x (?)
CharIteration_punctuated_unicodeScalars 440 400 -9.1% 1.10x (?)
ArrayLiteral2 117 107 -8.5% 1.09x (?)
CaptureProp 2810 2570 -8.5% 1.09x (?)
CharIteration_ascii_unicodeScalars 1880 1720 -8.5% 1.09x (?)
Set.isDisjoint.Seq.Box.Empty 100 92 -8.0% 1.09x (?)
Set.isDisjoint.Int.Empty 100 92 -8.0% 1.09x (?)
CharIteration_tweet_unicodeScalars 3720 3440 -7.5% 1.08x (?)
ParseInt.Small.Hex 214 198 -7.5% 1.08x (?)
ParseFloat.Float.Exp 14 13 -7.1% 1.08x (?)
Set.isSuperset.Seq.Empty.Int 57 53 -7.0% 1.08x (?)
Set.isSubset.Empty.Int 133 124 -6.8% 1.07x (?)
PrefixCountableRange 15 14 -6.7% 1.07x (?)

Code size: -Osize

Regression OLD NEW DELTA RATIO
Radix2CooleyTukey.o 4948 5236 +5.8% 0.94x
IterateData.o 1741 1811 +4.0% 0.96x
TypeFlood.o 972 1011 +4.0% 0.96x
CharacterLiteralsLarge.o 948 986 +4.0% 0.96x
CaptureProp.o 1101 1139 +3.5% 0.97x
CharacterLiteralsSmall.o 1428 1466 +2.7% 0.97x
ProtocolDispatch.o 846 868 +2.6% 0.97x
NSError.o 1662 1700 +2.3% 0.98x
CharacterProperties.o 19612 20035 +2.2% 0.98x
RecursiveOwnedParameter.o 1313 1336 +1.8% 0.98x
StackPromo.o 1931 1962 +1.6% 0.98x
InsertCharacter.o 4751 4815 +1.3% 0.99x
BitCount.o 1634 1656 +1.3% 0.99x
Fibonacci.o 1642 1664 +1.3% 0.99x
PolymorphicCalls.o 7968 8070 +1.3% 0.99x
AnyHashableWithAClass.o 3211 3250 +1.2% 0.99x
SevenBoom.o 1816 1838 +1.2% 0.99x
 
Improvement OLD NEW DELTA RATIO
DropWhile.o 22236 19588 -11.9% 1.14x
ReversedCollections.o 9850 8695 -11.7% 1.13x
Array2D.o 4594 4107 -10.6% 1.12x
DropFirst.o 21596 19553 -9.5% 1.10x
COWArrayGuaranteedParameterOverhead.o 1467 1334 -9.1% 1.10x
Prefix.o 21345 19471 -8.8% 1.10x
DictionaryLiteral.o 995 921 -7.4% 1.08x
PrefixWhile.o 20222 18814 -7.0% 1.07x
ArraySubscript.o 4067 3796 -6.7% 1.07x
DictOfArraysToArrayOfDicts.o 26541 24882 -6.3% 1.07x
DropLast.o 23762 22322 -6.1% 1.06x
ArrayOfGenericPOD.o 4291 4033 -6.0% 1.06x
Combos.o 7792 7330 -5.9% 1.06x
FlattenList.o 6679 6286 -5.9% 1.06x
Suffix.o 23640 22320 -5.6% 1.06x
RangeOverlaps.o 11775 11140 -5.4% 1.06x
ArrayOfGenericRef.o 13709 12979 -5.3% 1.06x
LazyFilter.o 8905 8432 -5.3% 1.06x
ArrayInClass.o 4548 4333 -4.7% 1.05x
DictionarySubscriptDefault.o 18890 18012 -4.6% 1.05x
ArraySetElement.o 1309 1251 -4.4% 1.05x
DictTest2.o 9689 9266 -4.4% 1.05x
Memset.o 2098 2008 -4.3% 1.04x
RC4.o 3586 3436 -4.2% 1.04x
ChainedFilterMap.o 3493 3349 -4.1% 1.04x
DictionaryBridgeToObjC.o 4619 4429 -4.1% 1.04x
Sim2DArray.o 1421 1363 -4.1% 1.04x
XorLoop.o 2082 2000 -3.9% 1.04x
DictTest.o 12409 11935 -3.8% 1.04x
ArrayLiteral.o 3189 3077 -3.5% 1.04x
RandomShuffle.o 3799 3669 -3.4% 1.04x
Walsh.o 5796 5600 -3.4% 1.03x
ObserverPartiallyAppliedMethod.o 3911 3779 -3.4% 1.03x
BinaryFloatingPointProperties.o 7412 7170 -3.3% 1.03x
RomanNumbers.o 8602 8329 -3.2% 1.03x
DictionaryCompactMapValues.o 14133 13686 -3.2% 1.03x
CString.o 8072 7818 -3.1% 1.03x
DictionaryGroup.o 14319 13870 -3.1% 1.03x
Prims.o 14192 13752 -3.1% 1.03x
RemoveWhere.o 24294 23543 -3.1% 1.03x
ObserverClosure.o 3557 3449 -3.0% 1.03x
Ackermann.o 1957 1898 -3.0% 1.03x
ClassArrayGetter.o 5753 5580 -3.0% 1.03x
WordCount.o 40957 39762 -2.9% 1.03x
PrimsSplit.o 14262 13852 -2.9% 1.03x
LinkedList.o 2313 2248 -2.8% 1.03x
DictTest3.o 13945 13570 -2.7% 1.03x
MonteCarloE.o 3762 3662 -2.7% 1.03x
UTF8Decode.o 11089 10798 -2.6% 1.03x
SortIntPyramids.o 12921 12584 -2.6% 1.03x
SequenceAlgos.o 20381 19875 -2.5% 1.03x
StringRemoveDupes.o 4857 4737 -2.5% 1.03x
ArrayOfPOD.o 2761 2695 -2.4% 1.02x
DiffingMyers.o 9176 8960 -2.4% 1.02x
Histogram.o 1920 1876 -2.3% 1.02x
SortLettersInPlace.o 9054 8849 -2.3% 1.02x
BucketSort.o 11415 11159 -2.2% 1.02x
Hash.o 19905 19473 -2.2% 1.02x
StringEdits.o 12358 12092 -2.2% 1.02x
SuperChars.o 1600 1566 -2.1% 1.02x
ObjectiveCBridging.o 54698 53554 -2.1% 1.02x
ArrayAppend.o 31507 30850 -2.1% 1.02x
DriverUtils.o 134806 132062 -2.0% 1.02x
Codable.o 26643 26105 -2.0% 1.02x
FloatingPointParsing.o 15258 14950 -2.0% 1.02x
PopFrontGeneric.o 4759 4665 -2.0% 1.02x
COWTree.o 13592 13324 -2.0% 1.02x
Join.o 2549 2499 -2.0% 1.02x
Chars.o 1741 1707 -2.0% 1.02x
RangeIteration.o 1770 1738 -1.8% 1.02x
Phonebook.o 12298 12077 -1.8% 1.02x
DictionaryKeysContains.o 8156 8010 -1.8% 1.02x
ArrayOfRef.o 13091 12857 -1.8% 1.02x
StaticArray.o 12703 12476 -1.8% 1.02x
NibbleSort.o 14366 14112 -1.8% 1.02x
MapReduce.o 26074 25621 -1.7% 1.02x
PointerArithmetics.o 1864 1832 -1.7% 1.02x
RGBHistogram.o 23177 22808 -1.6% 1.02x
TwoSum.o 3077 3030 -1.5% 1.02x
DictionarySwap.o 16745 16491 -1.5% 1.02x
RangeAssignment.o 5018 4944 -1.5% 1.01x
Breadcrumbs.o 43782 43137 -1.5% 1.01x
ObserverUnappliedMethod.o 5354 5276 -1.5% 1.01x
CSVParsing.o 60543 59684 -1.4% 1.01x
StringEnum.o 13109 12937 -1.3% 1.01x
DictionaryRemove.o 11067 10939 -1.2% 1.01x
LuhnAlgoLazy.o 13588 13434 -1.1% 1.01x
LuhnAlgoEager.o 13590 13436 -1.1% 1.01x
DictionaryCopy.o 7861 7773 -1.1% 1.01x
StringWalk.o 34906 34535 -1.1% 1.01x
AngryPhonebook.o 9869 9765 -1.1% 1.01x
StringMatch.o 4577 4530 -1.0% 1.01x

Performance: -Onone

Regression OLD NEW DELTA RATIO
ObjectiveCBridgeStubDateMutation 305 370 +21.3% 0.82x
DataSubscriptMedium 43 50 +16.3% 0.86x (?)
ArrayOfPOD 659 724 +9.9% 0.91x (?)
ObjectiveCBridgeStubFromNSString 496 540 +8.9% 0.92x (?)
StringToDataEmpty 600 650 +8.3% 0.92x (?)
 
Improvement OLD NEW DELTA RATIO
UTF8Decode_InitDecoding 143 122 -14.7% 1.17x

Code size: -swiftlibs

Regression OLD NEW DELTA RATIO
libswiftSwiftLang.dylib 90112 94208 +4.5% 0.96x
 
Improvement OLD NEW DELTA RATIO
libswiftNaturalLanguage.dylib 40960 36864 -10.0% 1.11x
libswiftMetal.dylib 40960 36864 -10.0% 1.11x
libswiftAVFoundation.dylib 57344 53248 -7.1% 1.08x
libswiftXCTest.dylib 73728 69632 -5.6% 1.06x
libswiftAppKit.dylib 77824 73728 -5.3% 1.06x
libswiftFoundation.dylib 1585152 1515520 -4.4% 1.05x
libswiftStdlibUnittest.dylib 348160 335872 -3.5% 1.04x
libswiftCore.dylib 3764224 3678208 -2.3% 1.02x
How to read the data The tables contain differences in performance which are larger than 8% and differences in code size which are larger than 1%.

If you see any unexpected regressions, you should consider fixing the
regressions before you merge the PR.

Noise: Sometimes the performance results (not code size!) contain false
alarms. Unexpected regressions which are marked with '(?)' are probably noise.
If you see regressions which you cannot explain you can try to run the
benchmarks again. If regressions still show up, please consult with the
performance team (@eeckstein).

Hardware Overview
  Model Name: Mac mini
  Model Identifier: Macmini8,1
  Processor Name: Intel Core i7
  Processor Speed: 3.2 GHz
  Number of Processors: 1
  Total Number of Cores: 6
  L2 Cache (per Core): 256 KB
  L3 Cache: 12 MB
  Memory: 64 GB

@jckarter
Copy link
Contributor Author

jckarter commented Aug 2, 2019

@swift-ci Please benchmark

@palimondo
Copy link
Contributor

JFC! I'll have more robust run_smoke_bench PR up in few minutes…

@swift-ci
Copy link
Contributor

swift-ci commented Aug 2, 2019

Performance: -O

Regression OLD NEW DELTA RATIO
PrefixArray 14 26 +85.7% 0.54x
ProtocolDispatch 174 217 +24.7% 0.80x
ClosedRangeOverlapsClosedRange 41 48 +17.1% 0.85x
DataSubscriptSmall 13 15 +15.4% 0.87x
SequenceAlgosContiguousArray 1150 1310 +13.9% 0.88x (?)
Data.append.Sequence.64kB.Count.I 30 34 +13.3% 0.88x (?)
Data.append.Sequence.64kB.Count 30 34 +13.3% 0.88x (?)
ObjectiveCBridgeStubNSDateRefAccess 174 196 +12.6% 0.89x (?)
ObjectiveCBridgeStubFromNSString 481 533 +10.8% 0.90x (?)
ObjectiveCBridgeStubFromNSStringRef 87 96 +10.3% 0.91x (?)
StringToDataSmall 500 550 +10.0% 0.91x (?)
ReversedDictionary2 239 261 +9.2% 0.92x
 
Improvement OLD NEW DELTA RATIO
DropFirstSequence 44 33 -25.0% 1.33x
DropFirstSequenceLazy 44 33 -25.0% 1.33x (?)
DropWhileCountableRangeLazy 58 44 -24.1% 1.32x
Dictionary4 199 155 -22.1% 1.28x
DataCreateEmpty 100 80 -20.0% 1.25x (?)
UTF8Decode_InitDecoding 125 103 -17.6% 1.21x (?)
Dictionary4OfObjects 236 197 -16.5% 1.20x (?)
DropWhileAnySeqCntRange 50 43 -14.0% 1.16x (?)
PrefixArrayLazy 15 13 -13.3% 1.15x (?)
ParseInt.Small.UncommonRadix 221 193 -12.7% 1.15x (?)
Set.isDisjoint.Empty.Box 101 89 -11.9% 1.13x (?)
PrefixWhileAnySeqCRangeIter 195 172 -11.8% 1.13x
PrefixWhileAnySeqCntRange 195 172 -11.8% 1.13x (?)
Set.isDisjoint.Seq.Empty.Box 88 78 -11.4% 1.13x (?)
ParseInt.Small.Binary 322 286 -11.2% 1.13x (?)
RemoveWhereMoveInts 18 16 -11.1% 1.12x
StrComplexWalk 2080 1870 -10.1% 1.11x (?)
StringBuilderLong 930 840 -9.7% 1.11x (?)
Data.init.Sequence.2047B.Count.I 85 77 -9.4% 1.10x (?)
Data.init.Sequence.2049B.Count.I 85 77 -9.4% 1.10x (?)
ArrayAppendLatin1Substring 11700 10620 -9.2% 1.10x (?)
ArrayAppendUTF16Substring 11484 10440 -9.1% 1.10x (?)
ArrayAppendAsciiSubstring 11484 10440 -9.1% 1.10x (?)
RandomShuffleLCG2 368 336 -8.7% 1.10x (?)
DataAccessBytesMedium 47 43 -8.5% 1.09x (?)
ParseInt.Small.Decimal 196 180 -8.2% 1.09x (?)
Data.init.Sequence.64kB.Count 54 50 -7.4% 1.08x (?)
MapReduceLazyCollectionShort 28 26 -7.1% 1.08x (?)
DropFirstArray 14 13 -7.1% 1.08x (?)
IterateData 902 839 -7.0% 1.08x (?)
PolymorphicCalls 15 14 -6.7% 1.07x (?)

Code size: -O

Regression OLD NEW DELTA RATIO
ProtocolDispatch.o 765 820 +7.2% 0.93x
IterateData.o 1693 1811 +7.0% 0.93x
TypeFlood.o 903 963 +6.6% 0.94x
CaptureProp.o 906 963 +6.3% 0.94x
CharacterLiteralsLarge.o 883 938 +6.2% 0.94x
Radix2CooleyTukey.o 5215 5516 +5.8% 0.95x
ArraySetElement.o 1135 1195 +5.3% 0.95x
Sim2DArray.o 1207 1267 +5.0% 0.95x
CharacterLiteralsSmall.o 1324 1386 +4.7% 0.96x
SuperChars.o 1462 1526 +4.4% 0.96x
NSError.o 1294 1348 +4.2% 0.96x
Chars.o 1619 1683 +4.0% 0.96x
RangeIteration.o 1684 1748 +3.8% 0.96x
NSDictionaryCastToSwift.o 1657 1719 +3.7% 0.96x
InsertCharacter.o 5144 5336 +3.7% 0.96x
RandomValues.o 2894 2991 +3.4% 0.97x
StrToInt.o 3508 3613 +3.0% 0.97x
ErrorHandling.o 2969 3055 +2.9% 0.97x
CharacterProperties.o 19292 19827 +2.8% 0.97x
Join.o 2272 2334 +2.7% 0.97x
StackPromo.o 1939 1986 +2.4% 0.98x
Fibonacci.o 1612 1650 +2.4% 0.98x
PointerArithmetics.o 1759 1799 +2.3% 0.98x
OpenClose.o 3218 3286 +2.1% 0.98x
BitCount.o 1876 1914 +2.0% 0.98x
ArrayOfPOD.o 2385 2431 +1.9% 0.98x
XorLoop.o 2012 2050 +1.9% 0.98x
MonteCarloPi.o 1593 1623 +1.9% 0.98x
ChainedFilterMap.o 2669 2717 +1.8% 0.98x
ObjectiveCNoBridgingStubs.o 8836 8994 +1.8% 0.98x
DictionaryLiteral.o 1251 1273 +1.8% 0.98x
RangeReplaceableCollectionPlusDefault.o 6077 6182 +1.7% 0.98x
RecursiveOwnedParameter.o 1382 1405 +1.7% 0.98x
FloatingPointPrinting.o 5927 6024 +1.6% 0.98x
Hanoi.o 3528 3577 +1.4% 0.99x
SevenBoom.o 1642 1664 +1.3% 0.99x
ByteSwap.o 1652 1674 +1.3% 0.99x
Memset.o 2148 2176 +1.3% 0.99x
ProtocolDispatch2.o 1740 1762 +1.3% 0.99x
Ackermann.o 1884 1906 +1.2% 0.99x
Exclusivity.o 4420 4469 +1.1% 0.99x
PopFront.o 5181 5237 +1.1% 0.99x
 
Improvement OLD NEW DELTA RATIO
ArrayOfGenericRef.o 15077 11803 -21.7% 1.28x
DictOfArraysToArrayOfDicts.o 29949 27144 -9.4% 1.10x
PolymorphicCalls.o 8544 7750 -9.3% 1.10x
DictionaryGroup.o 18235 16643 -8.7% 1.10x
Prefix.o 23544 21490 -8.7% 1.10x
RangeOverlaps.o 10767 9912 -7.9% 1.09x
DropWhile.o 23363 21569 -7.7% 1.08x
Array2D.o 4495 4156 -7.5% 1.08x
ReversedCollections.o 11491 10714 -6.8% 1.07x
RC4.o 4068 3816 -6.2% 1.07x
LinkedList.o 2376 2231 -6.1% 1.06x
LazyFilter.o 11092 10431 -6.0% 1.06x
FlattenList.o 6279 5918 -5.7% 1.06x
Combos.o 7232 6834 -5.5% 1.06x
DropFirst.o 23731 22429 -5.5% 1.06x
ArrayOfRef.o 12379 11745 -5.1% 1.05x
NSStringConversion.o 9243 8775 -5.1% 1.05x
BucketSort.o 11618 11047 -4.9% 1.05x
PrefixWhile.o 21565 20509 -4.9% 1.05x
DictTest.o 20601 19600 -4.9% 1.05x
DictTest2.o 15528 14784 -4.8% 1.05x
ClassArrayGetter.o 5715 5458 -4.5% 1.05x
NopDeinit.o 5664 5424 -4.2% 1.04x
CString.o 8272 7922 -4.2% 1.04x
DropLast.o 25410 24358 -4.1% 1.04x
MapReduce.o 31298 30021 -4.1% 1.04x
ObserverClosure.o 3247 3116 -4.0% 1.04x
DictionarySubscriptDefault.o 28778 27622 -4.0% 1.04x
Suffix.o 25184 24188 -4.0% 1.04x
NIOChannelPipeline.o 4357 4185 -3.9% 1.04x
ObserverPartiallyAppliedMethod.o 3535 3403 -3.7% 1.04x
UTF8Decode.o 13034 12550 -3.7% 1.04x
Diffing.o 9134 8812 -3.5% 1.04x
DriverUtils.o 155317 149943 -3.5% 1.04x
StringEdits.o 12151 11733 -3.4% 1.04x
DictTest3.o 22776 22064 -3.1% 1.03x
SetTests.o 153118 148355 -3.1% 1.03x
BinaryFloatingPointConversionFromBinaryInteger.o 26504 25696 -3.0% 1.03x
DictionarySwap.o 21986 21317 -3.0% 1.03x
Codable.o 26675 25897 -2.9% 1.03x
DictionaryCompactMapValues.o 18939 18406 -2.8% 1.03x
RGBHistogram.o 27738 26979 -2.7% 1.03x
WordCount.o 45164 43948 -2.7% 1.03x
DictionaryRemove.o 16472 16035 -2.7% 1.03x
COWTree.o 13042 12698 -2.6% 1.03x
ArrayAppend.o 34955 34042 -2.6% 1.03x
DictTest4Legacy.o 24640 24011 -2.6% 1.03x
ArraySubscript.o 3764 3670 -2.5% 1.03x
CSVParsing.o 60559 59048 -2.5% 1.03x
ObserverForwarderStruct.o 3648 3563 -2.3% 1.02x
DictionaryOfAnyHashableStrings.o 10372 10132 -2.3% 1.02x
DictTest4.o 23400 22892 -2.2% 1.02x
ObserverUnappliedMethod.o 5226 5116 -2.1% 1.02x
DictionaryBridge.o 3390 3321 -2.0% 1.02x
SortIntPyramids.o 12453 12215 -1.9% 1.02x
DictionaryKeysContains.o 10105 9931 -1.7% 1.02x
TwoSum.o 5508 5414 -1.7% 1.02x
Breadcrumbs.o 45437 44666 -1.7% 1.02x
ObjectiveCBridging.o 60886 59853 -1.7% 1.02x
SortLettersInPlace.o 9164 9015 -1.6% 1.02x
Queue.o 11242 11065 -1.6% 1.02x
ExistentialPerformance.o 47173 46435 -1.6% 1.02x
Prims.o 16984 16722 -1.5% 1.02x
StringInterpolation.o 7339 7233 -1.4% 1.01x
PrimsSplit.o 17054 16810 -1.4% 1.01x
SequenceAlgos.o 20405 20127 -1.4% 1.01x
AngryPhonebook.o 10251 10114 -1.3% 1.01x
IntegerParsing.o 19820 19566 -1.3% 1.01x
BinaryFloatingPointProperties.o 7580 7490 -1.2% 1.01x
Histogram.o 4171 4124 -1.1% 1.01x
StringRemoveDupes.o 7552 7467 -1.1% 1.01x
ArrayOfGenericPOD.o 4041 3999 -1.0% 1.01x

Performance: -Osize

Regression OLD NEW DELTA RATIO
SuffixArray 4 9 +125.0% 0.44x
PrefixWhileCountableRangeLazy 16 26 +62.5% 0.62x (?)
DropLastCountableRange 6 9 +50.0% 0.67x
DropLastCountableRangeLazy 6 9 +50.0% 0.67x
DropFirstSequence 33 49 +48.5% 0.67x
DropFirstSequenceLazy 33 49 +48.5% 0.67x
DropWhileArray 24 35 +45.8% 0.69x
DropWhileAnyCollection 81 112 +38.3% 0.72x
SuffixAnyCollection 28 38 +35.7% 0.74x
PrefixWhileArray 40 53 +32.5% 0.75x
PrefixWhileAnyCollection 99 129 +30.3% 0.77x
DropWhileCountableRangeLazy 45 58 +28.9% 0.78x
MapReduce 215 258 +20.0% 0.83x (?)
DropFirstAnyCollection 88 105 +19.3% 0.84x (?)
ObjectiveCBridgeStubDateAccess 130 152 +16.9% 0.86x
DataSubscriptSmall 13 15 +15.4% 0.87x (?)
ArrayOfPOD 335 382 +14.0% 0.88x (?)
DataCountMedium 15 17 +13.3% 0.88x
RandomShuffleLCG2 368 416 +13.0% 0.88x
Array2D 3456 3904 +13.0% 0.89x
PrefixWhileAnySeqCRangeIter 188 210 +11.7% 0.90x
PrefixWhileAnySeqCntRange 188 210 +11.7% 0.90x
FlattenListLoop 2144 2363 +10.2% 0.91x (?)
MapReduceAnyCollection 238 259 +8.8% 0.92x (?)
DataSetCountSmall 74 80 +8.1% 0.93x (?)
ArraySetElement 262 283 +8.0% 0.93x (?)
RangeOverlapsClosedRange 51 55 +7.8% 0.93x (?)
 
Improvement OLD NEW DELTA RATIO
PrefixArrayLazy 26 14 -46.2% 1.86x
DropFirstArray 26 14 -46.2% 1.86x
DropWhileCountableRange 31 19 -38.7% 1.63x
PrefixCountableRangeLazy 26 17 -34.6% 1.53x
SuffixCountableRange 9 6 -33.3% 1.50x
PrefixAnyCollection 103 73 -29.1% 1.41x
DropLastAnyCollection 38 28 -26.3% 1.36x (?)
DataCountSmall 13 10 -23.1% 1.30x
ArrayAppendSequence 850 670 -21.2% 1.27x
DataCreateEmpty 100 80 -20.0% 1.25x
Dictionary4 204 165 -19.1% 1.24x
DropFirstAnySeqCRangeIterLazy 127 103 -18.9% 1.23x
StringEqualPointerComparison 130 108 -16.9% 1.20x (?)
UTF8Decode_InitDecoding 126 105 -16.7% 1.20x
PrefixWhileAnyCollectionLazy 95 81 -14.7% 1.17x (?)
ClosedRangeOverlapsClosedRange 48 41 -14.6% 1.17x (?)
PrefixWhileAnySeqCRangeIterLazy 94 81 -13.8% 1.16x (?)
PrefixWhileAnySeqCntRangeLazy 94 81 -13.8% 1.16x (?)
BitCount 168 146 -13.1% 1.15x (?)
ParseInt.Small.UncommonRadix 216 190 -12.0% 1.14x
Set.isDisjoint.Seq.Empty.Box 101 89 -11.9% 1.13x (?)
DropFirstCountableRangeLazy 17 15 -11.8% 1.13x (?)
Set.isStrictSubset.Int.Empty 62 55 -11.3% 1.13x
Set.isDisjoint.Seq.Empty.Int 98 87 -11.2% 1.13x (?)
Set.isDisjoint.Empty.Int 98 87 -11.2% 1.13x (?)
PointerArithmetics 19500 17400 -10.8% 1.12x (?)
DropWhileAnySeqCRangeIterLazy 131 117 -10.7% 1.12x (?)
ParseInt.Small.Decimal 200 179 -10.5% 1.12x
StringToDataEmpty 500 450 -10.0% 1.11x (?)
Set.isDisjoint.Seq.Int100 130 118 -9.2% 1.10x (?)
CharIteration_punctuated_unicodeScalars 440 400 -9.1% 1.10x (?)
CaptureProp 2820 2570 -8.9% 1.10x (?)
ArrayLiteral2 117 107 -8.5% 1.09x (?)
CharIteration_ascii_unicodeScalars 1880 1720 -8.5% 1.09x (?)
SequenceAlgosArray 1960 1800 -8.2% 1.09x (?)
SetIsSubsetInt0 212 195 -8.0% 1.09x (?)
ParseInt.Small.Hex 214 197 -7.9% 1.09x (?)
CharIteration_tweet_unicodeScalars 3720 3440 -7.5% 1.08x (?)
Set.isSubset.Empty.Int 134 124 -7.5% 1.08x (?)
ParseFloat.Float.Exp 14 13 -7.1% 1.08x (?)
Set.isDisjoint.Seq.Box.Empty 99 92 -7.1% 1.08x (?)
Set.isDisjoint.Int.Empty 99 92 -7.1% 1.08x (?)
Set.isSuperset.Seq.Empty.Int 57 53 -7.0% 1.08x (?)
CharacterLiteralsSmall 224 209 -6.7% 1.07x (?)
IterateData 899 839 -6.7% 1.07x (?)

Code size: -Osize

Regression OLD NEW DELTA RATIO
Radix2CooleyTukey.o 4948 5236 +5.8% 0.94x
IterateData.o 1741 1811 +4.0% 0.96x
TypeFlood.o 972 1011 +4.0% 0.96x
CharacterLiteralsLarge.o 948 986 +4.0% 0.96x
CaptureProp.o 1101 1139 +3.5% 0.97x
CharacterLiteralsSmall.o 1428 1466 +2.7% 0.97x
ProtocolDispatch.o 846 868 +2.6% 0.97x
NSError.o 1662 1700 +2.3% 0.98x
CharacterProperties.o 19612 20035 +2.2% 0.98x
RecursiveOwnedParameter.o 1313 1336 +1.8% 0.98x
StackPromo.o 1931 1962 +1.6% 0.98x
InsertCharacter.o 4751 4815 +1.3% 0.99x
BitCount.o 1634 1656 +1.3% 0.99x
Fibonacci.o 1642 1664 +1.3% 0.99x
PolymorphicCalls.o 7968 8070 +1.3% 0.99x
AnyHashableWithAClass.o 3211 3250 +1.2% 0.99x
SevenBoom.o 1816 1838 +1.2% 0.99x
 
Improvement OLD NEW DELTA RATIO
DropWhile.o 22236 19588 -11.9% 1.14x
ReversedCollections.o 9850 8695 -11.7% 1.13x
Array2D.o 4594 4107 -10.6% 1.12x
DropFirst.o 21596 19553 -9.5% 1.10x
COWArrayGuaranteedParameterOverhead.o 1467 1334 -9.1% 1.10x
Prefix.o 21345 19471 -8.8% 1.10x
DictionaryLiteral.o 995 921 -7.4% 1.08x
PrefixWhile.o 20222 18814 -7.0% 1.07x
ArraySubscript.o 4067 3796 -6.7% 1.07x
DictOfArraysToArrayOfDicts.o 26541 24882 -6.3% 1.07x
DropLast.o 23762 22322 -6.1% 1.06x
ArrayOfGenericPOD.o 4291 4033 -6.0% 1.06x
Combos.o 7792 7330 -5.9% 1.06x
FlattenList.o 6679 6286 -5.9% 1.06x
Suffix.o 23640 22320 -5.6% 1.06x
RangeOverlaps.o 11775 11140 -5.4% 1.06x
ArrayOfGenericRef.o 13709 12979 -5.3% 1.06x
LazyFilter.o 8905 8432 -5.3% 1.06x
ArrayInClass.o 4548 4333 -4.7% 1.05x
DictionarySubscriptDefault.o 18890 18012 -4.6% 1.05x
ArraySetElement.o 1309 1251 -4.4% 1.05x
DictTest2.o 9689 9266 -4.4% 1.05x
Memset.o 2098 2008 -4.3% 1.04x
RC4.o 3586 3436 -4.2% 1.04x
ChainedFilterMap.o 3493 3349 -4.1% 1.04x
DictionaryBridgeToObjC.o 4619 4429 -4.1% 1.04x
Sim2DArray.o 1421 1363 -4.1% 1.04x
XorLoop.o 2082 2000 -3.9% 1.04x
DictTest.o 12409 11935 -3.8% 1.04x
ArrayLiteral.o 3189 3077 -3.5% 1.04x
RandomShuffle.o 3799 3669 -3.4% 1.04x
Walsh.o 5796 5600 -3.4% 1.03x
ObserverPartiallyAppliedMethod.o 3911 3779 -3.4% 1.03x
BinaryFloatingPointProperties.o 7412 7170 -3.3% 1.03x
RomanNumbers.o 8602 8329 -3.2% 1.03x
DictionaryCompactMapValues.o 14133 13686 -3.2% 1.03x
CString.o 8072 7818 -3.1% 1.03x
DictionaryGroup.o 14319 13870 -3.1% 1.03x
Prims.o 14192 13752 -3.1% 1.03x
RemoveWhere.o 24294 23543 -3.1% 1.03x
ObserverClosure.o 3557 3449 -3.0% 1.03x
Ackermann.o 1957 1898 -3.0% 1.03x
ClassArrayGetter.o 5753 5580 -3.0% 1.03x
WordCount.o 40957 39762 -2.9% 1.03x
PrimsSplit.o 14262 13852 -2.9% 1.03x
LinkedList.o 2313 2248 -2.8% 1.03x
DictTest3.o 13945 13570 -2.7% 1.03x
MonteCarloE.o 3762 3662 -2.7% 1.03x
UTF8Decode.o 11089 10798 -2.6% 1.03x
SortIntPyramids.o 12921 12584 -2.6% 1.03x
SequenceAlgos.o 20381 19875 -2.5% 1.03x
StringRemoveDupes.o 4857 4737 -2.5% 1.03x
ArrayOfPOD.o 2761 2695 -2.4% 1.02x
DiffingMyers.o 9176 8960 -2.4% 1.02x
Histogram.o 1920 1876 -2.3% 1.02x
SortLettersInPlace.o 9054 8849 -2.3% 1.02x
BucketSort.o 11415 11159 -2.2% 1.02x
Hash.o 19905 19473 -2.2% 1.02x
StringEdits.o 12358 12092 -2.2% 1.02x
SuperChars.o 1600 1566 -2.1% 1.02x
ObjectiveCBridging.o 54698 53554 -2.1% 1.02x
ArrayAppend.o 31507 30850 -2.1% 1.02x
DriverUtils.o 134806 132062 -2.0% 1.02x
Codable.o 26643 26105 -2.0% 1.02x
FloatingPointParsing.o 15258 14950 -2.0% 1.02x
PopFrontGeneric.o 4759 4665 -2.0% 1.02x
COWTree.o 13592 13324 -2.0% 1.02x
Join.o 2549 2499 -2.0% 1.02x
Chars.o 1741 1707 -2.0% 1.02x
RangeIteration.o 1770 1738 -1.8% 1.02x
Phonebook.o 12298 12077 -1.8% 1.02x
DictionaryKeysContains.o 8156 8010 -1.8% 1.02x
ArrayOfRef.o 13091 12857 -1.8% 1.02x
StaticArray.o 12703 12476 -1.8% 1.02x
NibbleSort.o 14366 14112 -1.8% 1.02x
MapReduce.o 26074 25621 -1.7% 1.02x
PointerArithmetics.o 1864 1832 -1.7% 1.02x
RGBHistogram.o 23177 22808 -1.6% 1.02x
TwoSum.o 3077 3030 -1.5% 1.02x
DictionarySwap.o 16745 16491 -1.5% 1.02x
RangeAssignment.o 5018 4944 -1.5% 1.01x
Breadcrumbs.o 43782 43137 -1.5% 1.01x
ObserverUnappliedMethod.o 5354 5276 -1.5% 1.01x
CSVParsing.o 60543 59684 -1.4% 1.01x
StringEnum.o 13109 12937 -1.3% 1.01x
DictionaryRemove.o 11067 10939 -1.2% 1.01x
LuhnAlgoLazy.o 13588 13434 -1.1% 1.01x
LuhnAlgoEager.o 13590 13436 -1.1% 1.01x
DictionaryCopy.o 7861 7773 -1.1% 1.01x
StringWalk.o 34906 34535 -1.1% 1.01x
AngryPhonebook.o 9869 9765 -1.1% 1.01x
StringMatch.o 4577 4530 -1.0% 1.01x

Performance: -Onone

Regression OLD NEW DELTA RATIO
ObjectiveCBridgeStubDateMutation 305 370 +21.3% 0.82x
DataSubscriptMedium 43 50 +16.3% 0.86x (?)
ObjectiveCBridgeStubFromNSString 487 540 +10.9% 0.90x (?)
ObjectiveCBridgeStubFromNSStringRef 107 118 +10.3% 0.91x (?)
ArrayOfPOD 659 723 +9.7% 0.91x (?)
DataCreateEmpty 630 690 +9.5% 0.91x (?)
StringToDataEmpty 600 650 +8.3% 0.92x (?)
ObjectiveCBridgeStubFromNSDateRef 2470 2670 +8.1% 0.93x (?)
 
Improvement OLD NEW DELTA RATIO
UTF8Decode_InitDecoding 143 122 -14.7% 1.17x (?)

Code size: -swiftlibs

Regression OLD NEW DELTA RATIO
libswiftSwiftLang.dylib 90112 94208 +4.5% 0.96x
 
Improvement OLD NEW DELTA RATIO
libswiftNaturalLanguage.dylib 40960 36864 -10.0% 1.11x
libswiftMetal.dylib 40960 36864 -10.0% 1.11x
libswiftAVFoundation.dylib 57344 53248 -7.1% 1.08x
libswiftXCTest.dylib 73728 69632 -5.6% 1.06x
libswiftAppKit.dylib 77824 73728 -5.3% 1.06x
libswiftFoundation.dylib 1585152 1515520 -4.4% 1.05x
libswiftStdlibUnittest.dylib 348160 335872 -3.5% 1.04x
libswiftCore.dylib 3764224 3678208 -2.3% 1.02x
How to read the data The tables contain differences in performance which are larger than 8% and differences in code size which are larger than 1%.

If you see any unexpected regressions, you should consider fixing the
regressions before you merge the PR.

Noise: Sometimes the performance results (not code size!) contain false
alarms. Unexpected regressions which are marked with '(?)' are probably noise.
If you see regressions which you cannot explain you can try to run the
benchmarks again. If regressions still show up, please consult with the
performance team (@eeckstein).

Hardware Overview
  Model Name: Mac mini
  Model Identifier: Macmini8,1
  Processor Name: Intel Core i7
  Processor Speed: 3.2 GHz
  Number of Processors: 1
  Total Number of Cores: 6
  L2 Cache (per Core): 256 KB
  L3 Cache: 12 MB
  Memory: 64 GB

When we generate code that asks for complete metadata for a fully concrete specific type that
doesn't have trivial metadata access, like `(Int, String)` or `[String: [Any]]`,
generate a cache variable that points to a mangled name, and use a common accessor function
that turns that cache variable into a pointer to the instantiated metadata. This saves a bunch
of code size, and should have minimal runtime impact, since the demangling of any string only
has to happen once.

This mostly just works, though it exposed a couple of issues:

- Mangling a type ref including objc protocols didn't cause the objc protocol record to get
  instantiated. Fixed as part of this patch.
- The runtime type demangler doesn't correctly handle retroactive conformances. If there are
  multiple retroactive conformances in a process at runtime, then even though the mangled string
  refers to a specific conformance, the runtime still just picks one without listening to the
  mangler. This is left to fix later, rdar://problem/53828345.

There is some more follow-up work that we can do to further improve the gains:

- We could improve the runtime-provided entry points, adding versions that don't require size
  to be cached, and which can handle arbitrary metadata requests. This would allow for mangled
  names to also be used for incomplete metadata accesses and improve code size of some generic
  type accessors. However, we'd only be able to take advantage of the new entry points in
  OSes that ship a new runtime.
- We could choose to always symbolic reference all type references, which would generally reduce
  the size of mangled strings, as well as make runtime demangling more efficient, since it wouldn't
  need to hit the runtime caches. This would however require that we be able to handle symbolic
  references across files in the MetadataReader in order to avoid regressing remote mirror
  functionality.
On i386 Darwin, the linker appears to garble indirect symbolic references.
@jckarter jckarter force-pushed the type-metadata-by-mangled-name branch from 93f673d to 5d05809 Compare August 2, 2019 21:29
@jckarter
Copy link
Contributor Author

jckarter commented Aug 2, 2019

@swift-ci Please benchmark

@jckarter
Copy link
Contributor Author

jckarter commented Aug 2, 2019

@swift-ci Please test

@swift-ci
Copy link
Contributor

swift-ci commented Aug 2, 2019

Build failed
Swift Test Linux Platform
Git Sha - 2dd6697b5810aa797baed9f99d884606e8935645

@swift-ci
Copy link
Contributor

swift-ci commented Aug 2, 2019

Build failed
Swift Test OS X Platform
Git Sha - 2dd6697b5810aa797baed9f99d884606e8935645

@swift-ci
Copy link
Contributor

swift-ci commented Aug 2, 2019

Performance: -O

Regression OLD NEW DELTA RATIO
PrefixArray 13 26 +100.0% 0.50x
ArraySetElement 240 305 +27.1% 0.79x
ProtocolDispatch 174 217 +24.7% 0.80x
MapReduce 194 236 +21.6% 0.82x (?)
ClosedRangeOverlapsClosedRange 41 48 +17.1% 0.85x (?)
DataSubscriptSmall 13 15 +15.4% 0.87x
DataCountMedium 13 15 +15.4% 0.87x
SequenceAlgosContiguousArray 1150 1310 +13.9% 0.88x (?)
FlattenListLoop 2225 2511 +12.9% 0.89x (?)
Set.subtracting.Empty.Box 8 9 +12.5% 0.89x (?)
Array2D 3696 4128 +11.7% 0.90x (?)
DistinctClassFieldAccesses 174 194 +11.5% 0.90x
StringToDataSmall 500 550 +10.0% 0.91x (?)
ReversedDictionary2 239 260 +8.8% 0.92x
 
Improvement OLD NEW DELTA RATIO
DropFirstSequence 44 33 -25.0% 1.33x
DropFirstSequenceLazy 44 33 -25.0% 1.33x (?)
DropWhileCountableRangeLazy 58 44 -24.1% 1.32x
Dictionary4 199 154 -22.6% 1.29x
DataCreateEmpty 100 80 -20.0% 1.25x
Dictionary4OfObjects 237 196 -17.3% 1.21x
DropWhileAnySeqCntRange 50 43 -14.0% 1.16x
PrefixArrayLazy 15 13 -13.3% 1.15x (?)
ParseInt.Small.UncommonRadix 220 191 -13.2% 1.15x
Set.isDisjoint.Empty.Box 101 89 -11.9% 1.13x
Set.isDisjoint.Seq.Empty.Box 88 78 -11.4% 1.13x
ParseInt.Small.Binary 323 288 -10.8% 1.12x (?)
Set.isDisjoint.Seq.Box.Empty 75 67 -10.7% 1.12x (?)
StrComplexWalk 2100 1880 -10.5% 1.12x
Data.init.Sequence.2049B.Count.I 85 77 -9.4% 1.10x (?)
ArrayAppendUTF16Substring 11484 10440 -9.1% 1.10x (?)
ArrayAppendAsciiSubstring 11484 10440 -9.1% 1.10x (?)
ArrayAppendLatin1Substring 11700 10656 -8.9% 1.10x (?)
DataCreateEmptyArray 1700 1550 -8.8% 1.10x (?)
DataCreateSmallArray 2350 2150 -8.5% 1.09x (?)
Data.init.Sequence.2047B.Count.I 84 77 -8.3% 1.09x (?)
Set.isStrictSubset.Seq.Int.Empty 129 119 -7.8% 1.08x (?)
IterateData 902 834 -7.5% 1.08x (?)
MapReduceLazyCollectionShort 28 26 -7.1% 1.08x (?)
PolymorphicCalls 15 14 -6.7% 1.07x (?)

Code size: -O

Regression OLD NEW DELTA RATIO
ProtocolDispatch.o 765 820 +7.2% 0.93x
IterateData.o 1693 1811 +7.0% 0.93x
TypeFlood.o 903 963 +6.6% 0.94x
CaptureProp.o 906 963 +6.3% 0.94x
CharacterLiteralsLarge.o 883 938 +6.2% 0.94x
Radix2CooleyTukey.o 5215 5516 +5.8% 0.95x
ArraySetElement.o 1135 1195 +5.3% 0.95x
Sim2DArray.o 1207 1267 +5.0% 0.95x
CharacterLiteralsSmall.o 1324 1386 +4.7% 0.96x
SuperChars.o 1462 1526 +4.4% 0.96x
NSError.o 1294 1348 +4.2% 0.96x
Chars.o 1619 1683 +4.0% 0.96x
RangeIteration.o 1684 1748 +3.8% 0.96x
InsertCharacter.o 5144 5336 +3.7% 0.96x
RandomValues.o 2894 2991 +3.4% 0.97x
StrToInt.o 3508 3613 +3.0% 0.97x
ErrorHandling.o 2969 3055 +2.9% 0.97x
CharacterProperties.o 19292 19827 +2.8% 0.97x
Join.o 2272 2334 +2.7% 0.97x
StackPromo.o 1939 1986 +2.4% 0.98x
Fibonacci.o 1612 1650 +2.4% 0.98x
PointerArithmetics.o 1759 1799 +2.3% 0.98x
OpenClose.o 3218 3286 +2.1% 0.98x
BitCount.o 1876 1914 +2.0% 0.98x
ArrayOfPOD.o 2385 2431 +1.9% 0.98x
XorLoop.o 2012 2050 +1.9% 0.98x
MonteCarloPi.o 1593 1623 +1.9% 0.98x
ChainedFilterMap.o 2669 2717 +1.8% 0.98x
DictionaryLiteral.o 1251 1273 +1.8% 0.98x
RangeReplaceableCollectionPlusDefault.o 6077 6182 +1.7% 0.98x
NSDictionaryCastToSwift.o 1657 1685 +1.7% 0.98x
RecursiveOwnedParameter.o 1382 1405 +1.7% 0.98x
FloatingPointPrinting.o 5927 6024 +1.6% 0.98x
Hanoi.o 3528 3577 +1.4% 0.99x
SevenBoom.o 1642 1664 +1.3% 0.99x
ByteSwap.o 1652 1674 +1.3% 0.99x
Memset.o 2148 2176 +1.3% 0.99x
ProtocolDispatch2.o 1740 1762 +1.3% 0.99x
Ackermann.o 1884 1906 +1.2% 0.99x
Exclusivity.o 4420 4469 +1.1% 0.99x
PopFront.o 5181 5237 +1.1% 0.99x
 
Improvement OLD NEW DELTA RATIO
ArrayOfGenericRef.o 15077 11803 -21.7% 1.28x
DictOfArraysToArrayOfDicts.o 29949 27144 -9.4% 1.10x
PolymorphicCalls.o 8544 7750 -9.3% 1.10x
DictionaryGroup.o 18235 16643 -8.7% 1.10x
Prefix.o 23544 21490 -8.7% 1.10x
RangeOverlaps.o 10767 9912 -7.9% 1.09x
DropWhile.o 23363 21569 -7.7% 1.08x
Array2D.o 4495 4156 -7.5% 1.08x
ReversedCollections.o 11491 10714 -6.8% 1.07x
RC4.o 4068 3816 -6.2% 1.07x
LinkedList.o 2376 2231 -6.1% 1.06x
LazyFilter.o 11092 10431 -6.0% 1.06x
FlattenList.o 6279 5918 -5.7% 1.06x
Combos.o 7232 6834 -5.5% 1.06x
DropFirst.o 23731 22429 -5.5% 1.06x
NSStringConversion.o 9243 8741 -5.4% 1.06x
ArrayOfRef.o 12379 11745 -5.1% 1.05x
BucketSort.o 11618 11047 -4.9% 1.05x
PrefixWhile.o 21565 20509 -4.9% 1.05x
DictTest.o 20601 19600 -4.9% 1.05x
DictTest2.o 15528 14784 -4.8% 1.05x
ClassArrayGetter.o 5715 5458 -4.5% 1.05x
NopDeinit.o 5664 5424 -4.2% 1.04x
CString.o 8272 7922 -4.2% 1.04x
DropLast.o 25410 24358 -4.1% 1.04x
ObserverClosure.o 3247 3116 -4.0% 1.04x
DictionarySubscriptDefault.o 28778 27622 -4.0% 1.04x
Suffix.o 25184 24188 -4.0% 1.04x
NIOChannelPipeline.o 4357 4185 -3.9% 1.04x
ObserverPartiallyAppliedMethod.o 3535 3403 -3.7% 1.04x
UTF8Decode.o 13034 12550 -3.7% 1.04x
Diffing.o 9134 8812 -3.5% 1.04x
DriverUtils.o 155317 149853 -3.5% 1.04x
StringEdits.o 12151 11733 -3.4% 1.04x
DictionarySwap.o 21986 21247 -3.4% 1.03x
DictionaryCompactMapValues.o 18939 18336 -3.2% 1.03x
DictTest3.o 22776 22064 -3.1% 1.03x
SetTests.o 153118 148355 -3.1% 1.03x
DictionaryRemove.o 16472 15961 -3.1% 1.03x
DictionaryBridge.o 3390 3286 -3.1% 1.03x
BinaryFloatingPointConversionFromBinaryInteger.o 26504 25696 -3.0% 1.03x
ObserverForwarderStruct.o 3648 3538 -3.0% 1.03x
Codable.o 26675 25897 -2.9% 1.03x
RGBHistogram.o 27738 26979 -2.7% 1.03x
WordCount.o 45164 43948 -2.7% 1.03x
ObserverUnappliedMethod.o 5226 5086 -2.7% 1.03x
COWTree.o 13042 12698 -2.6% 1.03x
ArrayAppend.o 34955 34042 -2.6% 1.03x
DictTest4Legacy.o 24640 24011 -2.6% 1.03x
ArraySubscript.o 3764 3670 -2.5% 1.03x
CSVParsing.o 60559 59048 -2.5% 1.03x
DictionaryOfAnyHashableStrings.o 10372 10132 -2.3% 1.02x
DictTest4.o 23400 22892 -2.2% 1.02x
ObjectiveCBridging.o 60886 59601 -2.1% 1.02x
SortIntPyramids.o 12453 12215 -1.9% 1.02x
DictionaryKeysContains.o 10105 9930 -1.7% 1.02x
TwoSum.o 5508 5414 -1.7% 1.02x
Breadcrumbs.o 45437 44666 -1.7% 1.02x
ExistentialPerformance.o 47173 46401 -1.6% 1.02x
SortLettersInPlace.o 9164 9015 -1.6% 1.02x
Queue.o 11242 11065 -1.6% 1.02x
Prims.o 16984 16722 -1.5% 1.02x
StringInterpolation.o 7339 7233 -1.4% 1.01x
PrimsSplit.o 17054 16810 -1.4% 1.01x
MapReduce.o 31298 30851 -1.4% 1.01x
DictionaryCopy.o 10933 10779 -1.4% 1.01x
SequenceAlgos.o 20405 20127 -1.4% 1.01x
AngryPhonebook.o 10251 10114 -1.3% 1.01x
IntegerParsing.o 19820 19566 -1.3% 1.01x
BinaryFloatingPointProperties.o 7580 7490 -1.2% 1.01x
Histogram.o 4171 4124 -1.1% 1.01x
StringRemoveDupes.o 7552 7467 -1.1% 1.01x
ArrayOfGenericPOD.o 4041 3999 -1.0% 1.01x

Performance: -Osize

Regression OLD NEW DELTA RATIO
SuffixArray 4 9 +125.0% 0.44x
PrefixWhileCountableRangeLazy 16 26 +62.5% 0.62x
DataCreateMedium 4200 6400 +52.4% 0.66x
DropLastCountableRange 6 9 +50.0% 0.67x (?)
DropLastCountableRangeLazy 6 9 +50.0% 0.67x
DropFirstSequence 33 49 +48.5% 0.67x
DropFirstSequenceLazy 33 49 +48.5% 0.67x
DropWhileArray 24 35 +45.8% 0.69x
DropWhileAnyCollection 81 112 +38.3% 0.72x
PrefixWhileArray 40 53 +32.5% 0.75x (?)
SuffixAnyCollection 28 37 +32.1% 0.76x
PrefixWhileAnyCollection 99 129 +30.3% 0.77x
DropWhileCountableRangeLazy 45 58 +28.9% 0.78x
MapReduce 215 258 +20.0% 0.83x (?)
ObjectiveCBridgeStubDateAccess 130 152 +16.9% 0.86x (?)
DropFirstAnyCollection 89 104 +16.9% 0.86x (?)
ArraySetElement 262 305 +16.4% 0.86x (?)
DataCountSmall 13 15 +15.4% 0.87x (?)
DataSubscriptSmall 13 15 +15.4% 0.87x
ArrayOfPOD 336 383 +14.0% 0.88x (?)
PrefixCountableRange 15 17 +13.3% 0.88x (?)
DataCountMedium 15 17 +13.3% 0.88x (?)
RangeAssignment 197 223 +13.2% 0.88x
RandomShuffleLCG2 368 416 +13.0% 0.88x
Array2D 3456 3904 +13.0% 0.89x
PrefixWhileAnySeqCRangeIter 187 210 +12.3% 0.89x
PrefixWhileAnySeqCntRange 187 210 +12.3% 0.89x
FlattenListLoop 2143 2363 +10.3% 0.91x (?)
MapReduceAnyCollection 238 259 +8.8% 0.92x (?)
DataSetCountSmall 74 80 +8.1% 0.93x (?)
RangeOverlapsClosedRange 51 55 +7.8% 0.93x (?)
 
Improvement OLD NEW DELTA RATIO
PrefixArrayLazy 26 14 -46.2% 1.86x
DropFirstArray 26 14 -46.2% 1.86x
MapReduceLazyCollectionShort 47 26 -44.7% 1.81x (?)
SuffixCountableRange 9 5 -44.4% 1.80x (?)
DropWhileCountableRange 31 19 -38.7% 1.63x
PrefixCountableRangeLazy 26 17 -34.6% 1.53x
PrefixAnyCollection 103 73 -29.1% 1.41x
DropLastAnyCollection 38 28 -26.3% 1.36x
DropFirstCountableRangeLazy 18 14 -22.2% 1.29x (?)
ArrayAppendSequence 850 680 -20.0% 1.25x (?)
DataCreateEmpty 100 80 -20.0% 1.25x
Dictionary4 204 164 -19.6% 1.24x
DropFirstAnySeqCRangeIterLazy 127 103 -18.9% 1.23x
StringEqualPointerComparison 130 108 -16.9% 1.20x (?)
ClosedRangeOverlapsClosedRange 48 41 -14.6% 1.17x
PrefixWhileAnyCollectionLazy 94 81 -13.8% 1.16x
PrefixWhileAnySeqCRangeIterLazy 94 81 -13.8% 1.16x
PrefixWhileAnySeqCntRangeLazy 94 81 -13.8% 1.16x
BitCount 168 146 -13.1% 1.15x (?)
Set.isDisjoint.Seq.Empty.Box 101 89 -11.9% 1.13x (?)
Set.isStrictSubset.Int.Empty 62 55 -11.3% 1.13x (?)
Set.isDisjoint.Seq.Empty.Int 98 87 -11.2% 1.13x (?)
Set.isDisjoint.Empty.Int 98 87 -11.2% 1.13x
Set.subtracting.Empty.Box 9 8 -11.1% 1.12x
Set.isSuperset.Seq.Int.Empty 100 89 -11.0% 1.12x (?)
Set.isSuperset.Seq.Empty.Int 57 51 -10.5% 1.12x (?)
DropWhileAnySeqCRangeIterLazy 130 117 -10.0% 1.11x (?)
Set.isDisjoint.Int.Empty 100 90 -10.0% 1.11x (?)
ParseInt.Small.Decimal 201 182 -9.5% 1.10x (?)
Set.isDisjoint.Seq.Int100 130 118 -9.2% 1.10x (?)
CharIteration_punctuated_unicodeScalars 440 400 -9.1% 1.10x (?)
ParseInt.Small.UncommonRadix 215 196 -8.8% 1.10x (?)
CaptureProp 2810 2570 -8.5% 1.09x
CharIteration_ascii_unicodeScalars 1880 1720 -8.5% 1.09x
Set.isSubset.Int.Empty 59 54 -8.5% 1.09x (?)
Set.isSubset.Empty.Int 134 123 -8.2% 1.09x (?)
SequenceAlgosArray 1960 1800 -8.2% 1.09x (?)
Set.isStrictSubset.Seq.Int.Empty 137 126 -8.0% 1.09x (?)
SetIsSubsetInt0 212 195 -8.0% 1.09x (?)
CharIteration_tweet_unicodeScalars 3720 3440 -7.5% 1.08x (?)
IterateData 900 834 -7.3% 1.08x
ParseFloat.Float.Exp 14 13 -7.1% 1.08x (?)
DropWhileSequence 14 13 -7.1% 1.08x (?)

Code size: -Osize

Regression OLD NEW DELTA RATIO
Radix2CooleyTukey.o 4948 5236 +5.8% 0.94x
IterateData.o 1741 1811 +4.0% 0.96x
TypeFlood.o 972 1011 +4.0% 0.96x
CharacterLiteralsLarge.o 948 986 +4.0% 0.96x
CaptureProp.o 1101 1139 +3.5% 0.97x
CharacterLiteralsSmall.o 1428 1466 +2.7% 0.97x
ProtocolDispatch.o 846 868 +2.6% 0.97x
NSError.o 1662 1700 +2.3% 0.98x
CharacterProperties.o 19612 20035 +2.2% 0.98x
RecursiveOwnedParameter.o 1313 1336 +1.8% 0.98x
StackPromo.o 1931 1962 +1.6% 0.98x
InsertCharacter.o 4751 4815 +1.3% 0.99x
BitCount.o 1634 1656 +1.3% 0.99x
Fibonacci.o 1642 1664 +1.3% 0.99x
PolymorphicCalls.o 7968 8070 +1.3% 0.99x
AnyHashableWithAClass.o 3211 3250 +1.2% 0.99x
SevenBoom.o 1816 1838 +1.2% 0.99x
 
Improvement OLD NEW DELTA RATIO
DropWhile.o 22236 19588 -11.9% 1.14x
ReversedCollections.o 9850 8695 -11.7% 1.13x
Array2D.o 4594 4107 -10.6% 1.12x
DropFirst.o 21596 19553 -9.5% 1.10x
COWArrayGuaranteedParameterOverhead.o 1467 1334 -9.1% 1.10x
Prefix.o 21345 19471 -8.8% 1.10x
DictionaryLiteral.o 995 921 -7.4% 1.08x
PrefixWhile.o 20222 18814 -7.0% 1.07x
ArraySubscript.o 4067 3796 -6.7% 1.07x
DictOfArraysToArrayOfDicts.o 26541 24882 -6.3% 1.07x
DropLast.o 23762 22322 -6.1% 1.06x
ArrayOfGenericPOD.o 4291 4033 -6.0% 1.06x
Combos.o 7792 7330 -5.9% 1.06x
FlattenList.o 6679 6286 -5.9% 1.06x
Suffix.o 23640 22320 -5.6% 1.06x
RangeOverlaps.o 11775 11140 -5.4% 1.06x
ArrayOfGenericRef.o 13709 12979 -5.3% 1.06x
LazyFilter.o 8905 8432 -5.3% 1.06x
DictionaryBridgeToObjC.o 4619 4399 -4.8% 1.05x
ArrayInClass.o 4548 4333 -4.7% 1.05x
DictionarySubscriptDefault.o 18890 18012 -4.6% 1.05x
ArraySetElement.o 1309 1251 -4.4% 1.05x
DictTest2.o 9689 9266 -4.4% 1.05x
Memset.o 2098 2008 -4.3% 1.04x
DictionaryKeysContains.o 8156 7810 -4.2% 1.04x
RC4.o 3586 3436 -4.2% 1.04x
ChainedFilterMap.o 3493 3349 -4.1% 1.04x
Sim2DArray.o 1421 1363 -4.1% 1.04x
XorLoop.o 2082 2000 -3.9% 1.04x
DictTest.o 12409 11935 -3.8% 1.04x
DictionaryCompactMapValues.o 14133 13632 -3.5% 1.04x
ArrayLiteral.o 3189 3077 -3.5% 1.04x
RandomShuffle.o 3799 3669 -3.4% 1.04x
Walsh.o 5796 5600 -3.4% 1.03x
ObserverPartiallyAppliedMethod.o 3911 3779 -3.4% 1.03x
BinaryFloatingPointProperties.o 7412 7170 -3.3% 1.03x
RomanNumbers.o 8602 8329 -3.2% 1.03x
CString.o 8072 7818 -3.1% 1.03x
DictionaryGroup.o 14319 13870 -3.1% 1.03x
Prims.o 14192 13752 -3.1% 1.03x
RemoveWhere.o 24294 23543 -3.1% 1.03x
ObserverClosure.o 3557 3449 -3.0% 1.03x
Ackermann.o 1957 1898 -3.0% 1.03x
ClassArrayGetter.o 5753 5580 -3.0% 1.03x
WordCount.o 40957 39762 -2.9% 1.03x
PrimsSplit.o 14262 13852 -2.9% 1.03x
LinkedList.o 2313 2248 -2.8% 1.03x
DictTest3.o 13945 13570 -2.7% 1.03x
ObjectiveCBridging.o 54698 53238 -2.7% 1.03x
MonteCarloE.o 3762 3662 -2.7% 1.03x
UTF8Decode.o 11089 10798 -2.6% 1.03x
SortIntPyramids.o 12921 12584 -2.6% 1.03x
NSDictionaryCastToSwift.o 1722 1678 -2.6% 1.03x
SequenceAlgos.o 20381 19875 -2.5% 1.03x
StringRemoveDupes.o 4857 4737 -2.5% 1.03x
ArrayOfPOD.o 2761 2695 -2.4% 1.02x
Histogram.o 1920 1876 -2.3% 1.02x
SortLettersInPlace.o 9054 8849 -2.3% 1.02x
BucketSort.o 11415 11159 -2.2% 1.02x
Hash.o 19905 19473 -2.2% 1.02x
StringEdits.o 12358 12092 -2.2% 1.02x
SuperChars.o 1600 1566 -2.1% 1.02x
DriverUtils.o 134806 131988 -2.1% 1.02x
ArrayAppend.o 31507 30850 -2.1% 1.02x
Codable.o 26643 26105 -2.0% 1.02x
FloatingPointParsing.o 15258 14950 -2.0% 1.02x
ObserverUnappliedMethod.o 5354 5246 -2.0% 1.02x
PopFrontGeneric.o 4759 4665 -2.0% 1.02x
COWTree.o 13592 13324 -2.0% 1.02x
Join.o 2549 2499 -2.0% 1.02x
Chars.o 1741 1707 -2.0% 1.02x
DiffingMyers.o 9176 8998 -1.9% 1.02x
DictionarySwap.o 16745 16437 -1.8% 1.02x
RangeIteration.o 1770 1738 -1.8% 1.02x
DictionaryCopy.o 7861 7719 -1.8% 1.02x
Phonebook.o 12298 12077 -1.8% 1.02x
ArrayOfRef.o 13091 12857 -1.8% 1.02x
StaticArray.o 12703 12476 -1.8% 1.02x
NibbleSort.o 14366 14112 -1.8% 1.02x
DictionaryRemove.o 11067 10873 -1.8% 1.02x
PointerArithmetics.o 1864 1832 -1.7% 1.02x
RGBHistogram.o 23177 22808 -1.6% 1.02x
MapReduce.o 26074 25675 -1.5% 1.02x
TwoSum.o 3077 3030 -1.5% 1.02x
RangeAssignment.o 5018 4944 -1.5% 1.01x
Breadcrumbs.o 43782 43137 -1.5% 1.01x
ObjectiveCNoBridgingStubs.o 8495 8372 -1.4% 1.01x
CSVParsing.o 60543 59684 -1.4% 1.01x
StringEnum.o 13109 12937 -1.3% 1.01x
LuhnAlgoLazy.o 13588 13434 -1.1% 1.01x
LuhnAlgoEager.o 13590 13436 -1.1% 1.01x
StringWalk.o 34906 34535 -1.1% 1.01x
AngryPhonebook.o 9869 9765 -1.1% 1.01x
StringMatch.o 4577 4530 -1.0% 1.01x

Performance: -Onone

Regression OLD NEW DELTA RATIO
DataSubscriptMedium 43 50 +16.3% 0.86x (?)
ArrayOfGenericPOD2 753 835 +10.9% 0.90x (?)
ArrayAppendReserved 2110 2330 +10.4% 0.91x (?)
ArrayInClass 2195 2375 +8.2% 0.92x (?)
 
Improvement OLD NEW DELTA RATIO
Ackermann 1048 965 -7.9% 1.09x

Code size: -swiftlibs

Regression OLD NEW DELTA RATIO
libswiftSwiftLang.dylib 90112 94208 +4.5% 0.96x
 
Improvement OLD NEW DELTA RATIO
libswiftNaturalLanguage.dylib 40960 36864 -10.0% 1.11x
libswiftMetal.dylib 40960 36864 -10.0% 1.11x
libswiftAVFoundation.dylib 57344 53248 -7.1% 1.08x
libswiftXCTest.dylib 73728 69632 -5.6% 1.06x
libswiftAppKit.dylib 77824 73728 -5.3% 1.06x
libswiftFoundation.dylib 1585152 1507328 -4.9% 1.05x
libswiftStdlibUnittest.dylib 348160 335872 -3.5% 1.04x
libswiftNetwork.dylib 172032 167936 -2.4% 1.02x
libswiftCore.dylib 3764224 3678208 -2.3% 1.02x
How to read the data The tables contain differences in performance which are larger than 8% and differences in code size which are larger than 1%.

If you see any unexpected regressions, you should consider fixing the
regressions before you merge the PR.

Noise: Sometimes the performance results (not code size!) contain false
alarms. Unexpected regressions which are marked with '(?)' are probably noise.
If you see regressions which you cannot explain you can try to run the
benchmarks again. If regressions still show up, please consult with the
performance team (@eeckstein).

Hardware Overview
  Model Name: Mac mini
  Model Identifier: Macmini8,1
  Processor Name: Intel Core i7
  Processor Speed: 3.2 GHz
  Number of Processors: 1
  Total Number of Cores: 6
  L2 Cache (per Core): 256 KB
  L3 Cache: 12 MB
  Memory: 64 GB

@jckarter
Copy link
Contributor Author

jckarter commented Aug 2, 2019

@swift-ci Please test Linux

@swift-ci
Copy link
Contributor

swift-ci commented Aug 3, 2019

Build failed
Swift Test Linux Platform
Git Sha - 5d05809

@jckarter
Copy link
Contributor Author

jckarter commented Aug 3, 2019

@swift-ci Please test Linux

@jckarter jckarter merged commit b7119ee into swiftlang:master Aug 5, 2019
@jckarter
Copy link
Contributor Author

jckarter commented Aug 5, 2019

So I investigated the size and performance regressions, and they look like about what I'd expect—increased one-time initialization time from demangling, and size increases from the added mangled names themselves. In both cases, the effect only really seems noticeable in smaller programs, and I have followup work planned to mitigate both issues. Having mangled names always symbolic-reference nominal types ought to significantly decrease both demangling time and mangled string size.

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