Skip to content

Adopt the new allocation/growth strategy in Array #30270

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

Closed

Conversation

Catfish-Man
Copy link
Contributor

@Catfish-Man Catfish-Man commented Mar 6, 2020

Try growing linearly when small and by 1.6 (~matching Cocoa) when larger, to trade CPU for memory.

Tracking in rdar://59684938

@Catfish-Man Catfish-Man self-assigned this Mar 6, 2020
@Catfish-Man
Copy link
Contributor Author

@swift-ci please smoke benchmark

@Catfish-Man Catfish-Man requested a review from lorentey March 6, 2020 22:24
@Catfish-Man
Copy link
Contributor Author

@swift-ci please test

@swift-ci
Copy link
Contributor

swift-ci commented Mar 6, 2020

Build failed
Swift Test Linux Platform
Git Sha - 76da698fc732708dbe09907a9a75167493df0041

@swift-ci
Copy link
Contributor

swift-ci commented Mar 6, 2020

Build failed
Swift Test OS X Platform
Git Sha - 76da698fc732708dbe09907a9a75167493df0041

@Catfish-Man Catfish-Man force-pushed the make-like-a-tree-and-grow branch from 76da698 to 34b296c Compare March 6, 2020 23:17
@Catfish-Man Catfish-Man force-pushed the make-like-a-tree-and-grow branch from 34b296c to 8856e81 Compare March 6, 2020 23:29
@Catfish-Man
Copy link
Contributor Author

@swift-ci please smoke benchmark

@Catfish-Man
Copy link
Contributor Author

@swift-ci please test

@swift-ci
Copy link
Contributor

swift-ci commented Mar 6, 2020

Build failed
Swift Test Linux Platform
Git Sha - 76da698fc732708dbe09907a9a75167493df0041

@swift-ci
Copy link
Contributor

swift-ci commented Mar 6, 2020

Build failed
Swift Test OS X Platform
Git Sha - 76da698fc732708dbe09907a9a75167493df0041

@Catfish-Man
Copy link
Contributor Author

@swift-ci please test

@Catfish-Man
Copy link
Contributor Author

@swift-ci please benchmark

@swift-ci
Copy link
Contributor

Build failed
Swift Test Linux Platform
Git Sha - 8856e81

@swift-ci
Copy link
Contributor

Build failed
Swift Test OS X Platform
Git Sha - 8856e81

@swift-ci
Copy link
Contributor

Performance: -O

Regression OLD NEW DELTA RATIO
ArrayAppendGenericStructs 1330 4590 +245.1% 0.29x
ArrayAppendOptionals 1330 4540 +241.4% 0.29x
FilterEvenUsingReduceInto 141 182 +29.1% 0.77x
ArrayAppendToGeneric 720 880 +22.2% 0.82x
ArrayPlusEqualArrayOfInt 720 880 +22.2% 0.82x
ArrayAppendToFromGeneric 720 880 +22.2% 0.82x
ArrayAppendFromGeneric 720 880 +22.2% 0.82x (?)
ArrayAppendArrayOfInt 720 880 +22.2% 0.82x (?)
MapReduceSequence 583 703 +20.6% 0.83x
FlattenListFlatMap 8034 9629 +19.9% 0.83x (?)
ArrayPlusEqualFiveElementCollection 7770 9287 +19.5% 0.84x
ArrayAppendRepeatCol 810 950 +17.3% 0.85x
PrefixWhileAnySeqCntRange 308 354 +14.9% 0.87x
PrefixWhileSequence 309 354 +14.6% 0.87x
PrefixWhileAnySeqCRangeIter 309 354 +14.6% 0.87x
RemoveWhereFilterInts 43 49 +14.0% 0.88x
MapReduceClass2 37 42 +13.5% 0.88x
ArrayAppendSequence 1050 1190 +13.3% 0.88x (?)
CSVParsingAlt2 1463 1650 +12.8% 0.89x
DictionarySubscriptDefaultMutationArray 574 647 +12.7% 0.89x
ArrayPlusEqualSingleElementCollection 799 893 +11.8% 0.89x
ArraySubscript 1108 1228 +10.8% 0.90x (?)
StringToDataMedium 3450 3800 +10.1% 0.91x (?)
RandomShuffleLCG2 704 768 +9.1% 0.92x
MapReduceLazyCollectionShort 34 37 +8.8% 0.92x (?)
RemoveWhereSwapInts 59 64 +8.5% 0.92x (?)
Array2D 6944 7520 +8.3% 0.92x (?)
ObjectiveCBridgeFromNSSetAnyObjectToString 72500 78500 +8.3% 0.92x (?)
DropLastSequence 522 562 +7.7% 0.93x
MapReduceAnyCollection 368 396 +7.6% 0.93x
ArrayInitFromSlice 369 397 +7.6% 0.93x (?)
 
Improvement OLD NEW DELTA RATIO
DropWhileSequence 28 19 -32.1% 1.47x
RangeReplaceableCollectionPlusDefault 800 676 -15.5% 1.18x (?)
ArrayPlusEqualThreeElements 1680 1440 -14.3% 1.17x
MapReduceClassShort2 195 168 -13.8% 1.16x
MapReduceAnyCollectionShort 1920 1670 -13.0% 1.15x
CStringShortAscii 1550 1360 -12.3% 1.14x
MapReduceShortString 17 15 -11.8% 1.13x (?)
MapReduceShort 2220 1960 -11.7% 1.13x

Code size: -O

Regression OLD NEW DELTA RATIO
ArraySetElement.o 1240 1444 +16.5% 0.86x
COWArrayGuaranteedParameterOverhead.o 1315 1519 +15.5% 0.87x
ArraySubscript.o 2858 3282 +14.8% 0.87x
Sim2DArray.o 1384 1588 +14.7% 0.87x
Array2D.o 2984 3392 +13.7% 0.88x
LazyFilter.o 8063 9108 +13.0% 0.89x
RangeAssignment.o 3276 3684 +12.5% 0.89x
Join.o 1615 1803 +11.6% 0.90x
DiffingMyers.o 6499 7239 +11.4% 0.90x
MonteCarloE.o 2788 3100 +11.2% 0.90x
StackPromo.o 2217 2437 +9.9% 0.91x
BucketSort.o 8451 9267 +9.7% 0.91x
XorLoop.o 2132 2336 +9.6% 0.91x
Memset.o 2215 2419 +9.2% 0.92x
RandomShuffle.o 3632 3964 +9.1% 0.92x
FlattenList.o 4346 4738 +9.0% 0.92x
ChainedFilterMap.o 3477 3765 +8.3% 0.92x
ObserverClosure.o 2478 2682 +8.2% 0.92x
ReduceInto.o 10932 11824 +8.2% 0.92x
Combos.o 5182 5590 +7.9% 0.93x
ObserverForwarderStruct.o 2852 3072 +7.7% 0.93x
ReversedCollections.o 9254 9946 +7.5% 0.93x
PopFrontGeneric.o 2744 2948 +7.4% 0.93x
ObserverPartiallyAppliedMethod.o 2791 2995 +7.3% 0.93x
SortArrayInClass.o 2738 2926 +6.9% 0.94x
Prims.o 12907 13739 +6.4% 0.94x
PrimsSplit.o 12959 13791 +6.4% 0.94x
MapReduce.o 27943 29679 +6.2% 0.94x
RangeOverlaps.o 6072 6449 +6.2% 0.94x
RC4.o 3927 4163 +6.0% 0.94x
Hanoi.o 3120 3307 +6.0% 0.94x
RemoveWhere.o 17237 18261 +5.9% 0.94x
RomanNumbers.o 6436 6812 +5.8% 0.94x
SortIntPyramids.o 9005 9525 +5.8% 0.95x
PopFront.o 3923 4127 +5.2% 0.95x
ArrayInClass.o 4527 4731 +4.5% 0.96x
ArrayAppend.o 26175 27303 +4.3% 0.96x
ObserverUnappliedMethod.o 5305 5525 +4.1% 0.96x
RGBHistogram.o 21382 22217 +3.9% 0.96x
Breadcrumbs.o 37679 39131 +3.9% 0.96x
Phonebook.o 9963 10339 +3.8% 0.96x
DictionaryGroup.o 12659 13127 +3.7% 0.96x
RangeReplaceableCollectionPlusDefault.o 5564 5768 +3.7% 0.96x
StringEdits.o 10950 11343 +3.6% 0.97x
BinaryFloatingPointProperties.o 5676 5876 +3.5% 0.97x
StringRemoveDupes.o 5573 5761 +3.4% 0.97x
StaticArray.o 11543 11919 +3.3% 0.97x
Walsh.o 6364 6568 +3.2% 0.97x
SortLettersInPlace.o 8421 8685 +3.1% 0.97x
AngryPhonebook.o 9974 10284 +3.1% 0.97x
Queue.o 12165 12541 +3.1% 0.97x
ArrayOfGenericRef.o 8966 9230 +2.9% 0.97x
WordCount.o 38993 40141 +2.9% 0.97x
ArrayOfRef.o 9379 9643 +2.8% 0.97x
RandomTree.o 12391 12723 +2.7% 0.97x
CString.o 7048 7236 +2.7% 0.97x
Diffing.o 8763 8995 +2.6% 0.97x
DictOfArraysToArrayOfDicts.o 22656 23252 +2.6% 0.97x
DropLast.o 23583 24199 +2.6% 0.97x
SortStrings.o 24724 25286 +2.3% 0.98x
ObjectiveCBridgingStubs.o 16789 17165 +2.2% 0.98x
SortLargeExistentials.o 20062 20470 +2.0% 0.98x
DictionaryOfAnyHashableStrings.o 9279 9467 +2.0% 0.98x
ClassArrayGetter.o 3819 3895 +2.0% 0.98x
NopDeinit.o 4007 4083 +1.9% 0.98x
CSVParsing.o 53604 54592 +1.8% 0.98x
FindStringNaive.o 9563 9719 +1.6% 0.98x
Hash.o 23178 23538 +1.6% 0.98x
DriverUtils.o 139474 141526 +1.5% 0.99x
PrimsNonStrongRef.o 120696 122452 +1.5% 0.99x
DictionarySubscriptDefault.o 19859 20139 +1.4% 0.99x
PrefixWhile.o 18212 18432 +1.2% 0.99x
ChaCha.o 13865 14021 +1.1% 0.99x
Substring.o 17397 17585 +1.1% 0.99x
NibbleSort.o 13352 13488 +1.0% 0.99x

Performance: -Osize

Regression OLD NEW DELTA RATIO
ArrayAppendGenericStructs 1330 4320 +224.8% 0.31x
ArrayAppendOptionals 1330 3400 +155.6% 0.39x (?)
FilterEvenUsingReduceInto 151 201 +33.1% 0.75x
MapReduceSequence 623 767 +23.1% 0.81x
ArrayAppendToGeneric 720 880 +22.2% 0.82x
ArrayPlusEqualArrayOfInt 720 880 +22.2% 0.82x
ArrayAppendToFromGeneric 720 880 +22.2% 0.82x
ArrayAppendFromGeneric 720 880 +22.2% 0.82x
ArrayAppendArrayOfInt 720 880 +22.2% 0.82x (?)
ArrayPlusEqualSingleElementCollection 799 940 +17.6% 0.85x
CSVParsingAlt2 1518 1738 +14.5% 0.87x
ArraySubscript 1140 1304 +14.4% 0.87x
DictionarySubscriptDefaultMutationArray 630 715 +13.5% 0.88x
ArrayAppendRepeatCol 1040 1180 +13.5% 0.88x (?)
ArrayAppendSequence 1040 1180 +13.5% 0.88x (?)
ObjectiveCBridgeStubDateAccess 228 257 +12.7% 0.89x
ArrayPlusEqualFiveElementCollection 7807 8658 +10.9% 0.90x
DictionaryOfAnyHashableStrings_lookup 3936 4320 +9.8% 0.91x
DataToStringLargeUnicode 6750 7400 +9.6% 0.91x (?)
NopDeinit 15800 17200 +8.9% 0.92x
ObjectiveCBridgeStubFromNSStringRef 158 172 +8.9% 0.92x (?)
Data.hash.Empty 71 77 +8.5% 0.92x (?)
 
Improvement OLD NEW DELTA RATIO
MapReduceShortString 18 15 -16.7% 1.20x
MapReduceAnyCollectionShort 2060 1760 -14.6% 1.17x (?)
ArrayPlusEqualThreeElements 1840 1590 -13.6% 1.16x
AngryPhonebook.Strasse.Small 938 815 -13.1% 1.15x (?)
CStringShortAscii 1530 1360 -11.1% 1.12x
AngryPhonebook.Cyrillic.Small 804 716 -10.9% 1.12x (?)
AngryPhonebook.Armenian.Small 792 712 -10.1% 1.11x (?)
CharacterLiteralsLarge 111 100 -9.9% 1.11x
BinaryFloatingPointPropertiesBinade 31 28 -9.7% 1.11x (?)
MapReduceShort 2310 2100 -9.1% 1.10x
UTF8Decode_InitFromBytes_ascii_as_ascii 499 457 -8.4% 1.09x (?)
RangeReplaceableCollectionPlusDefault 828 760 -8.2% 1.09x (?)
DataAccessBytesMedium 102 94 -7.8% 1.09x
ObjectiveCBridgeStubNSDateRefAccess 400 371 -7.2% 1.08x (?)
Set.isDisjoint.Int.Empty 99 92 -7.1% 1.08x (?)
CharacterLiteralsSmall 345 322 -6.7% 1.07x (?)
Set.isSubset.Int.Empty 91 85 -6.6% 1.07x (?)

Code size: -Osize

Regression OLD NEW DELTA RATIO
ArraySetElement.o 1286 1559 +21.2% 0.82x
Array2D.o 2724 3291 +20.8% 0.83x
Sim2DArray.o 1318 1591 +20.7% 0.83x
ArraySubscript.o 2832 3404 +20.2% 0.83x
COWArrayGuaranteedParameterOverhead.o 1393 1666 +19.6% 0.84x
RangeOverlaps.o 5790 6899 +19.2% 0.84x
LazyFilter.o 7583 8876 +17.1% 0.85x
Join.o 1655 1911 +15.5% 0.87x
DiffingMyers.o 6659 7679 +15.3% 0.87x
RangeAssignment.o 3202 3650 +14.0% 0.88x
Memset.o 1989 2262 +13.7% 0.88x
XorLoop.o 2042 2318 +13.5% 0.88x
FlattenList.o 3914 4418 +12.9% 0.89x
MonteCarloE.o 2954 3322 +12.5% 0.89x
SortArrayInClass.o 2958 3294 +11.4% 0.90x
StackPromo.o 2193 2437 +11.1% 0.90x
ReversedCollections.o 8777 9709 +10.6% 0.90x
PopFrontGeneric.o 2768 3044 +10.0% 0.91x
ChainedFilterMap.o 3405 3733 +9.6% 0.91x
BucketSort.o 8299 9067 +9.3% 0.92x
Prims.o 12171 13283 +9.1% 0.92x
PrimsSplit.o 12223 13335 +9.1% 0.92x
BinaryFloatingPointProperties.o 5371 5851 +8.9% 0.92x
Combos.o 5502 5990 +8.9% 0.92x
RandomShuffle.o 3878 4217 +8.7% 0.92x
RC4.o 3429 3721 +8.5% 0.92x
RemoveWhere.o 16347 17723 +8.4% 0.92x
RomanNumbers.o 6878 7454 +8.4% 0.92x
ObserverForwarderStruct.o 2992 3229 +7.9% 0.93x
PopFront.o 3561 3837 +7.8% 0.93x
ObserverClosure.o 2858 3077 +7.7% 0.93x
ArrayAppend.o 23223 24911 +7.3% 0.93x
Hanoi.o 3303 3532 +6.9% 0.94x
SortIntPyramids.o 9062 9678 +6.8% 0.94x
ObserverPartiallyAppliedMethod.o 3159 3371 +6.7% 0.94x
StringRemoveDupes.o 3895 4155 +6.7% 0.94x
Walsh.o 4322 4598 +6.4% 0.94x
ArrayOfGenericRef.o 9230 9814 +6.3% 0.94x
ArrayOfRef.o 9587 10171 +6.1% 0.94x
Breadcrumbs.o 37136 39300 +5.8% 0.94x
RangeReplaceableCollectionPlusDefault.o 4850 5126 +5.7% 0.95x
ArrayInClass.o 4812 5085 +5.7% 0.95x
DictionaryGroup.o 11083 11703 +5.6% 0.95x
MapReduce.o 22501 23701 +5.3% 0.95x
Phonebook.o 9478 9983 +5.3% 0.95x
DictOfArraysToArrayOfDicts.o 21504 22636 +5.3% 0.95x
SortLettersInPlace.o 8108 8516 +5.0% 0.95x
StaticArray.o 10725 11252 +4.9% 0.95x
RGBHistogram.o 20096 21059 +4.8% 0.95x
StringEdits.o 10633 11138 +4.7% 0.95x
ObserverUnappliedMethod.o 5569 5813 +4.4% 0.96x
WordCount.o 37823 39451 +4.3% 0.96x
NibbleSort.o 13000 13528 +4.1% 0.96x
CString.o 6736 6996 +3.9% 0.96x
ReduceInto.o 9414 9754 +3.6% 0.97x
AngryPhonebook.o 9433 9773 +3.6% 0.97x
ClassArrayGetter.o 3818 3950 +3.5% 0.97x
Queue.o 12285 12701 +3.4% 0.97x
PrimsNonStrongRef.o 102132 105360 +3.2% 0.97x
DictionaryOfAnyHashableStrings.o 8456 8716 +3.1% 0.97x
PrefixWhile.o 16556 17040 +2.9% 0.97x
NopDeinit.o 4583 4715 +2.9% 0.97x
DictionarySubscriptDefault.o 17083 17563 +2.8% 0.97x
RandomTree.o 12303 12643 +2.8% 0.97x
ObjectiveCBridgingStubs.o 15381 15797 +2.7% 0.97x
SortStrings.o 27250 27986 +2.7% 0.97x
Diffing.o 8611 8843 +2.7% 0.97x
CSVParsing.o 49844 51128 +2.6% 0.97x
SortLargeExistentials.o 20462 20982 +2.5% 0.98x
IntegerParsing.o 55195 56567 +2.5% 0.98x
FindStringNaive.o 9195 9423 +2.5% 0.98x
Hash.o 20307 20808 +2.5% 0.98x
Suffix.o 21715 22199 +2.2% 0.98x
DropLast.o 21725 22189 +2.1% 0.98x
DriverUtils.o 123740 126264 +2.0% 0.98x
UTF8Decode.o 11575 11806 +2.0% 0.98x
ChaCha.o 12049 12277 +1.9% 0.98x
DropWhile.o 17940 18252 +1.7% 0.98x
Prefix.o 18212 18524 +1.7% 0.98x
DropFirst.o 19071 19383 +1.6% 0.98x
Substring.o 16277 16505 +1.4% 0.99x
StringComparison.o 35976 36464 +1.4% 0.99x
COWTree.o 11884 12016 +1.1% 0.99x

Performance: -Onone

Regression OLD NEW DELTA RATIO
ArrayAppendGenericStructs 1360 4380 +222.1% 0.31x (?)
ArrayAppendOptionals 1360 4360 +220.6% 0.31x
ArrayPlusEqualArrayOfInt 740 910 +23.0% 0.81x
ArrayAppendToFromGeneric 740 900 +21.6% 0.82x
ArrayAppendArrayOfInt 740 900 +21.6% 0.82x (?)
ArrayAppendToGeneric 750 910 +21.3% 0.82x
ArrayAppendFromGeneric 750 910 +21.3% 0.82x (?)
StringHashing_latin1 728 784 +7.7% 0.93x (?)
 
Improvement OLD NEW DELTA RATIO
FloatingPointPrinting_Float_description_uniform 23300 18100 -22.3% 1.29x
FloatingPointPrinting_Float_interpolated 76800 67600 -12.0% 1.14x (?)
StringBuilderWithLongSubstring 3190 2810 -11.9% 1.14x (?)
AngryPhonebook.Strasse.Small 1087 968 -10.9% 1.12x (?)
AngryPhonebook.Cyrillic.Small 1003 897 -10.6% 1.12x (?)
AngryPhonebook.Armenian.Small 942 861 -8.6% 1.09x (?)
ObjectiveCBridgeStubFromNSDateRef 4710 4310 -8.5% 1.09x (?)

Code size: -swiftlibs

Regression OLD NEW DELTA RATIO
libswiftSwiftPrivateLibcExtras.dylib 16384 20480 +25.0% 0.80x
libswiftCoreAudio.dylib 20480 24576 +20.0% 0.83x
libswiftSwiftReflectionTest.dylib 24576 28672 +16.7% 0.86x
libswiftSwiftPrivate.dylib 32768 36864 +12.5% 0.89x
libswiftSwiftOnoneSupport.dylib 155648 167936 +7.9% 0.93x
libswiftCoreGraphics.dylib 57344 61440 +7.1% 0.93x
libswiftStdlibUnittest.dylib 323584 327680 +1.3% 0.99x
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: 12-Core Intel Xeon E5
  Processor Speed: 2.7 GHz
  Number of Processors: 1
  Total Number of Cores: 12
  L2 Cache (per Core): 256 KB
  L3 Cache: 30 MB
  Memory: 64 GB

@Catfish-Man
Copy link
Contributor Author

@swift-ci please benchmark

@swift-ci
Copy link
Contributor

Performance: -O

Regression OLD NEW DELTA RATIO
ArrayAppendGenericStructs 1330 4600 +245.9% 0.29x
ArrayAppendOptionals 1330 4550 +242.1% 0.29x
ObjectiveCBridgeToNSArray 15150 21800 +43.9% 0.69x (?)
FilterEvenUsingReduceInto 139 193 +38.8% 0.72x
ArrayAppendToGeneric 720 880 +22.2% 0.82x
ArrayPlusEqualArrayOfInt 720 880 +22.2% 0.82x (?)
ArrayAppendToFromGeneric 720 880 +22.2% 0.82x
ArrayAppendFromGeneric 720 880 +22.2% 0.82x
ArrayAppendArrayOfInt 720 880 +22.2% 0.82x (?)
MapReduceSequence 607 727 +19.8% 0.83x
ArrayPlusEqualSingleElementCollection 799 940 +17.6% 0.85x
ArrayAppendRepeatCol 810 950 +17.3% 0.85x
ObjectiveCBridgeStubToArrayOfNSString2 4120 4820 +17.0% 0.85x (?)
ArrayPlusEqualFiveElementCollection 8436 9842 +16.7% 0.86x (?)
RemoveWhereFilterInts 46 53 +15.2% 0.87x
DictionarySubscriptDefaultMutationArray 571 657 +15.1% 0.87x (?)
CSVParsingAlt2 1463 1672 +14.3% 0.88x (?)
PrefixWhileSequence 326 371 +13.8% 0.88x
ArraySubscript 1100 1248 +13.5% 0.88x
ArrayAppendSequence 1050 1190 +13.3% 0.88x (?)
MapReduceClass2 40 45 +12.5% 0.89x
StringToDataLargeUnicode 3600 3950 +9.7% 0.91x (?)
FilterEvenUsingReduce 1050 1150 +9.5% 0.91x (?)
DropLastAnySeqCRangeIter 674 738 +9.5% 0.91x (?)
DropLastAnySeqCntRange 671 732 +9.1% 0.92x (?)
ArrayInitFromSlice 367 399 +8.7% 0.92x (?)
PrefixWhileAnySeqCRangeIter 326 354 +8.6% 0.92x (?)
PrefixWhileAnySeqCntRange 326 354 +8.6% 0.92x
FlattenListLoop 4452 4820 +8.3% 0.92x (?)
ObjectiveCBridgeStubNSDateRefAccess 343 371 +8.2% 0.92x (?)
RemoveWhereSwapInts 64 69 +7.8% 0.93x (?)
Array2D 7536 8112 +7.6% 0.93x
 
Improvement OLD NEW DELTA RATIO
DropWhileSequence 28 19 -32.1% 1.47x
MapReduceClassShort2 197 169 -14.2% 1.17x (?)
MapReduceAnyCollectionShort 1930 1680 -13.0% 1.15x (?)
CStringShortAscii 1550 1360 -12.3% 1.14x (?)
MapReduceShortString 17 15 -11.8% 1.13x (?)
MapReduceShort 2230 1980 -11.2% 1.13x (?)
RangeReplaceableCollectionPlusDefault 812 724 -10.8% 1.12x (?)
String.replaceSubrange.RepChar.Small 427 382 -10.5% 1.12x (?)
AngryPhonebook.Armenian.Small 783 711 -9.2% 1.10x (?)
AngryPhonebook.Strasse.Small 918 837 -8.8% 1.10x (?)
DataToStringSmall 2950 2700 -8.5% 1.09x (?)
StringComparison_nonBMPSlowestPrenormal 1690 1560 -7.7% 1.08x
COWArrayGuaranteedParameterOverhead 3450 3200 -7.2% 1.08x (?)
StrToInt 1550 1440 -7.1% 1.08x (?)
StringComparison_emoji 884 824 -6.8% 1.07x (?)

Code size: -O

Regression OLD NEW DELTA RATIO
ArraySubscript.o 2858 3633 +27.1% 0.79x
Array2D.o 2984 3792 +27.1% 0.79x
FlattenList.o 4346 5498 +26.5% 0.79x
RangeAssignment.o 3276 4143 +26.5% 0.79x
BucketSort.o 8451 10319 +22.1% 0.82x
ClassArrayGetter.o 3819 4655 +21.9% 0.82x
ArrayOfGenericRef.o 8966 10750 +19.9% 0.83x
ArrayOfRef.o 9379 11115 +18.5% 0.84x
RangeOverlaps.o 6072 7153 +17.8% 0.85x
RomanNumbers.o 6436 7580 +17.8% 0.85x
LazyFilter.o 8389 9866 +17.6% 0.85x
Combos.o 5070 5950 +17.4% 0.85x
PopFront.o 3923 4583 +16.8% 0.86x
BinaryFloatingPointProperties.o 5676 6596 +16.2% 0.86x
SortIntPyramids.o 9005 10428 +15.8% 0.86x
Join.o 1615 1852 +14.7% 0.87x
Phonebook.o 9963 11299 +13.4% 0.88x
Prims.o 12907 14607 +13.2% 0.88x
PrimsSplit.o 12959 14659 +13.1% 0.88x
RemoveWhere.o 17237 19445 +12.8% 0.89x
DiffingMyers.o 6499 7219 +11.1% 0.90x
Walsh.o 6364 7008 +10.1% 0.91x
ObserverForwarderStruct.o 2852 3136 +10.0% 0.91x
ReversedCollections.o 9254 10162 +9.8% 0.91x
MapReduce.o 27943 30607 +9.5% 0.91x
Breadcrumbs.o 37679 41247 +9.5% 0.91x
Queue.o 12165 13301 +9.3% 0.91x
ObserverClosure.o 2478 2706 +9.2% 0.92x
ObserverPartiallyAppliedMethod.o 2791 3035 +8.7% 0.92x
COWArrayGuaranteedParameterOverhead.o 1315 1428 +8.6% 0.92x
ReduceInto.o 10932 11848 +8.4% 0.92x
PopFrontGeneric.o 2744 2972 +8.3% 0.92x
ChainedFilterMap.o 3477 3765 +8.3% 0.92x
Sim2DArray.o 1384 1497 +8.2% 0.92x
CString.o 7048 7620 +8.1% 0.92x
DictOfArraysToArrayOfDicts.o 22656 24436 +7.9% 0.93x
ArraySetElement.o 1240 1337 +7.8% 0.93x
DictionaryGroup.o 12659 13639 +7.7% 0.93x
StringEdits.o 10950 11767 +7.5% 0.93x
Hanoi.o 3120 3352 +7.4% 0.93x
COWTree.o 11684 12536 +7.3% 0.93x
AngryPhonebook.o 9974 10652 +6.8% 0.94x
MonteCarloE.o 2788 2976 +6.7% 0.94x
StaticArray.o 11543 12302 +6.6% 0.94x
RandomShuffle.o 3632 3857 +6.2% 0.94x
WordCount.o 38993 41337 +6.0% 0.94x
SortLettersInPlace.o 8421 8918 +5.9% 0.94x
FindStringNaive.o 9563 10111 +5.7% 0.95x
ArrayAppend.o 26175 27615 +5.5% 0.95x
ObserverUnappliedMethod.o 5305 5589 +5.4% 0.95x
Memset.o 2215 2328 +5.1% 0.95x
StackPromo.o 2217 2329 +5.1% 0.95x
RGBHistogram.o 21382 22425 +4.9% 0.95x
CSVParsing.o 53636 56200 +4.8% 0.95x
ObjectiveCBridgingStubs.o 16789 17589 +4.8% 0.95x
XorLoop.o 2132 2228 +4.5% 0.96x
DriverUtils.o 138580 144056 +4.0% 0.96x
NibbleSort.o 13304 13820 +3.9% 0.96x
RangeReplaceableCollectionPlusDefault.o 5564 5776 +3.8% 0.96x
SortLargeExistentials.o 20062 20818 +3.8% 0.96x
DropLast.o 24063 24951 +3.7% 0.96x
SortArrayInClass.o 2738 2835 +3.5% 0.97x
SortStrings.o 24724 25566 +3.4% 0.97x
UTF8Decode.o 13452 13908 +3.4% 0.97x
RC4.o 3927 4055 +3.3% 0.97x
PrimsNonStrongRef.o 121032 124864 +3.2% 0.97x
IntegerParsing.o 58733 60529 +3.1% 0.97x
NopDeinit.o 4007 4123 +2.9% 0.97x
StringRemoveDupes.o 5573 5729 +2.8% 0.97x
Diffing.o 8763 8995 +2.6% 0.97x
ArrayInClass.o 4527 4640 +2.5% 0.98x
DictionaryOfAnyHashableStrings.o 9279 9507 +2.5% 0.98x
Suffix.o 24013 24537 +2.2% 0.98x
StringComparison.o 40056 40840 +2.0% 0.98x
RandomTree.o 12359 12599 +1.9% 0.98x
DictionarySubscriptDefault.o 19859 20219 +1.8% 0.98x
Substring.o 17537 17749 +1.2% 0.99x
 
Improvement OLD NEW DELTA RATIO
main.o 54179 53519 -1.2% 1.01x

Performance: -Osize

Regression OLD NEW DELTA RATIO
ArrayAppendGenericStructs 1330 4600 +245.9% 0.29x
ArrayAppendOptionals 1330 4540 +241.4% 0.29x
ObjectiveCBridgeToNSArray 14500 21150 +45.9% 0.69x (?)
FilterEvenUsingReduceInto 146 211 +44.5% 0.69x
ArrayAppendToGeneric 720 880 +22.2% 0.82x
ArrayPlusEqualArrayOfInt 720 880 +22.2% 0.82x
ArrayAppendToFromGeneric 720 880 +22.2% 0.82x
ArrayAppendFromGeneric 720 880 +22.2% 0.82x (?)
ArrayAppendArrayOfInt 720 880 +22.2% 0.82x
ArrayPlusEqualSingleElementCollection 799 940 +17.6% 0.85x (?)
MapReduceSequence 653 768 +17.6% 0.85x
DictionarySubscriptDefaultMutationArray 629 738 +17.3% 0.85x
ArraySubscript 1152 1340 +16.3% 0.86x
RemoveWhereFilterInts 46 53 +15.2% 0.87x
CSVParsingAlt2 1529 1760 +15.1% 0.87x
ArrayAppendRepeatCol 1040 1180 +13.5% 0.88x (?)
ArrayAppendSequence 1040 1180 +13.5% 0.88x (?)
FilterEvenUsingReduce 1090 1230 +12.8% 0.89x (?)
ObjectiveCBridgeStubDateAccess 228 257 +12.7% 0.89x
PrefixWhileAnyCollectionLazy 159 176 +10.7% 0.90x (?)
ArrayPlusEqualFiveElementCollection 8436 9324 +10.5% 0.90x (?)
DictionaryBridgeToObjC_Access 868 955 +10.0% 0.91x (?)
NopDeinit 15800 17200 +8.9% 0.92x (?)
Data.hash.Empty 71 77 +8.5% 0.92x (?)
BucketSort 208 225 +8.2% 0.92x
RemoveWhereMoveInts 37 40 +8.1% 0.93x
ArrayInitFromSlice 367 396 +7.9% 0.93x (?)
 
Improvement OLD NEW DELTA RATIO
DataToStringSmall 3100 2700 -12.9% 1.15x (?)
CStringShortAscii 1550 1360 -12.3% 1.14x
MapReduceAnyCollectionShort 2060 1810 -12.1% 1.14x
MapReduceShortString 18 16 -11.1% 1.12x (?)
String.replaceSubrange.RepChar.Small 426 379 -11.0% 1.12x (?)
AngryPhonebook.Strasse.Small 925 830 -10.3% 1.11x (?)
AngryPhonebook.Armenian.Small 788 711 -9.8% 1.11x (?)
BinaryFloatingPointPropertiesBinade 31 28 -9.7% 1.11x (?)
MapReduceShort 2320 2110 -9.1% 1.10x
DataAccessBytesMedium 103 94 -8.7% 1.10x
StringComparison_nonBMPSlowestPrenormal 1700 1570 -7.6% 1.08x
AngryPhonebook.Cyrillic.Small 798 740 -7.3% 1.08x (?)
StringComparison_slowerPrenormal 1580 1470 -7.0% 1.07x
Set.subtracting.Empty.Box 15 14 -6.7% 1.07x

Code size: -Osize

Regression OLD NEW DELTA RATIO
Array2D.o 2724 3663 +34.5% 0.74x
FlattenList.o 3914 5154 +31.7% 0.76x
ArraySubscript.o 2832 3728 +31.6% 0.76x
RangeOverlaps.o 5790 7576 +30.8% 0.76x
RangeAssignment.o 3202 4082 +27.5% 0.78x
BinaryFloatingPointProperties.o 5371 6587 +22.6% 0.82x
ArrayOfGenericRef.o 9230 11318 +22.6% 0.82x
ClassArrayGetter.o 3818 4660 +22.1% 0.82x
BucketSort.o 8299 10111 +21.8% 0.82x
ArrayOfRef.o 9587 11675 +21.8% 0.82x
LazyFilter.o 8019 9696 +20.9% 0.83x
PopFront.o 3561 4263 +19.7% 0.84x
RomanNumbers.o 6878 8206 +19.3% 0.84x
Join.o 1655 1959 +18.4% 0.84x
Combos.o 5390 6294 +16.8% 0.86x
DiffingMyers.o 6659 7715 +15.9% 0.86x
SortIntPyramids.o 9062 10499 +15.9% 0.86x
Walsh.o 4322 4998 +15.6% 0.86x
Prims.o 12171 14055 +15.5% 0.87x
PrimsSplit.o 12223 14107 +15.4% 0.87x
RemoveWhere.o 16347 18811 +15.1% 0.87x
Sim2DArray.o 1318 1515 +14.9% 0.87x
COWArrayGuaranteedParameterOverhead.o 1393 1590 +14.1% 0.88x
ArraySetElement.o 1286 1467 +14.1% 0.88x
Phonebook.o 9478 10783 +13.8% 0.88x
ReversedCollections.o 8777 9909 +12.9% 0.89x
PopFrontGeneric.o 2768 3080 +11.3% 0.90x
Breadcrumbs.o 37136 41304 +11.2% 0.90x
DictOfArraysToArrayOfDicts.o 21504 23780 +10.6% 0.90x
ObserverClosure.o 2858 3157 +10.5% 0.91x
DictionaryGroup.o 11083 12199 +10.1% 0.91x
ObserverForwarderStruct.o 2992 3293 +10.1% 0.91x
XorLoop.o 2042 2242 +9.8% 0.91x
Queue.o 12285 13469 +9.6% 0.91x
ChainedFilterMap.o 3405 3733 +9.6% 0.91x
MapReduce.o 22501 24629 +9.5% 0.91x
ArrayAppend.o 23223 25383 +9.3% 0.91x
ObserverPartiallyAppliedMethod.o 3159 3451 +9.2% 0.92x
Memset.o 1989 2170 +9.1% 0.92x
CString.o 6736 7348 +9.1% 0.92x
SortArrayInClass.o 2958 3218 +8.8% 0.92x
StringEdits.o 10633 11538 +8.5% 0.92x
Hanoi.o 3303 3580 +8.4% 0.92x
StaticArray.o 10725 11591 +8.1% 0.93x
MonteCarloE.o 2954 3183 +7.8% 0.93x
AngryPhonebook.o 9433 10125 +7.3% 0.93x
COWTree.o 11884 12736 +7.2% 0.93x
StackPromo.o 2193 2345 +6.9% 0.94x
WordCount.o 37823 40431 +6.9% 0.94x
RandomShuffle.o 3878 4140 +6.8% 0.94x
SortLettersInPlace.o 8108 8653 +6.7% 0.94x
NibbleSort.o 13000 13868 +6.7% 0.94x
FindStringNaive.o 9195 9783 +6.4% 0.94x
RangeReplaceableCollectionPlusDefault.o 4850 5158 +6.4% 0.94x
StringRemoveDupes.o 3895 4139 +6.3% 0.94x
RGBHistogram.o 20096 21307 +6.0% 0.94x
IntegerParsing.o 55195 58439 +5.9% 0.94x
PrimsNonStrongRef.o 102516 108484 +5.8% 0.94x
CSVParsing.o 49892 52792 +5.8% 0.95x
ObserverUnappliedMethod.o 5569 5877 +5.5% 0.95x
UTF8Decode.o 11551 12166 +5.3% 0.95x
ObjectiveCBridgingStubs.o 15381 16197 +5.3% 0.95x
RC4.o 3429 3597 +4.9% 0.95x
DriverUtils.o 125158 131026 +4.7% 0.96x
NopDeinit.o 4583 4795 +4.6% 0.96x
ArrayInClass.o 4812 5009 +4.1% 0.96x
SortLargeExistentials.o 20462 21274 +4.0% 0.96x
ReduceInto.o 9414 9770 +3.8% 0.96x
Suffix.o 22227 23063 +3.8% 0.96x
DictionaryOfAnyHashableStrings.o 8456 8764 +3.6% 0.96x
SortStrings.o 27250 28231 +3.6% 0.97x
DropLast.o 22237 23005 +3.5% 0.97x
DictionarySubscriptDefault.o 17083 17643 +3.3% 0.97x
PrefixWhile.o 16556 17024 +2.8% 0.97x
Diffing.o 8611 8843 +2.7% 0.97x
StringComparison.o 36168 37056 +2.5% 0.98x
RandomTree.o 12119 12383 +2.2% 0.98x
DropWhile.o 17940 18252 +1.7% 0.98x
Prefix.o 18724 19036 +1.7% 0.98x
DropFirst.o 19599 19911 +1.6% 0.98x
Substring.o 16609 16869 +1.6% 0.98x
Hash.o 20307 20592 +1.4% 0.99x

Performance: -Onone

Regression OLD NEW DELTA RATIO
ArrayAppendGenericStructs 1360 4560 +235.3% 0.30x
ArrayAppendOptionals 1360 4360 +220.6% 0.31x
ObjectiveCBridgeToNSArray 15000 21750 +45.0% 0.69x (?)
DictionaryBridgeToObjC_Access 1004 1266 +26.1% 0.79x (?)
ArrayAppendArrayOfInt 730 900 +23.3% 0.81x (?)
ArrayAppendToGeneric 740 910 +23.0% 0.81x
ArrayPlusEqualArrayOfInt 740 910 +23.0% 0.81x (?)
ArrayAppendToFromGeneric 740 910 +23.0% 0.81x
ArrayAppendFromGeneric 740 910 +23.0% 0.81x (?)
ObjectiveCBridgeStubToArrayOfNSString2 4140 4880 +17.9% 0.85x (?)
StringUTF16SubstringBuilder 17980 20360 +13.2% 0.88x (?)
CharIteration_russian_unicodeScalars_Backwards 301640 338480 +12.2% 0.89x (?)
CharIteration_chinese_unicodeScalars_Backwards 272000 305040 +12.1% 0.89x (?)
CharIteration_korean_unicodeScalars_Backwards 355640 396520 +11.5% 0.90x (?)
CharIteration_punctuated_unicodeScalars_Backwards 79360 88280 +11.2% 0.90x (?)
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 62240 69160 +11.1% 0.90x (?)
CharIteration_ascii_unicodeScalars_Backwards 357480 393120 +10.0% 0.91x (?)
UTF8Decode_InitDecoding 294 323 +9.9% 0.91x (?)
CharIteration_japanese_unicodeScalars_Backwards 433600 474120 +9.3% 0.91x (?)
CharIteration_tweet_unicodeScalars_Backwards 709800 773600 +9.0% 0.92x (?)
ArrayInitFromSlice 421 454 +7.8% 0.93x (?)
Breadcrumbs.MutatedIdxToUTF16.Mixed 295 318 +7.8% 0.93x (?)
Breadcrumbs.MutatedUTF16ToIdx.Mixed 289 311 +7.6% 0.93x (?)
 
Improvement OLD NEW DELTA RATIO
String.replaceSubrange.RepChar.Small 429 384 -10.5% 1.12x (?)
StringInterpolationSmall 3510 3160 -10.0% 1.11x (?)
AngryPhonebook.Armenian.Small 922 860 -6.7% 1.07x (?)

Code size: -swiftlibs

Regression OLD NEW DELTA RATIO
libswiftSwiftPrivateLibcExtras.dylib 16384 20480 +25.0% 0.80x
libswiftCoreAudio.dylib 20480 24576 +20.0% 0.83x
libswiftSwiftReflectionTest.dylib 24576 28672 +16.7% 0.86x
libswiftSwiftPrivate.dylib 32768 36864 +12.5% 0.89x
libswiftSwiftOnoneSupport.dylib 155648 167936 +7.9% 0.93x
libswiftAVFoundation.dylib 53248 57344 +7.7% 0.93x
libswiftStdlibUnittest.dylib 327680 331776 +1.2% 0.99x
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: 12-Core Intel Xeon E5
  Processor Speed: 2.7 GHz
  Number of Processors: 1
  Total Number of Cores: 12
  L2 Cache (per Core): 256 KB
  L3 Cache: 30 MB
  Memory: 64 GB

@Catfish-Man
Copy link
Contributor Author

Well, that experiment was a dismal failure

(cherry picked from commit ad99b550f49a4765082a482dc94558e83a23e5d5)
@Catfish-Man
Copy link
Contributor Author

The steep regressions in ArrayAppendGenericStructs and ArrayAppendOptionals appear to be artifacts of the exact sizes of array they use, not something representative of a real problem.

Investigating code size further.

@Catfish-Man
Copy link
Contributor Author

@swift-ci please benchmark

@swift-ci
Copy link
Contributor

Performance: -O

Regression OLD NEW DELTA RATIO
ArrayAppendOptionals 580 2660 +358.6% 0.22x
ArrayAppendGenericStructs 580 2610 +350.0% 0.22x
PrefixAnySeqCRangeIter 13 26 +100.0% 0.50x
PrefixAnySeqCntRange 13 26 +100.0% 0.50x
FilterEvenUsingReduceInto 100 131 +31.0% 0.76x
EqualSubstringSubstring 22 28 +27.3% 0.79x
LessSubstringSubstring 22 28 +27.3% 0.79x
EqualSubstringSubstringGenericEquatable 22 28 +27.3% 0.79x (?)
EqualSubstringString 22 28 +27.3% 0.79x
LessSubstringSubstringGenericComparable 22 28 +27.3% 0.79x
EqualStringSubstring 23 28 +21.7% 0.82x
ArrayAppendLazyMap 3300 4010 +21.5% 0.82x
ArrayAppendArrayOfInt 280 340 +21.4% 0.82x (?)
ArrayAppendToGeneric 290 350 +20.7% 0.83x (?)
ArrayPlusEqualArrayOfInt 290 350 +20.7% 0.83x (?)
ArrayAppendToFromGeneric 290 350 +20.7% 0.83x (?)
ArrayAppendFromGeneric 290 340 +17.2% 0.85x (?)
Set.isStrictSuperset.Seq.Empty.Int 151 177 +17.2% 0.85x
ObjectiveCBridgeStubDateAccess 130 152 +16.9% 0.86x
UTF8Decode_InitDecoding 138 160 +15.9% 0.86x
MapReduceSequence 367 421 +14.7% 0.87x
ArrayAppendSequence 510 580 +13.7% 0.88x (?)
LazilyFilteredRange 1940 2200 +13.4% 0.88x
LazilyFilteredArrayContains 21400 23800 +11.2% 0.90x (?)
ArrayPlusEqualSingleElementCollection 423 470 +11.1% 0.90x (?)
CSVParsingAlt2 979 1078 +10.1% 0.91x
DataToStringEmpty 500 550 +10.0% 0.91x (?)
NSStringConversion.Long 497 545 +9.7% 0.91x (?)
StringComparison_longSharedPrefix 322 349 +8.4% 0.92x (?)
PrefixWhileArray 38 41 +7.9% 0.93x (?)
 
Improvement OLD NEW DELTA RATIO
PrefixWhileArrayLazy 26 20 -23.1% 1.30x (?)
SortIntPyramid 450 360 -20.0% 1.25x
MapReduceShortString 13 11 -15.4% 1.18x
ArrayPlusEqualThreeElements 1240 1050 -15.3% 1.18x
MapReduceClassShort2 142 121 -14.8% 1.17x
MapReduceAnyCollectionShort 1390 1200 -13.7% 1.16x
ArrayInClass 955 825 -13.6% 1.16x
RangeReplaceableCollectionPlusDefault 572 496 -13.3% 1.15x (?)
CStringShortAscii 1060 920 -13.2% 1.15x
MapReduceShort 1680 1480 -11.9% 1.14x
RemoveWhereSwapInts 38 34 -10.5% 1.12x (?)
RemoveWhereMoveInts 19 17 -10.5% 1.12x (?)
AngryPhonebook.Strasse.Small 647 580 -10.4% 1.12x (?)
AngryPhonebook.Armenian.Small 556 499 -10.3% 1.11x (?)
AngryPhonebook.Cyrillic.Small 565 508 -10.1% 1.11x (?)
MapReduceAnyCollection 217 196 -9.7% 1.11x (?)
COWArrayGuaranteedParameterOverhead 2550 2350 -7.8% 1.09x (?)
Calculator 153 141 -7.8% 1.09x (?)
ArraySetElement 283 262 -7.4% 1.08x (?)
DistinctClassFieldAccesses 203 188 -7.4% 1.08x (?)
MapReduceNSDecimalNumberShort 346 321 -7.2% 1.08x (?)

Code size: -O

Regression OLD NEW DELTA RATIO
ArraySetElement.o 1240 1546 +24.7% 0.80x
ArraySubscript.o 2858 3562 +24.6% 0.80x
COWArrayGuaranteedParameterOverhead.o 1315 1637 +24.5% 0.80x
Sim2DArray.o 1320 1642 +24.4% 0.80x
Array2D.o 2984 3679 +23.3% 0.81x
MonteCarloE.o 2788 3276 +17.5% 0.85x
Join.o 1615 1893 +17.2% 0.85x
RangeAssignment.o 3276 3836 +17.1% 0.85x
StackPromo.o 2217 2557 +15.3% 0.87x
LazyFilter.o 8389 9650 +15.0% 0.87x
DiffingMyers.o 6499 7471 +15.0% 0.87x
BucketSort.o 8451 9691 +14.7% 0.87x
Memset.o 2215 2537 +14.5% 0.87x
XorLoop.o 2132 2433 +14.1% 0.88x
RandomShuffle.o 3632 4082 +12.4% 0.89x
FlattenList.o 4346 4850 +11.6% 0.90x
Combos.o 5070 5654 +11.5% 0.90x
SortArrayInClass.o 2738 3044 +11.2% 0.90x
ObserverClosure.o 2478 2754 +11.1% 0.90x
ReversedCollections.o 9254 10258 +10.8% 0.90x
ObserverForwarderStruct.o 2852 3160 +10.8% 0.90x
ObserverPartiallyAppliedMethod.o 2791 3083 +10.5% 0.91x
Prims.o 12907 14187 +9.9% 0.91x
PrimsSplit.o 12959 14239 +9.9% 0.91x
RangeOverlaps.o 6072 6658 +9.7% 0.91x
ChainedFilterMap.o 3477 3797 +9.2% 0.92x
PopFrontGeneric.o 2744 2996 +9.2% 0.92x
SortIntPyramids.o 9005 9821 +9.1% 0.92x
ReduceInto.o 10932 11896 +8.8% 0.92x
Hanoi.o 3120 3393 +8.7% 0.92x
RC4.o 3927 4267 +8.7% 0.92x
RomanNumbers.o 6436 6972 +8.3% 0.92x
PopFront.o 3923 4247 +8.3% 0.92x
RemoveWhere.o 17237 18581 +7.8% 0.93x
Phonebook.o 9963 10659 +7.0% 0.93x
StaticArray.o 11991 12813 +6.9% 0.94x
Breadcrumbs.o 37679 40243 +6.8% 0.94x
SortLettersInPlace.o 8421 8981 +6.7% 0.94x
ArrayInClass.o 4527 4817 +6.4% 0.94x
MapReduce.o 27943 29583 +5.9% 0.94x
ObserverUnappliedMethod.o 5305 5613 +5.8% 0.95x
DictionaryGroup.o 12659 13391 +5.8% 0.95x
ArrayOfGenericRef.o 8966 9478 +5.7% 0.95x
BinaryFloatingPointProperties.o 5676 5997 +5.7% 0.95x
Walsh.o 6364 6696 +5.2% 0.95x
ArrayAppend.o 26175 27511 +5.1% 0.95x
RGBHistogram.o 21382 22473 +5.1% 0.95x
StringEdits.o 10950 11487 +4.9% 0.95x
RangeReplaceableCollectionPlusDefault.o 5564 5824 +4.7% 0.96x
StringRemoveDupes.o 5573 5833 +4.7% 0.96x
ArrayOfRef.o 9379 9795 +4.4% 0.96x
Queue.o 12165 12693 +4.3% 0.96x
ClassArrayGetter.o 3819 3983 +4.3% 0.96x
WordCount.o 38993 40613 +4.2% 0.96x
SortStrings.o 24724 25652 +3.8% 0.96x
NopDeinit.o 4007 4155 +3.7% 0.96x
CString.o 7048 7308 +3.7% 0.96x
RandomTree.o 12359 12811 +3.7% 0.96x
DictOfArraysToArrayOfDicts.o 22656 23484 +3.7% 0.96x
AngryPhonebook.o 9974 10313 +3.4% 0.97x
DropLast.o 24063 24791 +3.0% 0.97x
NibbleSort.o 13304 13704 +3.0% 0.97x
SortLargeExistentials.o 20062 20638 +2.9% 0.97x
DictionaryOfAnyHashableStrings.o 9279 9539 +2.8% 0.97x
ObjectiveCBridgingStubs.o 16789 17253 +2.8% 0.97x
CSVParsing.o 53636 54896 +2.3% 0.98x
DictionarySubscriptDefault.o 19859 20299 +2.2% 0.98x
PrimsNonStrongRef.o 121032 123692 +2.2% 0.98x
Hash.o 23178 23675 +2.1% 0.98x
DriverUtils.o 138580 141544 +2.1% 0.98x
Diffing.o 8763 8947 +2.1% 0.98x
COWTree.o 11684 11920 +2.0% 0.98x
FindStringNaive.o 9563 9751 +2.0% 0.98x
ChaCha.o 14361 14621 +1.8% 0.98x
PrefixWhile.o 18212 18504 +1.6% 0.98x
UTF8Decode.o 13452 13644 +1.4% 0.99x
Substring.o 17537 17781 +1.4% 0.99x
Suffix.o 24013 24345 +1.4% 0.99x
StringComparison.o 40056 40560 +1.3% 0.99x
IntegerParsing.o 58733 59449 +1.2% 0.99x
 
Improvement OLD NEW DELTA RATIO
main.o 54179 53559 -1.1% 1.01x

Performance: -Osize

Regression OLD NEW DELTA RATIO
ArrayAppendGenericStructs 580 2640 +355.2% 0.22x
ArrayAppendOptionals 580 2530 +336.2% 0.23x
DropLastArray 5 9 +80.0% 0.56x
DropLastArrayLazy 5 9 +80.0% 0.56x
DropLastCountableRangeLazy 5 9 +80.0% 0.56x
SumUsingReduceInto 282 439 +55.7% 0.64x
SumUsingReduce 282 439 +55.7% 0.64x
FilterEvenUsingReduceInto 104 146 +40.4% 0.71x
PrefixWhileArray 38 51 +34.2% 0.75x
PrefixWhileArrayLazy 20 26 +30.0% 0.77x
PrefixWhileCountableRangeLazy 20 26 +30.0% 0.77x
LessSubstringSubstring 22 28 +27.3% 0.79x
EqualSubstringString 22 28 +27.3% 0.79x
LessSubstringSubstringGenericComparable 22 28 +27.3% 0.79x
EqualSubstringSubstring 23 29 +26.1% 0.79x
EqualStringSubstring 23 29 +26.1% 0.79x
EqualSubstringSubstringGenericEquatable 23 29 +26.1% 0.79x (?)
DropLastAnyCollection 27 34 +25.9% 0.79x
ArrayAppendToGeneric 280 350 +25.0% 0.80x
ArrayPlusEqualArrayOfInt 280 350 +25.0% 0.80x (?)
ArrayAppendToFromGeneric 280 350 +25.0% 0.80x
ArrayAppendFromGeneric 280 350 +25.0% 0.80x (?)
ArrayAppendArrayOfInt 280 350 +25.0% 0.80x (?)
MapReduceSequence 396 477 +20.5% 0.83x
PrefixWhileAnyCollection 109 130 +19.3% 0.84x
UTF8Decode_InitDecoding 136 161 +18.4% 0.84x
ObjectiveCBridgeStubDateAccess 130 152 +16.9% 0.86x
ArrayAppendLazyMap 4170 4760 +14.1% 0.88x
ArrayAppendRepeatCol 500 570 +14.0% 0.88x (?)
ArrayAppendSequence 550 620 +12.7% 0.89x
NopDeinit 8800 9900 +12.5% 0.89x (?)
NSStringConversion.Long 492 553 +12.4% 0.89x (?)
CSVParsingAlt2 1023 1144 +11.8% 0.89x
ParseFloat.Float.Exp 9 10 +11.1% 0.90x (?)
DictionarySubscriptDefaultMutationArray 444 490 +10.4% 0.91x
DataToStringEmpty 500 550 +10.0% 0.91x (?)
ArrayPlusEqualSingleElementCollection 470 517 +10.0% 0.91x (?)
ArrayInitFromSlice 236 258 +9.3% 0.91x (?)
DropLastSequence 427 464 +8.7% 0.92x (?)
Set.isDisjoint.Seq.Int.Empty 47 51 +8.5% 0.92x (?)
DropLastSequenceLazy 427 463 +8.4% 0.92x (?)
Set.isSubset.Seq.Int.Empty 108 117 +8.3% 0.92x (?)
 
Improvement OLD NEW DELTA RATIO
ArraySetElement 326 261 -19.9% 1.25x
MapReduceShortString 13 11 -15.4% 1.18x (?)
CStringShortAscii 1060 920 -13.2% 1.15x (?)
ArrayPlusEqualThreeElements 1340 1190 -11.2% 1.13x (?)
AngryPhonebook.Strasse.Small 648 579 -10.6% 1.12x (?)
AngryPhonebook.Armenian.Small 555 496 -10.6% 1.12x (?)
NormalizedIterator_fastPrenormal 670 600 -10.4% 1.12x (?)
ArrayInClass 915 825 -9.8% 1.11x (?)
AngryPhonebook.Cyrillic.Small 558 506 -9.3% 1.10x (?)
ArrayAppendLatin1 1938 1768 -8.8% 1.10x (?)
ArrayAppendUTF16 1938 1768 -8.8% 1.10x (?)
MapReduceAnyCollectionShort 1400 1280 -8.6% 1.09x (?)
DataToStringSmall 1900 1750 -7.9% 1.09x (?)
ArrayAppendAscii 1904 1768 -7.1% 1.08x (?)
MapReduceShort 1700 1580 -7.1% 1.08x (?)
RangeReplaceableCollectionPlusDefault 596 556 -6.7% 1.07x (?)

Code size: -Osize

Regression OLD NEW DELTA RATIO
Array2D.o 2724 3567 +30.9% 0.76x
ArraySubscript.o 2832 3688 +30.2% 0.77x
ArraySetElement.o 1286 1663 +29.3% 0.77x
Sim2DArray.o 1350 1743 +29.1% 0.77x
COWArrayGuaranteedParameterOverhead.o 1393 1786 +28.2% 0.78x
Join.o 1655 2015 +21.8% 0.82x
RangeOverlaps.o 5790 7039 +21.6% 0.82x
DiffingMyers.o 6659 7991 +20.0% 0.83x
LazyFilter.o 8019 9576 +19.4% 0.84x
XorLoop.o 2042 2438 +19.4% 0.84x
Memset.o 1989 2366 +19.0% 0.84x
RangeAssignment.o 3202 3802 +18.7% 0.84x
MonteCarloE.o 2954 3491 +18.2% 0.85x
FlattenList.o 3914 4594 +17.4% 0.85x
SortArrayInClass.o 2958 3452 +16.7% 0.86x
StackPromo.o 2193 2557 +16.6% 0.86x
BucketSort.o 8299 9539 +14.9% 0.87x
ReversedCollections.o 8777 10005 +14.0% 0.88x
Prims.o 12171 13795 +13.3% 0.88x
PrimsSplit.o 12223 13847 +13.3% 0.88x
Combos.o 5390 6086 +12.9% 0.89x
RandomShuffle.o 3878 4369 +12.7% 0.89x
RC4.o 3429 3841 +12.0% 0.89x
PopFrontGeneric.o 2768 3092 +11.7% 0.90x
ObserverClosure.o 2858 3181 +11.3% 0.90x
RomanNumbers.o 6878 7646 +11.2% 0.90x
PopFront.o 3561 3957 +11.1% 0.90x
ChainedFilterMap.o 3405 3781 +11.0% 0.90x
ObserverForwarderStruct.o 2992 3317 +10.9% 0.90x
BinaryFloatingPointProperties.o 5371 5947 +10.7% 0.90x
SortIntPyramids.o 9062 9990 +10.2% 0.91x
Hanoi.o 3303 3636 +10.1% 0.91x
ObserverPartiallyAppliedMethod.o 3159 3475 +10.0% 0.91x
RemoveWhere.o 16347 17883 +9.4% 0.91x
Walsh.o 4322 4726 +9.3% 0.91x
StringRemoveDupes.o 3895 4259 +9.3% 0.91x
ArrayAppend.o 23223 25231 +8.6% 0.92x
ArrayOfRef.o 9587 10403 +8.5% 0.92x
ArrayOfGenericRef.o 9230 10014 +8.5% 0.92x
SortLettersInPlace.o 8108 8796 +8.5% 0.92x
Phonebook.o 9478 10278 +8.4% 0.92x
DictionaryGroup.o 11083 12015 +8.4% 0.92x
StaticArray.o 11093 12020 +8.4% 0.92x
Breadcrumbs.o 37136 40108 +8.0% 0.93x
RangeReplaceableCollectionPlusDefault.o 4850 5214 +7.5% 0.93x
ArrayInClass.o 4812 5173 +7.5% 0.93x
ClassArrayGetter.o 3818 4070 +6.6% 0.94x
DictOfArraysToArrayOfDicts.o 21504 22916 +6.6% 0.94x
RGBHistogram.o 20096 21411 +6.5% 0.94x
StringEdits.o 10633 11314 +6.4% 0.94x
NibbleSort.o 13000 13808 +6.2% 0.94x
ObserverUnappliedMethod.o 5569 5901 +6.0% 0.94x
WordCount.o 37823 39939 +5.6% 0.95x
NopDeinit.o 4583 4835 +5.5% 0.95x
Queue.o 12285 12949 +5.4% 0.95x
CString.o 6736 7084 +5.2% 0.95x
MapReduce.o 22501 23637 +5.0% 0.95x
ReduceInto.o 9414 9858 +4.7% 0.95x
AngryPhonebook.o 9433 9877 +4.7% 0.96x
DictionaryOfAnyHashableStrings.o 8456 8820 +4.3% 0.96x
PrimsNonStrongRef.o 102516 106912 +4.3% 0.96x
SortStrings.o 27250 28338 +4.0% 0.96x
DictionarySubscriptDefault.o 17083 17755 +3.9% 0.96x
RandomTree.o 12119 12595 +3.9% 0.96x
IntegerParsing.o 55195 57343 +3.9% 0.96x
UTF8Decode.o 11551 11977 +3.7% 0.96x
SortLargeExistentials.o 20462 21214 +3.7% 0.96x
PrefixWhile.o 16556 17160 +3.6% 0.96x
CSVParsing.o 49892 51704 +3.6% 0.96x
ObjectiveCBridgingStubs.o 15381 15933 +3.6% 0.97x
Hash.o 20307 20968 +3.3% 0.97x
DriverUtils.o 125158 128978 +3.1% 0.97x
Suffix.o 22227 22903 +3.0% 0.97x
DropLast.o 22237 22877 +2.9% 0.97x
FindStringNaive.o 9195 9455 +2.8% 0.97x
COWTree.o 11884 12208 +2.7% 0.97x
ChaCha.o 12049 12365 +2.6% 0.97x
Diffing.o 8611 8827 +2.5% 0.98x
DropWhile.o 17940 18284 +1.9% 0.98x
Substring.o 16609 16925 +1.9% 0.98x
StringComparison.o 36168 36848 +1.9% 0.98x
Prefix.o 18724 19068 +1.8% 0.98x
DropFirst.o 19599 19943 +1.8% 0.98x
ObjectiveCBridging.o 60009 60685 +1.1% 0.99x
SequenceAlgos.o 23479 23743 +1.1% 0.99x

Performance: -Onone

Regression OLD NEW DELTA RATIO
ArrayAppendGenericStructs 600 2640 +340.0% 0.23x (?)
ArrayAppendOptionals 600 2640 +340.0% 0.23x
EqualSubstringSubstringGenericEquatable 26 32 +23.1% 0.81x (?)
LessSubstringSubstringGenericComparable 26 32 +23.1% 0.81x
EqualSubstringSubstring 27 33 +22.2% 0.82x
LessSubstringSubstring 27 33 +22.2% 0.82x
ArrayAppendToGeneric 300 360 +20.0% 0.83x
ArrayPlusEqualArrayOfInt 300 360 +20.0% 0.83x (?)
ArrayAppendToFromGeneric 300 360 +20.0% 0.83x (?)
ArrayAppendFromGeneric 300 360 +20.0% 0.83x (?)
ArrayAppendArrayOfInt 300 360 +20.0% 0.83x (?)
EqualStringSubstring 28 33 +17.9% 0.85x (?)
EqualSubstringString 28 33 +17.9% 0.85x
UTF8Decode_InitDecoding 157 181 +15.3% 0.87x (?)
DataSubscriptMedium 56 61 +8.9% 0.92x (?)
CSVParsingAlt2 1584 1705 +7.6% 0.93x (?)
 
Improvement OLD NEW DELTA RATIO
AngryPhonebook.Armenian.Small 652 587 -10.0% 1.11x (?)
AngryPhonebook.Cyrillic.Small 654 590 -9.8% 1.11x (?)
AngryPhonebook.Strasse.Small 739 669 -9.5% 1.10x (?)
DataToStringSmall 2250 2050 -8.9% 1.10x (?)
NopDeinit 126700 116800 -7.8% 1.08x (?)
ArrayInClass 2625 2420 -7.8% 1.08x (?)

Code size: -swiftlibs

Regression OLD NEW DELTA RATIO
libswiftSwiftPrivateLibcExtras.dylib 16384 20480 +25.0% 0.80x
libswiftCoreAudio.dylib 20480 24576 +20.0% 0.83x
libswiftSwiftReflectionTest.dylib 24576 28672 +16.7% 0.86x
libswiftMetal.dylib 36864 40960 +11.1% 0.90x
libswiftCoreGraphics.dylib 57344 61440 +7.1% 0.93x
libswiftSwiftOnoneSupport.dylib 155648 163840 +5.3% 0.95x
libswiftAccelerate.dylib 290816 294912 +1.4% 0.99x
libswiftStdlibUnittest.dylib 327680 331776 +1.2% 0.99x
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

@Catfish-Man
Copy link
Contributor Author

@swift-ci please benchmark

@swift-ci
Copy link
Contributor

Performance: -O

Regression OLD NEW DELTA RATIO
ArrayAppendGenericStructs 1330 4530 +240.6% 0.29x
ArrayAppendOptionals 1330 4300 +223.3% 0.31x
FilterEvenUsingReduceInto 139 183 +31.7% 0.76x
ArrayAppendToGeneric 720 880 +22.2% 0.82x
ArrayPlusEqualArrayOfInt 720 880 +22.2% 0.82x
ArrayAppendToFromGeneric 720 880 +22.2% 0.82x (?)
ArrayAppendFromGeneric 720 880 +22.2% 0.82x
ArrayAppendArrayOfInt 720 880 +22.2% 0.82x
MapReduceSequence 583 685 +17.5% 0.85x
ArrayAppendRepeatCol 810 950 +17.3% 0.85x (?)
RemoveWhereFilterInts 43 49 +14.0% 0.88x
ArrayAppendSequence 1050 1190 +13.3% 0.88x
CSVParsingAlt2 1463 1639 +12.0% 0.89x
DataToStringEmpty 850 950 +11.8% 0.89x (?)
ArrayPlusEqualSingleElementCollection 799 893 +11.8% 0.89x (?)
ArrayPlusEqualFiveElementCollection 7770 8658 +11.4% 0.90x (?)
ArrayInitFromSlice 364 398 +9.3% 0.91x (?)
PrefixWhileSequence 310 336 +8.4% 0.92x (?)
FloatingPointPrinting_Float_description_small 5184 5616 +8.3% 0.92x (?)
ArraySubscript 1100 1188 +8.0% 0.93x (?)
DictionarySubscriptDefaultMutationArray 573 617 +7.7% 0.93x (?)
 
Improvement OLD NEW DELTA RATIO
DropWhileSequence 28 19 -32.1% 1.47x
MapReduceClassShort2 196 168 -14.3% 1.17x
ArrayPlusEqualThreeElements 1690 1450 -14.2% 1.17x
MapReduceAnyCollectionShort 1920 1660 -13.5% 1.16x (?)
MapReduceShortString 17 15 -11.8% 1.13x
RangeReplaceableCollectionPlusDefault 772 684 -11.4% 1.13x (?)
CStringShortAscii 1550 1380 -11.0% 1.12x (?)
MapReduceShort 2220 1980 -10.8% 1.12x (?)
AngryPhonebook.Strasse.Small 917 840 -8.4% 1.09x (?)
AngryPhonebook.Armenian.Small 784 720 -8.2% 1.09x (?)
AngryPhonebook.Cyrillic.Small 798 737 -7.6% 1.08x (?)
String.replaceSubrange.RepChar.Small 411 381 -7.3% 1.08x (?)
COWArrayGuaranteedParameterOverhead 3500 3250 -7.1% 1.08x (?)

Code size: -O

Regression OLD NEW DELTA RATIO
ArraySetElement.o 1240 1546 +24.7% 0.80x
ArraySubscript.o 2858 3562 +24.6% 0.80x
COWArrayGuaranteedParameterOverhead.o 1315 1637 +24.5% 0.80x
Sim2DArray.o 1320 1642 +24.4% 0.80x
Array2D.o 2984 3679 +23.3% 0.81x
MonteCarloE.o 2788 3276 +17.5% 0.85x
Join.o 1615 1893 +17.2% 0.85x
RangeAssignment.o 3276 3836 +17.1% 0.85x
StackPromo.o 2217 2557 +15.3% 0.87x
LazyFilter.o 8389 9650 +15.0% 0.87x
DiffingMyers.o 6499 7471 +15.0% 0.87x
BucketSort.o 8451 9691 +14.7% 0.87x
Memset.o 2215 2537 +14.5% 0.87x
XorLoop.o 2132 2433 +14.1% 0.88x
RandomShuffle.o 3632 4082 +12.4% 0.89x
FlattenList.o 4346 4850 +11.6% 0.90x
Combos.o 5070 5654 +11.5% 0.90x
SortArrayInClass.o 2738 3044 +11.2% 0.90x
ObserverClosure.o 2478 2754 +11.1% 0.90x
ObserverPartiallyAppliedMethod.o 2525 2801 +10.9% 0.90x
ReversedCollections.o 9254 10258 +10.8% 0.90x
ObserverForwarderStruct.o 2852 3160 +10.8% 0.90x
Prims.o 12907 14187 +9.9% 0.91x
PrimsSplit.o 12959 14239 +9.9% 0.91x
RangeOverlaps.o 6072 6658 +9.7% 0.91x
ChainedFilterMap.o 3477 3797 +9.2% 0.92x
PopFrontGeneric.o 2744 2996 +9.2% 0.92x
SortIntPyramids.o 9005 9821 +9.1% 0.92x
ReduceInto.o 10932 11896 +8.8% 0.92x
Hanoi.o 3120 3393 +8.7% 0.92x
RC4.o 3927 4267 +8.7% 0.92x
RomanNumbers.o 6436 6972 +8.3% 0.92x
PopFront.o 3923 4247 +8.3% 0.92x
RemoveWhere.o 17237 18581 +7.8% 0.93x
Phonebook.o 10011 10707 +7.0% 0.93x
Breadcrumbs.o 37303 39867 +6.9% 0.94x
StaticArray.o 11991 12813 +6.9% 0.94x
SortLettersInPlace.o 8421 8981 +6.7% 0.94x
ArrayInClass.o 4527 4817 +6.4% 0.94x
ObserverUnappliedMethod.o 5089 5397 +6.1% 0.94x
MapReduce.o 27943 29583 +5.9% 0.94x
DictionaryGroup.o 12659 13391 +5.8% 0.95x
ArrayOfGenericRef.o 8966 9478 +5.7% 0.95x
BinaryFloatingPointProperties.o 5676 5997 +5.7% 0.95x
Walsh.o 6364 6696 +5.2% 0.95x
ArrayAppend.o 26175 27511 +5.1% 0.95x
RGBHistogram.o 21382 22473 +5.1% 0.95x
StringEdits.o 10950 11487 +4.9% 0.95x
RangeReplaceableCollectionPlusDefault.o 5564 5824 +4.7% 0.96x
StringRemoveDupes.o 5573 5833 +4.7% 0.96x
ArrayOfRef.o 9379 9795 +4.4% 0.96x
Queue.o 12165 12693 +4.3% 0.96x
ClassArrayGetter.o 3819 3983 +4.3% 0.96x
WordCount.o 38993 40613 +4.2% 0.96x
SortStrings.o 24724 25652 +3.8% 0.96x
NopDeinit.o 4007 4155 +3.7% 0.96x
CString.o 7047 7307 +3.7% 0.96x
RandomTree.o 12359 12811 +3.7% 0.96x
DictOfArraysToArrayOfDicts.o 22656 23484 +3.7% 0.96x
AngryPhonebook.o 9974 10313 +3.4% 0.97x
DropLast.o 24063 24791 +3.0% 0.97x
NibbleSort.o 13304 13704 +3.0% 0.97x
SortLargeExistentials.o 20062 20638 +2.9% 0.97x
DictionaryOfAnyHashableStrings.o 9279 9539 +2.8% 0.97x
ObjectiveCBridgingStubs.o 16789 17253 +2.8% 0.97x
DriverUtils.o 137135 140423 +2.4% 0.98x
CSVParsing.o 53636 54896 +2.3% 0.98x
DictionarySubscriptDefault.o 19859 20299 +2.2% 0.98x
PrimsNonStrongRef.o 121032 123692 +2.2% 0.98x
Hash.o 23178 23675 +2.1% 0.98x
Diffing.o 8763 8947 +2.1% 0.98x
COWTree.o 11684 11920 +2.0% 0.98x
FindStringNaive.o 9563 9751 +2.0% 0.98x
ChaCha.o 14361 14621 +1.8% 0.98x
PrefixWhile.o 18212 18504 +1.6% 0.98x
UTF8Decode.o 13452 13644 +1.4% 0.99x
Substring.o 17537 17781 +1.4% 0.99x
Suffix.o 24013 24345 +1.4% 0.99x
StringComparison.o 40056 40560 +1.3% 0.99x
IntegerParsing.o 58733 59449 +1.2% 0.99x
 
Improvement OLD NEW DELTA RATIO
main.o 54179 53559 -1.1% 1.01x

Performance: -Osize

Regression OLD NEW DELTA RATIO
ArrayAppendGenericStructs 1330 4530 +240.6% 0.29x
ArrayAppendOptionals 1330 4250 +219.5% 0.31x
FilterEvenUsingReduceInto 148 202 +36.5% 0.73x (?)
ArrayAppendArrayOfInt 710 880 +23.9% 0.81x (?)
ArrayAppendToGeneric 720 880 +22.2% 0.82x
ArrayPlusEqualArrayOfInt 720 880 +22.2% 0.82x
ArrayAppendToFromGeneric 720 880 +22.2% 0.82x
ArrayAppendFromGeneric 720 880 +22.2% 0.82x (?)
MapReduceSequence 629 745 +18.4% 0.84x
ArrayPlusEqualSingleElementCollection 799 940 +17.6% 0.85x (?)
CSVParsingAlt2 1518 1727 +13.8% 0.88x
ArrayAppendRepeatCol 1040 1180 +13.5% 0.88x (?)
ArrayAppendSequence 1040 1180 +13.5% 0.88x
Data.init.Sequence.2047B.Count.I 100 113 +13.0% 0.88x (?)
ObjectiveCBridgeStubDateAccess 228 257 +12.7% 0.89x
CharacterLiteralsLarge 100 111 +11.0% 0.90x
PrefixWhileAnyCollectionLazy 159 176 +10.7% 0.90x (?)
ArrayPlusEqualFiveElementCollection 7807 8584 +10.0% 0.91x (?)
String.data.LargeUnicode 91 100 +9.9% 0.91x (?)
DictionarySubscriptDefaultMutationArray 627 687 +9.6% 0.91x (?)
Set.isDisjoint.Seq.Int.Empty 85 93 +9.4% 0.91x
ArraySubscript 1156 1264 +9.3% 0.91x (?)
NopDeinit 15800 17200 +8.9% 0.92x
ArrayInitFromSlice 362 394 +8.8% 0.92x (?)
FloatingPointPrinting_Float_description_small 5292 5724 +8.2% 0.92x
 
Improvement OLD NEW DELTA RATIO
ArrayPlusEqualThreeElements 1850 1590 -14.1% 1.16x (?)
MapReduceAnyCollectionShort 2060 1780 -13.6% 1.16x (?)
FlattenListFlatMap 7405 6463 -12.7% 1.15x (?)
AngryPhonebook.ASCII 17 15 -11.8% 1.13x
CStringShortAscii 1550 1370 -11.6% 1.13x (?)
MapReduceShortString 18 16 -11.1% 1.12x (?)
BinaryFloatingPointPropertiesBinade 31 28 -9.7% 1.11x (?)
AngryPhonebook.Armenian.Small 792 723 -8.7% 1.10x (?)
MapReduceShort 2310 2110 -8.7% 1.09x (?)
RangeReplaceableCollectionPlusDefault 832 764 -8.2% 1.09x (?)
String.replaceSubrange.RepChar.Small 411 379 -7.8% 1.08x (?)
AngryPhonebook.Cyrillic.Small 812 749 -7.8% 1.08x (?)
DataToStringSmall 2750 2550 -7.3% 1.08x (?)

Code size: -Osize

Regression OLD NEW DELTA RATIO
Array2D.o 2724 3567 +30.9% 0.76x
ArraySubscript.o 2832 3688 +30.2% 0.77x
ArraySetElement.o 1286 1663 +29.3% 0.77x
Sim2DArray.o 1350 1743 +29.1% 0.77x
COWArrayGuaranteedParameterOverhead.o 1393 1786 +28.2% 0.78x
Join.o 1655 2015 +21.8% 0.82x
RangeOverlaps.o 5790 7039 +21.6% 0.82x
DiffingMyers.o 6659 7991 +20.0% 0.83x
LazyFilter.o 8019 9576 +19.4% 0.84x
XorLoop.o 2042 2438 +19.4% 0.84x
Memset.o 1989 2366 +19.0% 0.84x
RangeAssignment.o 3202 3802 +18.7% 0.84x
MonteCarloE.o 2954 3491 +18.2% 0.85x
FlattenList.o 3914 4594 +17.4% 0.85x
SortArrayInClass.o 2958 3452 +16.7% 0.86x
StackPromo.o 2193 2557 +16.6% 0.86x
BucketSort.o 8299 9539 +14.9% 0.87x
ReversedCollections.o 8777 10005 +14.0% 0.88x
Prims.o 12171 13795 +13.3% 0.88x
PrimsSplit.o 12223 13847 +13.3% 0.88x
Combos.o 5390 6086 +12.9% 0.89x
RandomShuffle.o 3878 4369 +12.7% 0.89x
RC4.o 3429 3841 +12.0% 0.89x
PopFrontGeneric.o 2768 3092 +11.7% 0.90x
ObserverClosure.o 2858 3181 +11.3% 0.90x
RomanNumbers.o 6878 7646 +11.2% 0.90x
PopFront.o 3561 3957 +11.1% 0.90x
ObserverPartiallyAppliedMethod.o 2905 3228 +11.1% 0.90x
ChainedFilterMap.o 3405 3781 +11.0% 0.90x
ObserverForwarderStruct.o 2992 3317 +10.9% 0.90x
BinaryFloatingPointProperties.o 5371 5947 +10.7% 0.90x
SortIntPyramids.o 9062 9990 +10.2% 0.91x
Hanoi.o 3303 3636 +10.1% 0.91x
RemoveWhere.o 16347 17883 +9.4% 0.91x
Walsh.o 4322 4726 +9.3% 0.91x
StringRemoveDupes.o 3895 4259 +9.3% 0.91x
ArrayAppend.o 23223 25231 +8.6% 0.92x
ArrayOfRef.o 9587 10403 +8.5% 0.92x
ArrayOfGenericRef.o 9230 10014 +8.5% 0.92x
SortLettersInPlace.o 8108 8796 +8.5% 0.92x
DictionaryGroup.o 11083 12015 +8.4% 0.92x
StaticArray.o 11093 12020 +8.4% 0.92x
Phonebook.o 9718 10518 +8.2% 0.92x
Breadcrumbs.o 36728 39700 +8.1% 0.93x
RangeReplaceableCollectionPlusDefault.o 4850 5214 +7.5% 0.93x
ArrayInClass.o 4812 5173 +7.5% 0.93x
ClassArrayGetter.o 3818 4070 +6.6% 0.94x
DictOfArraysToArrayOfDicts.o 21504 22916 +6.6% 0.94x
RGBHistogram.o 20096 21411 +6.5% 0.94x
StringEdits.o 10633 11314 +6.4% 0.94x
NibbleSort.o 13000 13808 +6.2% 0.94x
ObserverUnappliedMethod.o 5409 5741 +6.1% 0.94x
WordCount.o 37823 39939 +5.6% 0.95x
NopDeinit.o 4583 4835 +5.5% 0.95x
Queue.o 12285 12949 +5.4% 0.95x
CString.o 6735 7083 +5.2% 0.95x
MapReduce.o 22501 23637 +5.0% 0.95x
ReduceInto.o 9414 9858 +4.7% 0.95x
AngryPhonebook.o 9433 9877 +4.7% 0.96x
DictionaryOfAnyHashableStrings.o 8456 8820 +4.3% 0.96x
PrimsNonStrongRef.o 102516 106912 +4.3% 0.96x
SortStrings.o 27250 28338 +4.0% 0.96x
DictionarySubscriptDefault.o 17083 17755 +3.9% 0.96x
RandomTree.o 12119 12595 +3.9% 0.96x
IntegerParsing.o 55195 57343 +3.9% 0.96x
UTF8Decode.o 11551 11977 +3.7% 0.96x
SortLargeExistentials.o 20462 21214 +3.7% 0.96x
PrefixWhile.o 16556 17160 +3.6% 0.96x
CSVParsing.o 49892 51704 +3.6% 0.96x
ObjectiveCBridgingStubs.o 15381 15933 +3.6% 0.97x
DriverUtils.o 124281 128329 +3.3% 0.97x
Hash.o 20307 20968 +3.3% 0.97x
Suffix.o 22227 22903 +3.0% 0.97x
DropLast.o 22237 22877 +2.9% 0.97x
FindStringNaive.o 9195 9455 +2.8% 0.97x
COWTree.o 11884 12208 +2.7% 0.97x
ChaCha.o 12049 12365 +2.6% 0.97x
Diffing.o 8611 8827 +2.5% 0.98x
DropWhile.o 17940 18284 +1.9% 0.98x
Substring.o 16609 16925 +1.9% 0.98x
StringComparison.o 36168 36848 +1.9% 0.98x
Prefix.o 18724 19068 +1.8% 0.98x
DropFirst.o 19599 19943 +1.8% 0.98x
ObjectiveCBridging.o 60009 60685 +1.1% 0.99x
SequenceAlgos.o 23479 23743 +1.1% 0.99x

Performance: -Onone

Regression OLD NEW DELTA RATIO
ArrayAppendGenericStructs 1360 4310 +216.9% 0.32x
ArrayAppendOptionals 1360 4310 +216.9% 0.32x
ArrayAppendArrayOfInt 740 900 +21.6% 0.82x (?)
ArrayAppendToGeneric 750 910 +21.3% 0.82x
ArrayPlusEqualArrayOfInt 750 910 +21.3% 0.82x
ArrayAppendFromGeneric 750 910 +21.3% 0.82x (?)
ArrayAppendToFromGeneric 750 900 +20.0% 0.83x
Set.subtracting.Seq.Int100 7322 8744 +19.4% 0.84x (?)
Set.isStrictSubset.Seq.Int0 7271 8557 +17.7% 0.85x (?)
Set.isStrictSuperset.Seq.Int25 7285 8565 +17.6% 0.85x (?)
Set.isSubset.Seq.Int0 7283 8557 +17.5% 0.85x (?)
Set.isStrictSuperset.Seq.Int0 72549 85153 +17.4% 0.85x (?)
Set.isSubset.Seq.Int25 7492 8775 +17.1% 0.85x (?)
Set.isStrictSubset.Seq.Int25 7483 8760 +17.1% 0.85x (?)
Set.isStrictSuperset.Seq.Int50 7311 8553 +17.0% 0.85x (?)
Set.isSubset.Seq.Int50 7713 8969 +16.3% 0.86x (?)
Set.isStrictSubset.Seq.Int50 7721 8972 +16.2% 0.86x (?)
Set.isSubset.Seq.Int100 8112 9410 +16.0% 0.86x (?)
Set.intersection.Seq.Int0 1652 1907 +15.4% 0.87x (?)
Set.isStrictSuperset.Seq.Int100 8718 10021 +14.9% 0.87x (?)
Set.isStrictSubset.Seq.Int100 8716 10013 +14.9% 0.87x (?)
Set.intersection.Seq.Int25 1857 2114 +13.8% 0.88x (?)
Set.intersection.Seq.Int50 2029 2279 +12.3% 0.89x (?)
Set.subtracting.Seq.Int50 6705 7459 +11.2% 0.90x (?)
Set.intersection.Seq.Int100 2366 2611 +10.4% 0.91x (?)
CSVParsingAlt2 2486 2706 +8.8% 0.92x (?)
ArrayInitFromSlice 422 455 +7.8% 0.93x (?)
 
Improvement OLD NEW DELTA RATIO
String.replaceSubrange.RepChar.Small 424 383 -9.7% 1.11x (?)
ObjectiveCBridgeStubFromNSDateRef 4830 4390 -9.1% 1.10x (?)
StringWordBuilder 2790 2570 -7.9% 1.09x (?)
DataToStringSmall 3300 3050 -7.6% 1.08x (?)
ClassArrayGetter2 4320 4000 -7.4% 1.08x
StringBuilderWithLongSubstring 2840 2630 -7.4% 1.08x (?)
AngryPhonebook.Cyrillic.Small 990 923 -6.8% 1.07x (?)
AngryPhonebook.Strasse.Small 1099 1025 -6.7% 1.07x (?)

Code size: -swiftlibs

Regression OLD NEW DELTA RATIO
libswiftSwiftPrivateLibcExtras.dylib 16384 20480 +25.0% 0.80x
libswiftCoreAudio.dylib 20480 24576 +20.0% 0.83x
libswiftSwiftReflectionTest.dylib 24576 28672 +16.7% 0.86x
libswiftMetal.dylib 36864 40960 +11.1% 0.90x
libswiftCoreGraphics.dylib 57344 61440 +7.1% 0.93x
libswiftSwiftOnoneSupport.dylib 155648 163840 +5.3% 0.95x
libswiftAccelerate.dylib 290816 294912 +1.4% 0.99x
libswiftStdlibUnittest.dylib 327680 331776 +1.2% 0.99x
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: 12-Core Intel Xeon E5
  Processor Speed: 2.7 GHz
  Number of Processors: 1
  Total Number of Cores: 12
  L2 Cache (per Core): 256 KB
  L3 Cache: 30 MB
  Memory: 64 GB

@Catfish-Man
Copy link
Contributor Author

@swift-ci please benchmark

@swift-ci
Copy link
Contributor

Performance: -O

Regression OLD NEW DELTA RATIO
ArrayAppendGenericStructs 580 2610 +350.0% 0.22x (?)
ArrayAppendOptionals 580 1880 +224.1% 0.31x (?)
Dictionary4 155 200 +29.0% 0.78x (?)
FilterEvenUsingReduceInto 103 132 +28.2% 0.78x (?)
UTF8Decode_InitFromData 124 156 +25.8% 0.79x (?)
SortIntPyramid 360 450 +25.0% 0.80x (?)
ArrayAppendToGeneric 280 350 +25.0% 0.80x (?)
ArrayAppendToFromGeneric 280 350 +25.0% 0.80x (?)
Dictionary4OfObjects 190 235 +23.7% 0.81x (?)
UTF8Decode_InitFromBytes 135 166 +23.0% 0.81x (?)
ArrayPlusEqualSingleElementCollection 423 517 +22.2% 0.82x (?)
ArrayAppendFromGeneric 280 340 +21.4% 0.82x (?)
ArrayAppendArrayOfInt 280 340 +21.4% 0.82x (?)
ArrayPlusEqualArrayOfInt 290 350 +20.7% 0.83x (?)
MapReduceSequence 357 422 +18.2% 0.85x (?)
ArrayAppendLazyMap 3640 4220 +15.9% 0.86x (?)
NSStringConversion.Long 492 563 +14.4% 0.87x (?)
DropWhileArray 21 24 +14.3% 0.88x (?)
Set.subtracting.Empty.Box 7 8 +14.3% 0.88x (?)
ArrayAppendSequence 510 580 +13.7% 0.88x (?)
CSVParsingAlt2 968 1100 +13.6% 0.88x (?)
LazilyFilteredRange 1940 2200 +13.4% 0.88x (?)
PrefixWhileAnySeqCntRange 163 184 +12.9% 0.89x (?)
PrefixWhileSequence 164 184 +12.2% 0.89x (?)
PrefixWhileAnySeqCRangeIter 164 184 +12.2% 0.89x (?)
DropLastSequenceLazy 301 336 +11.6% 0.90x (?)
DropWhileArrayLazy 44 49 +11.4% 0.90x (?)
StringHasPrefixAscii 1170 1300 +11.1% 0.90x (?)
IterateData 829 914 +10.3% 0.91x (?)
DictionarySubscriptDefaultMutationArray 408 446 +9.3% 0.91x (?)
DropLastSequence 301 328 +9.0% 0.92x (?)
NSStringConversion.LongUTF8 330 359 +8.8% 0.92x (?)
 
Improvement OLD NEW DELTA RATIO
ArrayPlusEqualThreeElements 1270 1070 -15.7% 1.19x (?)
MapReduceShortString 13 11 -15.4% 1.18x (?)
RangeReplaceableCollectionPlusDefault 580 496 -14.5% 1.17x (?)
MapReduceAnyCollectionShort 1390 1210 -12.9% 1.15x (?)
MapReduceClassShort2 140 124 -11.4% 1.13x (?)
MapReduceShort 1690 1500 -11.2% 1.13x (?)
DataToStringSmall 1950 1750 -10.3% 1.11x (?)
AngryPhonebook.Armenian.Small 570 522 -8.4% 1.09x (?)
AngryPhonebook.Cyrillic.Small 562 524 -6.8% 1.07x (?)
DataToStringMedium 3750 3500 -6.7% 1.07x (?)

Code size: -O

Regression OLD NEW DELTA RATIO
ArraySetElement.o 1240 1611 +29.9% 0.77x
COWArrayGuaranteedParameterOverhead.o 1315 1702 +29.4% 0.77x
Sim2DArray.o 1320 1707 +29.3% 0.77x
Join.o 1615 1963 +21.5% 0.82x
Memset.o 2215 2602 +17.5% 0.85x
XorLoop.o 2132 2498 +17.2% 0.85x
ArraySubscript.o 2858 3346 +17.1% 0.85x
StackPromo.o 2217 2577 +16.2% 0.86x
MonteCarloE.o 2788 3236 +16.1% 0.86x
Array2D.o 2984 3463 +16.1% 0.86x
ObserverClosure.o 2478 2790 +12.6% 0.89x
ObserverPartiallyAppliedMethod.o 2525 2837 +12.4% 0.89x
RangeAssignment.o 3276 3668 +12.0% 0.89x
SortArrayInClass.o 2738 3061 +11.8% 0.89x
PopFrontGeneric.o 2744 3064 +11.7% 0.90x
ObserverForwarderStruct.o 2852 3180 +11.5% 0.90x
Hanoi.o 3120 3463 +11.0% 0.90x
PopFront.o 3923 4315 +10.0% 0.91x
ReduceInto.o 10932 11932 +9.1% 0.92x
RandomShuffle.o 3632 3961 +9.1% 0.92x
RC4.o 3927 4271 +8.8% 0.92x
ChainedFilterMap.o 3477 3765 +8.3% 0.92x
FlattenList.o 4346 4698 +8.1% 0.93x
ArrayInClass.o 4527 4882 +7.8% 0.93x
Combos.o 5070 5454 +7.6% 0.93x
RangeOverlaps.o 6072 6522 +7.4% 0.93x
BinaryFloatingPointProperties.o 5676 6075 +7.0% 0.93x
DiffingMyers.o 6499 6923 +6.5% 0.94x
ObserverUnappliedMethod.o 5089 5417 +6.4% 0.94x
BucketSort.o 8451 8987 +6.3% 0.94x
Walsh.o 6364 6764 +6.3% 0.94x
RomanNumbers.o 6436 6836 +6.2% 0.94x
StringRemoveDupes.o 5573 5917 +6.2% 0.94x
ClassArrayGetter.o 3819 4051 +6.1% 0.94x
RangeReplaceableCollectionPlusDefault.o 5564 5892 +5.9% 0.94x
ReversedCollections.o 9254 9790 +5.8% 0.95x
Phonebook.o 10011 10571 +5.6% 0.95x
MapReduce.o 27943 29463 +5.4% 0.95x
SortIntPyramids.o 9005 9493 +5.4% 0.95x
NopDeinit.o 4007 4223 +5.4% 0.95x
Prims.o 12907 13547 +5.0% 0.95x
PrimsSplit.o 12959 13599 +4.9% 0.95x
CString.o 7047 7391 +4.9% 0.95x
SortLettersInPlace.o 8421 8829 +4.8% 0.95x
LazyFilter.o 8389 8734 +4.1% 0.96x
StaticArray.o 11991 12480 +4.1% 0.96x
RandomTree.o 12359 12831 +3.8% 0.96x
DictionaryOfAnyHashableStrings.o 9279 9623 +3.7% 0.96x
NibbleSort.o 13304 13760 +3.4% 0.97x
FindStringNaive.o 9563 9883 +3.3% 0.97x
StringEdits.o 10950 11303 +3.2% 0.97x
Queue.o 12165 12557 +3.2% 0.97x
Diffing.o 8763 9043 +3.2% 0.97x
ArrayOfGenericRef.o 8966 9246 +3.1% 0.97x
AngryPhonebook.o 9974 10278 +3.0% 0.97x
Breadcrumbs.o 37303 38383 +2.9% 0.97x
ChaCha.o 14361 14753 +2.7% 0.97x
UTF8Decode.o 13452 13812 +2.7% 0.97x
COWTree.o 11684 11988 +2.6% 0.97x
ArrayOfRef.o 9379 9611 +2.5% 0.98x
DictionaryGroup.o 12659 12955 +2.3% 0.98x
SortStrings.o 24724 25287 +2.3% 0.98x
RGBHistogram.o 21382 21829 +2.1% 0.98x
RemoveWhere.o 17237 17589 +2.0% 0.98x
DictOfArraysToArrayOfDicts.o 22656 23112 +2.0% 0.98x
ObjectiveCBridgingStubs.o 16789 17117 +2.0% 0.98x
SortLargeExistentials.o 20062 20438 +1.9% 0.98x
Substring.o 17537 17865 +1.9% 0.98x
PrefixWhile.o 18212 18540 +1.8% 0.98x
Hash.o 23178 23571 +1.7% 0.98x
DropWhile.o 18386 18674 +1.6% 0.98x
Prefix.o 18608 18896 +1.5% 0.98x
Suffix.o 24013 24381 +1.5% 0.98x
DropFirst.o 19932 20220 +1.4% 0.99x
DictionarySubscriptDefault.o 19859 20131 +1.4% 0.99x
SequenceAlgos.o 22215 22503 +1.3% 0.99x
ArrayAppend.o 26175 26495 +1.2% 0.99x
DropLast.o 24063 24351 +1.2% 0.99x
WordCount.o 38993 39393 +1.0% 0.99x
 
Improvement OLD NEW DELTA RATIO
main.o 54179 53611 -1.0% 1.01x

Performance: -Osize

Regression OLD NEW DELTA RATIO
ArrayAppendOptionals 580 2660 +358.6% 0.22x
ArrayAppendGenericStructs 580 2620 +351.7% 0.22x
SuffixArrayLazy 5 9 +80.0% 0.56x
SumUsingReduceInto 281 439 +56.2% 0.64x
SumUsingReduce 282 439 +55.7% 0.64x
DropLastAnyCollection 27 38 +40.7% 0.71x
PrefixCountableRangeLazy 19 26 +36.8% 0.73x
FilterEvenUsingReduceInto 105 143 +36.2% 0.73x
DropFirstSequence 33 44 +33.3% 0.75x
PrefixWhileArrayLazy 20 26 +30.0% 0.77x (?)
DropFirstSequenceLazy 34 44 +29.4% 0.77x
UTF8Decode_InitFromData 123 155 +26.0% 0.79x
UTF8Decode_InitFromBytes 132 166 +25.8% 0.80x
MapReduceSequence 380 477 +25.5% 0.80x
ArrayAppendToGeneric 280 350 +25.0% 0.80x (?)
ArrayPlusEqualArrayOfInt 280 350 +25.0% 0.80x
ArrayAppendToFromGeneric 280 350 +25.0% 0.80x (?)
ArrayAppendArrayOfInt 280 350 +25.0% 0.80x (?)
DropFirstAnySeqCntRangeLazy 103 127 +23.3% 0.81x
ArrayAppendFromGeneric 280 340 +21.4% 0.82x (?)
DropFirstAnyCollection 73 88 +20.5% 0.83x
PrefixWhileAnyCollectionLazy 81 97 +19.8% 0.84x (?)
DropWhileArrayLazy 49 58 +18.4% 0.84x
ObjectiveCBridgeStubDateAccess 130 152 +16.9% 0.86x
StringHasPrefixAscii 1110 1270 +14.4% 0.87x (?)
PrefixArray 14 16 +14.3% 0.88x
CSVParsingAlt2 1001 1133 +13.2% 0.88x (?)
ArrayAppendSequence 550 620 +12.7% 0.89x (?)
PrefixCountableRange 16 18 +12.5% 0.89x (?)
IterateData 830 932 +12.3% 0.89x (?)
DropLastAnySeqCntRange 424 476 +12.3% 0.89x (?)
ArraySetElement 262 293 +11.8% 0.89x (?)
PrefixWhileSequence 178 198 +11.2% 0.90x (?)
ArrayPlusEqualFiveElementCollection 4292 4773 +11.2% 0.90x (?)
ArrayPlusEqualSingleElementCollection 470 517 +10.0% 0.91x (?)
DictionarySubscriptDefaultMutationArray 442 483 +9.3% 0.92x (?)
DropLastSequenceLazy 424 459 +8.3% 0.92x (?)
 
Improvement OLD NEW DELTA RATIO
PrefixArrayLazy 26 14 -46.2% 1.86x
PrefixWhileCountableRange 26 15 -42.3% 1.73x
PrefixAnyCollection 107 72 -32.7% 1.49x
Dictionary4 205 157 -23.4% 1.31x
DropWhileAnySeqCRangeIterLazy 145 117 -19.3% 1.24x
PrefixWhileAnySeqCRangeIterLazy 98 81 -17.3% 1.21x
PrefixWhileAnySeqCntRangeLazy 98 81 -17.3% 1.21x
SuffixCountableRange 6 5 -16.7% 1.20x (?)
SuffixCountableRangeLazy 6 5 -16.7% 1.20x (?)
DropWhileAnySeqCntRangeLazy 139 117 -15.8% 1.19x
PrefixAnySeqCntRangeLazy 96 81 -15.6% 1.19x
MapReduceShortString 13 11 -15.4% 1.18x (?)
PrefixAnySeqCRangeIterLazy 95 81 -14.7% 1.17x
FlattenListFlatMap 3447 2970 -13.8% 1.16x (?)
Dictionary4OfObjects 262 226 -13.7% 1.16x
NormalizedIterator_fastPrenormal 670 580 -13.4% 1.16x
MapReduceAnyCollectionShort 1430 1250 -12.6% 1.14x (?)
ArrayPlusEqualThreeElements 1310 1170 -10.7% 1.12x (?)
RangeReplaceableCollectionPlusDefault 600 536 -10.7% 1.12x (?)
DataToStringSmall 1900 1700 -10.5% 1.12x (?)
MapReduceShort 1710 1540 -9.9% 1.11x (?)
DistinctClassFieldAccesses 186 169 -9.1% 1.10x (?)
PrefixWhileAnyCollection 109 100 -8.3% 1.09x (?)
AngryPhonebook.Strasse.Small 649 603 -7.1% 1.08x (?)
StringHashing_fastPrenormal 570 530 -7.0% 1.08x (?)

Code size: -Osize

Regression OLD NEW DELTA RATIO
ArraySetElement.o 1286 1660 +29.1% 0.77x
Sim2DArray.o 1350 1740 +28.9% 0.78x
COWArrayGuaranteedParameterOverhead.o 1393 1783 +28.0% 0.78x
Join.o 1655 2012 +21.6% 0.82x
XorLoop.o 2042 2435 +19.2% 0.84x
Memset.o 1989 2363 +18.8% 0.84x
Array2D.o 2724 3215 +18.0% 0.85x
ArraySubscript.o 2832 3336 +17.8% 0.85x
StackPromo.o 2193 2537 +15.7% 0.86x
MonteCarloE.o 2954 3392 +14.8% 0.87x
RangeAssignment.o 3202 3610 +12.7% 0.89x
SortArrayInClass.o 2958 3324 +12.4% 0.89x
ObserverClosure.o 2858 3194 +11.8% 0.89x
ObserverPartiallyAppliedMethod.o 2905 3241 +11.6% 0.90x
PopFrontGeneric.o 2768 3088 +11.6% 0.90x
PopFront.o 3561 3954 +11.0% 0.90x
ObserverForwarderStruct.o 2992 3298 +10.2% 0.91x
RC4.o 3429 3773 +10.0% 0.91x
Hanoi.o 3303 3632 +10.0% 0.91x
FlattenList.o 3914 4298 +9.8% 0.91x
Walsh.o 4322 4722 +9.3% 0.92x
StringRemoveDupes.o 3895 4255 +9.2% 0.92x
RangeOverlaps.o 5790 6264 +8.2% 0.92x
BinaryFloatingPointProperties.o 5371 5772 +7.5% 0.93x
ArrayInClass.o 4812 5170 +7.4% 0.93x
RangeReplaceableCollectionPlusDefault.o 4850 5210 +7.4% 0.93x
Combos.o 5390 5790 +7.4% 0.93x
BucketSort.o 8299 8899 +7.2% 0.93x
RandomShuffle.o 3878 4153 +7.1% 0.93x
ChainedFilterMap.o 3405 3645 +7.0% 0.93x
DiffingMyers.o 6659 7115 +6.8% 0.94x
RomanNumbers.o 6878 7310 +6.3% 0.94x
Prims.o 12171 12875 +5.8% 0.95x
ObserverUnappliedMethod.o 5409 5721 +5.8% 0.95x
PrimsSplit.o 12223 12927 +5.8% 0.95x
ReversedCollections.o 8777 9281 +5.7% 0.95x
ClassArrayGetter.o 3818 4034 +5.7% 0.95x
Phonebook.o 9718 10222 +5.2% 0.95x
CString.o 6735 7079 +5.1% 0.95x
SortIntPyramids.o 9062 9518 +5.0% 0.95x
LazyFilter.o 8019 8412 +4.9% 0.95x
NopDeinit.o 4583 4799 +4.7% 0.95x
SortLettersInPlace.o 8108 8468 +4.4% 0.96x
StaticArray.o 11093 11584 +4.4% 0.96x
DictionaryOfAnyHashableStrings.o 8456 8816 +4.3% 0.96x
Queue.o 12285 12757 +3.8% 0.96x
NibbleSort.o 13000 13496 +3.8% 0.96x
AngryPhonebook.o 9433 9777 +3.6% 0.96x
StringEdits.o 10633 11018 +3.6% 0.97x
ReduceInto.o 9414 9726 +3.3% 0.97x
FindStringNaive.o 9195 9499 +3.3% 0.97x
Breadcrumbs.o 36728 37872 +3.1% 0.97x
ChaCha.o 12049 12409 +3.0% 0.97x
DictionaryGroup.o 11083 11411 +3.0% 0.97x
RandomTree.o 12119 12463 +2.8% 0.97x
Diffing.o 8611 8835 +2.6% 0.97x
ArrayOfRef.o 9587 9835 +2.6% 0.97x
ArrayOfGenericRef.o 9230 9462 +2.5% 0.98x
DictOfArraysToArrayOfDicts.o 21504 22040 +2.5% 0.98x
RGBHistogram.o 20096 20591 +2.5% 0.98x
COWTree.o 11884 12172 +2.4% 0.98x
ObjectiveCBridgingStubs.o 15381 15741 +2.3% 0.98x
RemoveWhere.o 16347 16699 +2.2% 0.98x
SortLargeExistentials.o 20462 20902 +2.2% 0.98x
UTF8Decode.o 11551 11799 +2.1% 0.98x
PrefixWhile.o 16556 16900 +2.1% 0.98x
SortStrings.o 27250 27811 +2.1% 0.98x
Hash.o 20307 20720 +2.0% 0.98x
Substring.o 16609 16921 +1.9% 0.98x
Suffix.o 22227 22643 +1.9% 0.98x
ArrayAppend.o 23223 23655 +1.9% 0.98x
DictionarySubscriptDefault.o 17083 17371 +1.7% 0.98x
WordCount.o 37823 38415 +1.6% 0.98x
DropWhile.o 17940 18212 +1.5% 0.99x
DropLast.o 22237 22573 +1.5% 0.99x
Prefix.o 18724 18996 +1.5% 0.99x
IntegerParsing.o 55195 55987 +1.4% 0.99x
DropFirst.o 19599 19871 +1.4% 0.99x
CSVParsing.o 49892 50516 +1.3% 0.99x
PrimsNonStrongRef.o 102516 103772 +1.2% 0.99x
SequenceAlgos.o 23479 23743 +1.1% 0.99x
StringComparison.o 36168 36552 +1.1% 0.99x

Performance: -Onone

Regression OLD NEW DELTA RATIO
ArrayAppendGenericStructs 600 2640 +340.0% 0.23x
ArrayAppendOptionals 600 2600 +333.3% 0.23x
UTF8Decode_InitFromData 122 159 +30.3% 0.77x
UTF8Decode_InitFromBytes 134 167 +24.6% 0.80x
ArrayAppendToGeneric 300 360 +20.0% 0.83x
ArrayPlusEqualArrayOfInt 300 360 +20.0% 0.83x (?)
ArrayAppendToFromGeneric 300 360 +20.0% 0.83x (?)
ArrayAppendFromGeneric 300 360 +20.0% 0.83x
ArrayAppendArrayOfInt 300 360 +20.0% 0.83x (?)
CSVParsingAlt2 1551 1716 +10.6% 0.90x (?)
StringHasPrefixAscii 2950 3250 +10.2% 0.91x (?)
DataSubscriptMedium 56 61 +8.9% 0.92x (?)
String.replaceSubrange.String.Small 37 40 +8.1% 0.93x (?)
 
Improvement OLD NEW DELTA RATIO
ArrayOfPOD 727 649 -10.7% 1.12x (?)
DataToStringSmall 2250 2050 -8.9% 1.10x (?)
RandomDoubleLCG 39826 36734 -7.8% 1.08x (?)
NormalizedIterator_fastPrenormal 980 910 -7.1% 1.08x (?)

Code size: -swiftlibs

Regression OLD NEW DELTA RATIO
libswiftCoreAudio.dylib 20480 24576 +20.0% 0.83x
libswiftSwiftReflectionTest.dylib 24576 28672 +16.7% 0.86x
libswiftCoreGraphics.dylib 57344 61440 +7.1% 0.93x
libswiftSwiftOnoneSupport.dylib 155648 159744 +2.6% 0.97x
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

@Catfish-Man
Copy link
Contributor Author

Well, that completely fixed the code size regression for 4 out of 8 libraries. That's something, but dang I was really hoping it'd fix it for the rest.

@Catfish-Man
Copy link
Contributor Author

@swift-ci please benchmark

@swift-ci
Copy link
Contributor

Performance: -O

Regression OLD NEW DELTA RATIO
ArrayAppendOptionals 570 2660 +366.7% 0.21x
ArrayAppendGenericStructs 580 2600 +348.3% 0.22x
Dictionary4OfObjects 190 278 +46.3% 0.68x
Dictionary4 155 206 +32.9% 0.75x (?)
FilterEvenUsingReduceInto 102 132 +29.4% 0.77x
UTF8Decode_InitFromData 123 154 +25.2% 0.80x
SortIntPyramid 360 450 +25.0% 0.80x
ArrayAppendToGeneric 280 350 +25.0% 0.80x (?)
ArrayPlusEqualArrayOfInt 280 350 +25.0% 0.80x
ArrayAppendFromGeneric 280 350 +25.0% 0.80x (?)
UTF8Decode_InitFromBytes 134 164 +22.4% 0.82x (?)
ArrayPlusEqualSingleElementCollection 423 517 +22.2% 0.82x (?)
ArrayAppendToFromGeneric 280 340 +21.4% 0.82x (?)
ArrayAppendArrayOfInt 280 340 +21.4% 0.82x (?)
MapReduceSequence 355 424 +19.4% 0.84x (?)
ArrayAppendLazyMap 3640 4220 +15.9% 0.86x (?)
NSStringConversion.Long 491 563 +14.7% 0.87x (?)
PrefixWhileAnySeqCRangeIter 162 185 +14.2% 0.88x (?)
PrefixWhileSequence 163 186 +14.1% 0.88x (?)
PrefixWhileAnySeqCntRange 163 186 +14.1% 0.88x (?)
LazilyFilteredRange 1930 2200 +14.0% 0.88x (?)
ArrayAppendSequence 510 580 +13.7% 0.88x (?)
CSVParsingAlt2 968 1078 +11.4% 0.90x (?)
DropWhileArrayLazy 44 49 +11.4% 0.90x (?)
StringHasPrefixAscii 1170 1300 +11.1% 0.90x (?)
IterateData 828 913 +10.3% 0.91x (?)
DictionarySubscriptDefaultMutationArray 407 446 +9.6% 0.91x (?)
ArrayPlusEqualFiveElementCollection 4292 4699 +9.5% 0.91x (?)
DropWhileArray 22 24 +9.1% 0.92x (?)
NSStringConversion.Medium 241 262 +8.7% 0.92x (?)
ArraySubscript 800 864 +8.0% 0.93x (?)
 
Improvement OLD NEW DELTA RATIO
FlattenListFlatMap 5681 3784 -33.4% 1.50x (?)
ObjectiveCBridgeStubFromNSStringRef 100 83 -17.0% 1.20x (?)
UTF8Decode_InitDecoding 162 137 -15.4% 1.18x (?)
MapReduceShortString 13 11 -15.4% 1.18x (?)
ArrayPlusEqualThreeElements 1250 1060 -15.2% 1.18x (?)
DataToStringSmall 1950 1700 -12.8% 1.15x (?)
RangeReplaceableCollectionPlusDefault 568 496 -12.7% 1.15x (?)
MapReduceAnyCollectionShort 1390 1220 -12.2% 1.14x
MapReduceClassShort2 141 124 -12.1% 1.14x (?)
ObjectiveCBridgeStubFromNSDateRef 2540 2330 -8.3% 1.09x (?)
CStringShortAscii 1060 980 -7.5% 1.08x (?)
StringHashing_fastPrenormal 570 530 -7.0% 1.08x (?)
AngryPhonebook.Strasse.Small 644 599 -7.0% 1.08x (?)
AngryPhonebook.Armenian.Small 557 519 -6.8% 1.07x (?)

Code size: -O

Regression OLD NEW DELTA RATIO
ArraySetElement.o 1240 1611 +29.9% 0.77x
COWArrayGuaranteedParameterOverhead.o 1315 1702 +29.4% 0.77x
Sim2DArray.o 1320 1707 +29.3% 0.77x
Join.o 1615 1963 +21.5% 0.82x
Memset.o 2215 2602 +17.5% 0.85x
XorLoop.o 2132 2498 +17.2% 0.85x
ArraySubscript.o 2858 3346 +17.1% 0.85x
StackPromo.o 2217 2577 +16.2% 0.86x
MonteCarloE.o 2788 3236 +16.1% 0.86x
Array2D.o 2984 3463 +16.1% 0.86x
ObserverClosure.o 2478 2790 +12.6% 0.89x
ObserverPartiallyAppliedMethod.o 2525 2837 +12.4% 0.89x
RangeAssignment.o 3276 3668 +12.0% 0.89x
SortArrayInClass.o 2738 3061 +11.8% 0.89x
PopFrontGeneric.o 2744 3064 +11.7% 0.90x
ObserverForwarderStruct.o 2852 3180 +11.5% 0.90x
Hanoi.o 3120 3463 +11.0% 0.90x
PopFront.o 3923 4315 +10.0% 0.91x
ReduceInto.o 10932 11932 +9.1% 0.92x
RandomShuffle.o 3632 3961 +9.1% 0.92x
RC4.o 3927 4271 +8.8% 0.92x
ChainedFilterMap.o 3477 3765 +8.3% 0.92x
FlattenList.o 4346 4698 +8.1% 0.93x
ArrayInClass.o 4527 4882 +7.8% 0.93x
Combos.o 5070 5454 +7.6% 0.93x
RangeOverlaps.o 6072 6522 +7.4% 0.93x
BinaryFloatingPointProperties.o 5676 6075 +7.0% 0.93x
DiffingMyers.o 6499 6923 +6.5% 0.94x
ObserverUnappliedMethod.o 5089 5417 +6.4% 0.94x
BucketSort.o 8451 8987 +6.3% 0.94x
Walsh.o 6364 6764 +6.3% 0.94x
RomanNumbers.o 6436 6836 +6.2% 0.94x
StringRemoveDupes.o 5573 5917 +6.2% 0.94x
ClassArrayGetter.o 3819 4051 +6.1% 0.94x
RangeReplaceableCollectionPlusDefault.o 5564 5892 +5.9% 0.94x
ReversedCollections.o 9254 9790 +5.8% 0.95x
Phonebook.o 10011 10571 +5.6% 0.95x
MapReduce.o 27943 29463 +5.4% 0.95x
SortIntPyramids.o 9005 9493 +5.4% 0.95x
NopDeinit.o 4007 4223 +5.4% 0.95x
Prims.o 12907 13547 +5.0% 0.95x
PrimsSplit.o 12959 13599 +4.9% 0.95x
CString.o 7047 7391 +4.9% 0.95x
SortLettersInPlace.o 8421 8829 +4.8% 0.95x
LazyFilter.o 8389 8734 +4.1% 0.96x
StaticArray.o 11991 12480 +4.1% 0.96x
RandomTree.o 12359 12831 +3.8% 0.96x
DictionaryOfAnyHashableStrings.o 9279 9623 +3.7% 0.96x
NibbleSort.o 13304 13760 +3.4% 0.97x
FindStringNaive.o 9563 9883 +3.3% 0.97x
StringEdits.o 10950 11303 +3.2% 0.97x
Queue.o 12165 12557 +3.2% 0.97x
Diffing.o 8763 9043 +3.2% 0.97x
ArrayOfGenericRef.o 8966 9246 +3.1% 0.97x
AngryPhonebook.o 9974 10278 +3.0% 0.97x
Breadcrumbs.o 37303 38383 +2.9% 0.97x
ChaCha.o 14361 14753 +2.7% 0.97x
UTF8Decode.o 13452 13812 +2.7% 0.97x
COWTree.o 11684 11988 +2.6% 0.97x
ArrayOfRef.o 9379 9611 +2.5% 0.98x
DictionaryGroup.o 12659 12955 +2.3% 0.98x
SortStrings.o 24724 25287 +2.3% 0.98x
RGBHistogram.o 21382 21829 +2.1% 0.98x
RemoveWhere.o 17237 17589 +2.0% 0.98x
DictOfArraysToArrayOfDicts.o 22656 23112 +2.0% 0.98x
ObjectiveCBridgingStubs.o 16789 17117 +2.0% 0.98x
SortLargeExistentials.o 20062 20438 +1.9% 0.98x
Substring.o 17537 17865 +1.9% 0.98x
PrefixWhile.o 18212 18540 +1.8% 0.98x
Hash.o 23178 23571 +1.7% 0.98x
DropWhile.o 18386 18674 +1.6% 0.98x
Prefix.o 18608 18896 +1.5% 0.98x
Suffix.o 24013 24381 +1.5% 0.98x
DropFirst.o 19932 20220 +1.4% 0.99x
DictionarySubscriptDefault.o 19859 20131 +1.4% 0.99x
SequenceAlgos.o 22215 22503 +1.3% 0.99x
ArrayAppend.o 26175 26495 +1.2% 0.99x
DropLast.o 24063 24351 +1.2% 0.99x
WordCount.o 38993 39393 +1.0% 0.99x
 
Improvement OLD NEW DELTA RATIO
main.o 54179 53611 -1.0% 1.01x

Performance: -Osize

Regression OLD NEW DELTA RATIO
ArrayAppendOptionals 580 2650 +356.9% 0.22x
ArrayAppendGenericStructs 590 2670 +352.5% 0.22x
SuffixArrayLazy 5 9 +80.0% 0.56x
SumUsingReduce 281 439 +56.2% 0.64x
SumUsingReduceInto 282 439 +55.7% 0.64x
PrefixCountableRangeLazy 18 26 +44.4% 0.69x
DropLastAnyCollection 27 38 +40.7% 0.71x
FilterEvenUsingReduceInto 104 140 +34.6% 0.74x
DropFirstSequence 33 44 +33.3% 0.75x
PrefixWhileArrayLazy 20 26 +30.0% 0.77x (?)
UTF8Decode_InitFromData 121 157 +29.8% 0.77x
DropFirstSequenceLazy 34 44 +29.4% 0.77x
MapReduceSequence 377 475 +26.0% 0.79x
ArrayAppendToGeneric 280 350 +25.0% 0.80x (?)
ArrayAppendToFromGeneric 280 350 +25.0% 0.80x
ArrayAppendFromGeneric 280 350 +25.0% 0.80x (?)
ArrayAppendArrayOfInt 280 350 +25.0% 0.80x (?)
UTF8Decode_InitFromBytes 133 164 +23.3% 0.81x
DropFirstAnySeqCntRangeLazy 103 127 +23.3% 0.81x (?)
DropWhileSequence 14 17 +21.4% 0.82x (?)
PrefixWhileAnyCollectionLazy 81 98 +21.0% 0.83x (?)
ArrayPlusEqualArrayOfInt 290 350 +20.7% 0.83x
DropFirstAnyCollection 73 87 +19.2% 0.84x
DropWhileArrayLazy 49 58 +18.4% 0.84x
ObjectiveCBridgeStubDateAccess 130 152 +16.9% 0.86x (?)
NSStringConversion.Long 516 598 +15.9% 0.86x (?)
StringHasPrefixAscii 1110 1260 +13.5% 0.88x (?)
CSVParsingAlt2 1001 1133 +13.2% 0.88x
ArraySetElement 262 296 +13.0% 0.89x
ArrayAppendSequence 550 620 +12.7% 0.89x (?)
IterateData 828 932 +12.6% 0.89x (?)
DropLastAnySeqCntRange 425 476 +12.0% 0.89x (?)
PrefixWhileSequence 177 197 +11.3% 0.90x (?)
ArrayPlusEqualFiveElementCollection 4292 4773 +11.2% 0.90x (?)
ArrayPlusEqualSingleElementCollection 470 517 +10.0% 0.91x (?)
Set.isSubset.Seq.Int.Empty 103 113 +9.7% 0.91x (?)
DictionarySubscriptDefaultMutationArray 442 482 +9.0% 0.92x (?)
 
Improvement OLD NEW DELTA RATIO
PrefixArrayLazy 26 14 -46.2% 1.86x
PrefixWhileCountableRange 26 15 -42.3% 1.73x
PrefixAnyCollection 107 72 -32.7% 1.49x (?)
Dictionary4 205 157 -23.4% 1.31x
PrefixWhileAnySeqCRangeIterLazy 99 81 -18.2% 1.22x
SuffixCountableRange 6 5 -16.7% 1.20x (?)
PrefixWhileAnySeqCntRangeLazy 97 81 -16.5% 1.20x (?)
MapReduceShortString 13 11 -15.4% 1.18x (?)
DropWhileAnySeqCntRangeLazy 139 118 -15.1% 1.18x
NormalizedIterator_fastPrenormal 670 570 -14.9% 1.18x
UTF8Decode_InitDecoding 161 137 -14.9% 1.18x
PrefixAnySeqCntRangeLazy 95 81 -14.7% 1.17x
DropWhileAnySeqCRangeIterLazy 140 120 -14.3% 1.17x
PrefixAnySeqCRangeIterLazy 94 81 -13.8% 1.16x
Dictionary4OfObjects 262 228 -13.0% 1.15x (?)
Set.subtracting.Empty.Box 8 7 -12.5% 1.14x (?)
MapReduceAnyCollectionShort 1420 1260 -11.3% 1.13x (?)
RangeReplaceableCollectionPlusDefault 600 536 -10.7% 1.12x (?)
DataToStringSmall 1900 1700 -10.5% 1.12x (?)
ArrayPlusEqualThreeElements 1330 1190 -10.5% 1.12x (?)
PrefixWhileAnyCollection 109 99 -9.2% 1.10x (?)
MapReduceShort 1710 1560 -8.8% 1.10x (?)
AngryPhonebook.Strasse.Small 651 599 -8.0% 1.09x (?)
AngryPhonebook.Armenian.Small 557 513 -7.9% 1.09x (?)
StringComparison_ascii 376 347 -7.7% 1.08x (?)
CStringShortAscii 1060 980 -7.5% 1.08x (?)
NormalizedIterator_latin1 218 202 -7.3% 1.08x (?)
Set.isDisjoint.Int.Empty 55 51 -7.3% 1.08x (?)
ObjectiveCBridgeStubFromNSDate 2770 2570 -7.2% 1.08x (?)
Calculator 154 143 -7.1% 1.08x (?)
StringHashing_fastPrenormal 570 530 -7.0% 1.08x (?)
AngryPhonebook.Cyrillic.Small 562 523 -6.9% 1.07x (?)

Code size: -Osize

Regression OLD NEW DELTA RATIO
ArraySetElement.o 1286 1660 +29.1% 0.77x
Sim2DArray.o 1350 1740 +28.9% 0.78x
COWArrayGuaranteedParameterOverhead.o 1393 1783 +28.0% 0.78x
Join.o 1655 2012 +21.6% 0.82x
XorLoop.o 2042 2435 +19.2% 0.84x
Memset.o 1989 2363 +18.8% 0.84x
Array2D.o 2724 3215 +18.0% 0.85x
ArraySubscript.o 2832 3336 +17.8% 0.85x
StackPromo.o 2193 2537 +15.7% 0.86x
MonteCarloE.o 2954 3392 +14.8% 0.87x
RangeAssignment.o 3202 3610 +12.7% 0.89x
SortArrayInClass.o 2958 3324 +12.4% 0.89x
ObserverClosure.o 2858 3194 +11.8% 0.89x
ObserverPartiallyAppliedMethod.o 2905 3241 +11.6% 0.90x
PopFrontGeneric.o 2768 3088 +11.6% 0.90x
PopFront.o 3561 3954 +11.0% 0.90x
ObserverForwarderStruct.o 2992 3298 +10.2% 0.91x
RC4.o 3429 3773 +10.0% 0.91x
Hanoi.o 3303 3632 +10.0% 0.91x
FlattenList.o 3914 4298 +9.8% 0.91x
Walsh.o 4322 4722 +9.3% 0.92x
StringRemoveDupes.o 3895 4255 +9.2% 0.92x
RangeOverlaps.o 5790 6264 +8.2% 0.92x
BinaryFloatingPointProperties.o 5371 5772 +7.5% 0.93x
ArrayInClass.o 4812 5170 +7.4% 0.93x
RangeReplaceableCollectionPlusDefault.o 4850 5210 +7.4% 0.93x
Combos.o 5390 5790 +7.4% 0.93x
BucketSort.o 8299 8899 +7.2% 0.93x
RandomShuffle.o 3878 4153 +7.1% 0.93x
ChainedFilterMap.o 3405 3645 +7.0% 0.93x
DiffingMyers.o 6659 7115 +6.8% 0.94x
RomanNumbers.o 6878 7310 +6.3% 0.94x
Prims.o 12171 12875 +5.8% 0.95x
ObserverUnappliedMethod.o 5409 5721 +5.8% 0.95x
PrimsSplit.o 12223 12927 +5.8% 0.95x
ReversedCollections.o 8777 9281 +5.7% 0.95x
ClassArrayGetter.o 3818 4034 +5.7% 0.95x
Phonebook.o 9718 10222 +5.2% 0.95x
CString.o 6735 7079 +5.1% 0.95x
SortIntPyramids.o 9062 9518 +5.0% 0.95x
LazyFilter.o 8019 8412 +4.9% 0.95x
NopDeinit.o 4583 4799 +4.7% 0.95x
SortLettersInPlace.o 8108 8468 +4.4% 0.96x
StaticArray.o 11093 11584 +4.4% 0.96x
DictionaryOfAnyHashableStrings.o 8456 8816 +4.3% 0.96x
Queue.o 12285 12757 +3.8% 0.96x
NibbleSort.o 13000 13496 +3.8% 0.96x
AngryPhonebook.o 9433 9777 +3.6% 0.96x
StringEdits.o 10633 11018 +3.6% 0.97x
ReduceInto.o 9414 9726 +3.3% 0.97x
FindStringNaive.o 9195 9499 +3.3% 0.97x
Breadcrumbs.o 36728 37872 +3.1% 0.97x
ChaCha.o 12049 12409 +3.0% 0.97x
DictionaryGroup.o 11083 11411 +3.0% 0.97x
RandomTree.o 12119 12463 +2.8% 0.97x
Diffing.o 8611 8835 +2.6% 0.97x
ArrayOfRef.o 9587 9835 +2.6% 0.97x
ArrayOfGenericRef.o 9230 9462 +2.5% 0.98x
DictOfArraysToArrayOfDicts.o 21504 22040 +2.5% 0.98x
RGBHistogram.o 20096 20591 +2.5% 0.98x
COWTree.o 11884 12172 +2.4% 0.98x
ObjectiveCBridgingStubs.o 15381 15741 +2.3% 0.98x
RemoveWhere.o 16347 16699 +2.2% 0.98x
SortLargeExistentials.o 20462 20902 +2.2% 0.98x
UTF8Decode.o 11551 11799 +2.1% 0.98x
PrefixWhile.o 16556 16900 +2.1% 0.98x
SortStrings.o 27250 27811 +2.1% 0.98x
Hash.o 20307 20720 +2.0% 0.98x
Substring.o 16609 16921 +1.9% 0.98x
Suffix.o 22227 22643 +1.9% 0.98x
ArrayAppend.o 23223 23655 +1.9% 0.98x
DictionarySubscriptDefault.o 17083 17371 +1.7% 0.98x
WordCount.o 37823 38415 +1.6% 0.98x
DropWhile.o 17940 18212 +1.5% 0.99x
DropLast.o 22237 22573 +1.5% 0.99x
Prefix.o 18724 18996 +1.5% 0.99x
IntegerParsing.o 55195 55987 +1.4% 0.99x
DropFirst.o 19599 19871 +1.4% 0.99x
CSVParsing.o 49892 50516 +1.3% 0.99x
PrimsNonStrongRef.o 102516 103772 +1.2% 0.99x
SequenceAlgos.o 23479 23743 +1.1% 0.99x
StringComparison.o 36168 36552 +1.1% 0.99x

Performance: -Onone

Regression OLD NEW DELTA RATIO
ArrayAppendGenericStructs 600 2630 +338.3% 0.23x
ArrayAppendOptionals 600 2630 +338.3% 0.23x
UTF8Decode_InitFromData 123 154 +25.2% 0.80x
UTF8Decode_InitFromBytes 136 168 +23.5% 0.81x
ArrayAppendToGeneric 300 360 +20.0% 0.83x (?)
ArrayPlusEqualArrayOfInt 300 360 +20.0% 0.83x (?)
ArrayAppendToFromGeneric 300 360 +20.0% 0.83x (?)
ArrayAppendFromGeneric 300 360 +20.0% 0.83x (?)
ArrayAppendArrayOfInt 300 360 +20.0% 0.83x (?)
 
Improvement OLD NEW DELTA RATIO
UTF8Decode_InitDecoding 183 161 -12.0% 1.14x
ArrayOfPOD 727 649 -10.7% 1.12x (?)
DataToStringSmall 2250 2050 -8.9% 1.10x (?)
AngryPhonebook.Strasse.Small 734 680 -7.4% 1.08x (?)
ArrayOfGenericPOD2 573 535 -6.6% 1.07x (?)

Code size: -swiftlibs

Regression OLD NEW DELTA RATIO
libswiftCoreAudio.dylib 20480 24576 +20.0% 0.83x
libswiftSwiftReflectionTest.dylib 24576 28672 +16.7% 0.86x
libswiftCoreGraphics.dylib 57344 61440 +7.1% 0.93x
libswiftSwiftOnoneSupport.dylib 155648 159744 +2.6% 0.97x
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

@Catfish-Man
Copy link
Contributor Author

libswiftCoreAudio.dylib is fixed locally, I think it's just riiiiight on the edge of a 4kB block boundary of some sort, so a stray byte here or there bumps it up a bunch and looks alarming.

@shahmishal
Copy link
Member

Please update the base branch to main by Oct 5th otherwise the pull request will be closed automatically.

  • How to change the base branch: (Link)
  • More detail about the branch update: (Link)

@shahmishal shahmishal closed this Oct 5, 2020
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.

4 participants