-
Notifications
You must be signed in to change notification settings - Fork 10.5k
Eager HashedCollections Bridging #5703
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
Conversation
@swift-ci Please smoke test |
@swift-ci Please benchmark |
Build comment file:Optimized (O)
|
TEST | OLD_MIN | NEW_MIN | DELTA (%) | SPEEDUP |
---|---|---|---|---|
ObjectiveCBridgeFromNSDictionaryAnyObjectForced | 5126 | 81178 | +1483.7% | 0.06x |
ObjectiveCBridgeFromNSSetAnyObjectForced | 4462 | 69691 | +1461.9% | 0.06x |
ObjectiveCBridgeFromNSSetAnyObject | 79821 | 113898 | +42.7% | 0.70x |
ObjectiveCBridgeFromNSSetAnyObjectToString | 129359 | 170382 | +31.7% | 0.76x |
ObjectiveCBridgeFromNSDictionaryAnyObject | 167848 | 198741 | +18.4% | 0.84x |
146 | 2821761 | 3143141 | +11.4% | 0.90x |
ObjectiveCBridgeFromNSDictionaryAnyObjectToString | 193716 | 210749 | +8.8% | 0.92x(?) |
MapReduce | 322 | 351 | +9.0% | 0.92x |
NSStringConversion | 750 | 807 | +7.6% | 0.93x |
ObjectiveCBridgeStubFromNSDateRef | 3448 | 3674 | +6.5% | 0.94x |
Calculator | 32 | 34 | +6.2% | 0.94x |
ObjectiveCBridgeStubFromNSDate | 3370 | 3583 | +6.3% | 0.94x |
Improvement (18)
TEST | OLD_MIN | NEW_MIN | DELTA (%) | SPEEDUP |
---|---|---|---|---|
SetExclusiveOr_OfObjects | 7003 | 6470 | -7.6% | 1.08x(?) |
RGBHistogram | 2141 | 1974 | -7.8% | 1.08x |
TwoSum | 1254 | 1166 | -7.0% | 1.08x |
Dictionary3 | 492 | 453 | -7.9% | 1.09x(?) |
SetIntersect_OfObjects | 1370 | 1242 | -9.3% | 1.10x |
ObjectiveCBridgeStubNSDateRefAccess | 320 | 291 | -9.1% | 1.10x |
SetUnion_OfObjects | 5868 | 5354 | -8.8% | 1.10x |
CaptureProp | 4315 | 3890 | -9.8% | 1.11x |
Dictionary2OfObjects | 3262 | 2901 | -11.1% | 1.12x |
DictionaryOfObjects | 2162 | 1912 | -11.6% | 1.13x(?) |
PopFrontArrayGeneric | 1189 | 1053 | -11.4% | 1.13x(?) |
SetIsSubsetOf_OfObjects | 289 | 246 | -14.9% | 1.17x |
ObjectiveCBridgeStubFromNSStringRef | 149 | 123 | -17.4% | 1.21x |
DictionaryRemoveOfObjects | 18227 | 13749 | -24.6% | 1.33x |
SetExclusiveOr | 2860 | 1973 | -31.0% | 1.45x |
SetUnion | 2298 | 1506 | -34.5% | 1.53x |
DictionarySwapOfObjects | 5909 | 3361 | -43.1% | 1.76x |
SetIsSubsetOf | 236 | 44 | -81.4% | 5.36x |
No Changes (117)
TEST | OLD_MIN | NEW_MIN | DELTA (%) | SPEEDUP |
---|---|---|---|---|
Dictionary3OfObjects | 822 | 782 | -4.9% | 1.05x |
PopFrontArray | 1069 | 1028 | -3.8% | 1.04x(?) |
Dictionary2 | 1912 | 1844 | -3.6% | 1.04x |
Dictionary | 676 | 647 | -4.3% | 1.04x |
RGBHistogramOfObjects | 20407 | 19693 | -3.5% | 1.04x |
Histogram | 272 | 265 | -2.6% | 1.03x(?) |
Prims | 688 | 665 | -3.3% | 1.03x |
DictionarySwap | 393 | 381 | -3.0% | 1.03x |
Hanoi | 3256 | 3146 | -3.4% | 1.03x |
StringInterpolation | 10361 | 10200 | -1.6% | 1.02x(?) |
Join | 442 | 435 | -1.6% | 1.02x(?) |
ObjectiveCBridgeStubURLAppendPath | 224522 | 220386 | -1.8% | 1.02x(?) |
ObjectiveCBridgeStubToArrayOfNSString | 28167 | 27635 | -1.9% | 1.02x(?) |
SetIntersect | 335 | 327 | -2.4% | 1.02x |
ObjectiveCBridgeStubDataAppend | 2862 | 2806 | -2.0% | 1.02x(?) |
MonteCarloE | 9963 | 9815 | -1.5% | 1.02x |
StringHasPrefixUnicode | 13331 | 13059 | -2.0% | 1.02x |
SortLettersInPlace | 918 | 912 | -0.7% | 1.01x(?) |
ObjectiveCBridgeFromNSString | 1719 | 1700 | -1.1% | 1.01x(?) |
ObserverClosure | 1858 | 1844 | -0.8% | 1.01x(?) |
StaticArray | 2612 | 2589 | -0.9% | 1.01x(?) |
HashTest | 1655 | 1634 | -1.3% | 1.01x(?) |
ErrorHandling | 2771 | 2739 | -1.1% | 1.01x(?) |
ObserverUnappliedMethod | 2241 | 2217 | -1.1% | 1.01x(?) |
ObjectiveCBridgeToNSArray | 28769 | 28542 | -0.8% | 1.01x(?) |
StringEqualPointerComparison | 6928 | 6892 | -0.5% | 1.01x |
ObjectiveCBridgeStubToNSStringRef | 110 | 109 | -0.9% | 1.01x(?) |
SortStringsUnicode | 7756 | 7715 | -0.5% | 1.01x(?) |
NSDictionaryCastToSwift | 4686 | 4658 | -0.6% | 1.01x(?) |
DeadArray | 174 | 172 | -1.1% | 1.01x |
ObjectiveCBridgeStubNSDataAppend | 2315 | 2293 | -0.9% | 1.01x(?) |
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced | 85912 | 84989 | -1.1% | 1.01x(?) |
ObjectiveCBridgeStubFromArrayOfNSString | 55526 | 54917 | -1.1% | 1.01x(?) |
ObjectiveCBridgeToNSString | 1009 | 1012 | +0.3% | 1.00x(?) |
MonteCarloPi | 42424 | 42454 | +0.1% | 1.00x(?) |
StackPromo | 20324 | 20414 | +0.4% | 1.00x(?) |
RecursiveOwnedParameter | 1829 | 1829 | +0.0% | 1.00x |
Integrate | 225 | 225 | +0.0% | 1.00x |
ClassArrayGetter | 12 | 12 | +0.0% | 1.00x |
Array2D | 1936 | 1943 | +0.4% | 1.00x(?) |
SortStrings | 1711 | 1719 | +0.5% | 1.00x(?) |
ArrayOfGenericPOD | 207 | 207 | +0.0% | 1.00x |
StringWithCString | 146339 | 146482 | +0.1% | 1.00x(?) |
ObjectiveCBridgeFromNSStringForced | 2514 | 2523 | +0.4% | 1.00x(?) |
RangeAssignment | 273 | 272 | -0.4% | 1.00x(?) |
StrComplexWalk | 2719 | 2728 | +0.3% | 1.00x(?) |
ByteSwap | 0 | 0 | +0.0% | 1.00x |
ArrayAppendGenericStructs | 1142 | 1143 | +0.1% | 1.00x(?) |
SuperChars | 200041 | 200806 | +0.4% | 1.00x(?) |
ArrayAppendLazyMap | 801 | 800 | -0.1% | 1.00x(?) |
XorLoop | 359 | 359 | +0.0% | 1.00x |
AnyHashableWithAClass | 60037 | 59757 | -0.5% | 1.00x(?) |
ObjectiveCBridgeStubToNSString | 1202 | 1206 | +0.3% | 1.00x(?) |
ArrayAppendStrings | 11365 | 11376 | +0.1% | 1.00x(?) |
ProtocolDispatch | 2868 | 2867 | -0.0% | 1.00x(?) |
ObjectAllocation | 145 | 145 | +0.0% | 1.00x |
TypeFlood | 0 | 0 | +0.0% | 1.00x |
StringHasSuffixUnicode | 59840 | 59719 | -0.2% | 1.00x(?) |
ArrayLiteral | 1116 | 1111 | -0.5% | 1.00x(?) |
ArrayOfRef | 3352 | 3344 | -0.2% | 1.00x(?) |
ArrayAppendOptionals | 1141 | 1144 | +0.3% | 1.00x(?) |
NSError | 307 | 307 | +0.0% | 1.00x |
PopFrontUnsafePointer | 8672 | 8635 | -0.4% | 1.00x(?) |
PolymorphicCalls | 20 | 20 | +0.0% | 1.00x |
ArrayAppendReserved | 506 | 506 | +0.0% | 1.00x |
ObjectiveCBridgeStubDateMutation | 258 | 258 | +0.0% | 1.00x |
DictionaryLiteral | 1196 | 1200 | +0.3% | 1.00x(?) |
OpenClose | 51 | 51 | +0.0% | 1.00x |
UTF8Decode | 272 | 272 | +0.0% | 1.00x |
NopDeinit | 35967 | 35940 | -0.1% | 1.00x(?) |
ObjectiveCBridgeFromNSArrayAnyObject | 71399 | 71215 | -0.3% | 1.00x(?) |
StringBuilder | 1244 | 1241 | -0.2% | 1.00x(?) |
ArrayOfGenericRef | 3407 | 3402 | -0.1% | 1.00x(?) |
StringHasSuffix | 755 | 755 | +0.0% | 1.00x |
Phonebook | 7091 | 7084 | -0.1% | 1.00x(?) |
ObjectiveCBridgeStubDateAccess | 172 | 172 | +0.0% | 1.00x |
Sim2DArray | 261 | 261 | +0.0% | 1.00x |
ArrayAppendRepeatCol | 607 | 607 | +0.0% | 1.00x |
ObjectiveCBridgeToNSDictionary | 59584 | 59544 | -0.1% | 1.00x(?) |
GlobalClass | 0 | 0 | +0.0% | 1.00x |
ArrayAppend | 731 | 731 | +0.0% | 1.00x |
LinkedList | 6820 | 6801 | -0.3% | 1.00x(?) |
ArrayAppendSequence | 1003 | 1003 | +0.0% | 1.00x |
ArrayAppendArrayOfInt | 566 | 566 | +0.0% | 1.00x |
ArrayOfPOD | 172 | 172 | +0.0% | 1.00x |
ObserverForwarderStruct | 842 | 844 | +0.2% | 1.00x(?) |
BitCount | 1 | 1 | +0.0% | 1.00x |
AngryPhonebook | 2666 | 2665 | -0.0% | 1.00x(?) |
ArrayValueProp3 | 5 | 5 | +0.0% | 1.00x |
StringWalk | 5581 | 5579 | -0.0% | 1.00x(?) |
ArrayValueProp | 5 | 5 | +0.0% | 1.00x |
RC4 | 156 | 156 | +0.0% | 1.00x |
Memset | 222 | 222 | +0.0% | 1.00x |
ArrayValueProp4 | 5 | 5 | +0.0% | 1.00x |
ArrayValueProp2 | 5 | 5 | +0.0% | 1.00x |
SevenBoom | 1284 | 1281 | -0.2% | 1.00x(?) |
ObserverPartiallyAppliedMethod | 3185 | 3199 | +0.4% | 1.00x(?) |
ArraySubscript | 1353 | 1361 | +0.6% | 0.99x(?) |
ObjectiveCBridgeFromNSArrayAnyObjectToString | 110969 | 112345 | +1.2% | 0.99x(?) |
ObjectiveCBridgeFromNSArrayAnyObjectForced | 5930 | 5974 | +0.7% | 0.99x(?) |
ObjectiveCBridgeStubToNSDate | 12513 | 12690 | +1.4% | 0.99x(?) |
ProtocolDispatch2 | 149 | 150 | +0.7% | 0.99x(?) |
StringHasPrefix | 678 | 687 | +1.3% | 0.99x(?) |
ObjectiveCBridgeStubURLAppendPathRef | 220085 | 222719 | +1.2% | 0.99x(?) |
ObjectiveCBridgeToNSSet | 38067 | 38571 | +1.3% | 0.99x(?) |
DictionaryRemove | 2195 | 2217 | +1.0% | 0.99x(?) |
ObjectiveCBridgeFromNSSetAnyObjectToStringForced | 96080 | 96702 | +0.7% | 0.99x(?) |
DictionaryBridge | 3561 | 3649 | +2.5% | 0.98x(?) |
ObjectiveCBridgeStubToNSDateRef | 3035 | 3100 | +2.1% | 0.98x(?) |
IterateData | 2402 | 2457 | +2.3% | 0.98x |
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced | 121081 | 123762 | +2.2% | 0.98x(?) |
ArrayInClass | 59 | 60 | +1.7% | 0.98x(?) |
Chars | 583 | 596 | +2.2% | 0.98x |
ObjectiveCBridgeStubFromNSString | 721 | 743 | +3.0% | 0.97x |
Walsh | 292 | 302 | +3.4% | 0.97x |
ObjectiveCBridgeStubNSDateMutationRef | 11021 | 11322 | +2.7% | 0.97x(?) |
StrToInt | 4828 | 5100 | +5.6% | 0.95x |
Regression (9)
TEST | OLD_MIN | NEW_MIN | DELTA (%) | SPEEDUP |
---|---|---|---|---|
ObjectiveCBridgeFromNSDictionaryAnyObjectForced | 7502 | 84320 | +1024.0% | 0.09x |
ObjectiveCBridgeFromNSSetAnyObjectForced | 7147 | 72504 | +914.5% | 0.10x |
ObjectiveCBridgeFromNSSetAnyObject | 84228 | 118593 | +40.8% | 0.71x |
Sim2DArray | 13963 | 17685 | +26.7% | 0.79x |
ObjectiveCBridgeFromNSSetAnyObjectToString | 147536 | 183069 | +24.1% | 0.81x |
ObjectiveCBridgeFromNSDictionaryAnyObject | 174993 | 202470 | +15.7% | 0.86x |
Calculator | 869 | 957 | +10.1% | 0.91x |
ObjectiveCBridgeFromNSDictionaryAnyObjectToString | 202190 | 219979 | +8.8% | 0.92x(?) |
StringWalk | 19815 | 21260 | +7.3% | 0.93x |
Improvement (14)
TEST | OLD_MIN | NEW_MIN | DELTA (%) | SPEEDUP |
---|---|---|---|---|
Dictionary3OfObjects | 1887 | 1787 | -5.3% | 1.06x |
SetIntersect_OfObjects | 11174 | 10451 | -6.5% | 1.07x |
Dictionary | 1738 | 1627 | -6.4% | 1.07x |
DictionarySwapOfObjects | 18282 | 16951 | -7.3% | 1.08x |
SetUnion | 11550 | 10692 | -7.4% | 1.08x |
Dictionary3 | 1311 | 1204 | -8.2% | 1.09x |
RGBHistogramOfObjects | 84380 | 77559 | -8.1% | 1.09x |
SetIsSubsetOf | 2007 | 1811 | -9.8% | 1.11x |
TwoSum | 4682 | 4222 | -9.8% | 1.11x |
Histogram | 9517 | 8446 | -11.2% | 1.13x |
SetIsSubsetOf_OfObjects | 1793 | 1574 | -12.2% | 1.14x |
RGBHistogram | 38000 | 32440 | -14.6% | 1.17x |
DictionarySwap | 5739 | 4450 | -22.5% | 1.29x |
ArrayOfGenericPOD | 5070 | 3320 | -34.5% | 1.53x |
No Changes (124)
TEST | OLD_MIN | NEW_MIN | DELTA (%) | SPEEDUP |
---|---|---|---|---|
ObjectiveCBridgeStubFromNSStringRef | 159 | 152 | -4.4% | 1.05x |
SetIntersect | 12297 | 11729 | -4.6% | 1.05x |
SetExclusiveOr | 22273 | 21203 | -4.8% | 1.05x |
ArrayInClass | 4104 | 3926 | -4.3% | 1.05x |
RangeAssignment | 13028 | 12555 | -3.6% | 1.04x |
StringHasPrefix | 1588 | 1531 | -3.6% | 1.04x |
Dictionary2 | 3837 | 3705 | -3.4% | 1.04x(?) |
DictionaryOfObjects | 4282 | 4136 | -3.4% | 1.04x |
SetExclusiveOr_OfObjects | 38051 | 36610 | -3.8% | 1.04x |
ProtocolDispatch | 6062 | 5892 | -2.8% | 1.03x |
NSDictionaryCastToSwift | 5836 | 5658 | -3.0% | 1.03x(?) |
SetUnion_OfObjects | 26681 | 25780 | -3.4% | 1.03x |
DictionaryRemove | 16328 | 15829 | -3.1% | 1.03x |
Prims | 12609 | 12369 | -1.9% | 1.02x |
ObjectAllocation | 534 | 524 | -1.9% | 1.02x(?) |
ObjectiveCBridgeStubURLAppendPath | 229451 | 224560 | -2.1% | 1.02x(?) |
StringHasPrefixUnicode | 14557 | 14283 | -1.9% | 1.02x |
ArrayLiteral | 1192 | 1174 | -1.5% | 1.02x |
ArrayValueProp2 | 3012 | 2955 | -1.9% | 1.02x(?) |
Dictionary2OfObjects | 5597 | 5477 | -2.1% | 1.02x |
ArraySubscript | 5351 | 5304 | -0.9% | 1.01x(?) |
RecursiveOwnedParameter | 10308 | 10237 | -0.7% | 1.01x(?) |
AngryPhonebook | 2816 | 2799 | -0.6% | 1.01x(?) |
ProtocolDispatch2 | 419 | 416 | -0.7% | 1.01x |
ObjectiveCBridgeToNSArray | 29328 | 29072 | -0.9% | 1.01x(?) |
CaptureProp | 111416 | 110087 | -1.2% | 1.01x |
IterateData | 10026 | 9937 | -0.9% | 1.01x |
ObjectiveCBridgeFromNSArrayAnyObject | 74534 | 74163 | -0.5% | 1.01x(?) |
ObjectiveCBridgeStubDataAppend | 3221 | 3177 | -1.4% | 1.01x |
ArrayOfGenericRef | 9486 | 9431 | -0.6% | 1.01x(?) |
ArrayAppendRepeatCol | 203833 | 201198 | -1.3% | 1.01x |
ObjectiveCBridgeStubNSDateMutationRef | 13731 | 13568 | -1.2% | 1.01x(?) |
MapReduce | 43143 | 42812 | -0.8% | 1.01x(?) |
ArrayAppendSequence | 100803 | 100088 | -0.7% | 1.01x |
DeadArray | 114668 | 113981 | -0.6% | 1.01x(?) |
AnyHashableWithAClass | 73326 | 72560 | -1.0% | 1.01x(?) |
StringHasSuffix | 1674 | 1656 | -1.1% | 1.01x(?) |
ObjectiveCBridgeStubFromNSDate | 3742 | 3697 | -1.2% | 1.01x(?) |
ObjectiveCBridgeToNSString | 1044 | 1039 | -0.5% | 1.00x |
MonteCarloPi | 50669 | 50661 | -0.0% | 1.00x(?) |
PopFrontArray | 23038 | 23046 | +0.0% | 1.00x(?) |
ObjectiveCBridgeStubToNSString | 1262 | 1258 | -0.3% | 1.00x(?) |
ClassArrayGetter | 1194 | 1195 | +0.1% | 1.00x(?) |
Array2D | 767171 | 767412 | +0.0% | 1.00x(?) |
SortStrings | 2540 | 2528 | -0.5% | 1.00x(?) |
StringWithCString | 144313 | 144439 | +0.1% | 1.00x(?) |
ObjectiveCBridgeFromNSArrayAnyObjectForced | 9901 | 9866 | -0.3% | 1.00x(?) |
ObjectiveCBridgeFromNSStringForced | 2911 | 2900 | -0.4% | 1.00x(?) |
SortLettersInPlace | 2440 | 2437 | -0.1% | 1.00x(?) |
ByteSwap | 9 | 9 | +0.0% | 1.00x |
ArrayAppendGenericStructs | 1187 | 1186 | -0.1% | 1.00x(?) |
SuperChars | 220623 | 221082 | +0.2% | 1.00x(?) |
ArrayAppendLazyMap | 231580 | 231099 | -0.2% | 1.00x(?) |
XorLoop | 19028 | 18989 | -0.2% | 1.00x |
StringInterpolation | 14863 | 14850 | -0.1% | 1.00x(?) |
ObserverClosure | 6558 | 6578 | +0.3% | 1.00x(?) |
ArrayAppendStrings | 11105 | 11080 | -0.2% | 1.00x(?) |
ObjectiveCBridgeStubFromNSString | 777 | 776 | -0.1% | 1.00x(?) |
HashTest | 4960 | 4945 | -0.3% | 1.00x(?) |
StrComplexWalk | 7205 | 7220 | +0.2% | 1.00x(?) |
Join | 1379 | 1382 | +0.2% | 1.00x(?) |
ArrayOfRef | 8602 | 8571 | -0.4% | 1.00x(?) |
ObserverUnappliedMethod | 8201 | 8241 | +0.5% | 1.00x(?) |
ObjectiveCBridgeStubDateMutation | 487 | 488 | +0.2% | 1.00x(?) |
NSError | 637 | 637 | +0.0% | 1.00x |
PopFrontArrayGeneric | 9151 | 9154 | +0.0% | 1.00x(?) |
PopFrontUnsafePointer | 243951 | 244247 | +0.1% | 1.00x(?) |
ObjectiveCBridgeStubToNSStringRef | 147 | 147 | +0.0% | 1.00x |
ArrayAppendOptionals | 1187 | 1186 | -0.1% | 1.00x(?) |
DictionaryLiteral | 14828 | 14806 | -0.1% | 1.00x(?) |
Hanoi | 18538 | 18571 | +0.2% | 1.00x(?) |
DictionaryRemoveOfObjects | 44042 | 43889 | -0.3% | 1.00x(?) |
UTF8Decode | 41049 | 41049 | +0.0% | 1.00x |
StringBuilder | 2550 | 2538 | -0.5% | 1.00x(?) |
ObjectiveCBridgeToNSDictionary | 60294 | 60243 | -0.1% | 1.00x(?) |
MonteCarloE | 102490 | 102408 | -0.1% | 1.00x(?) |
RC4 | 8864 | 8868 | +0.1% | 1.00x(?) |
Walsh | 12457 | 12436 | -0.2% | 1.00x(?) |
ArrayAppend | 3353 | 3353 | +0.0% | 1.00x |
LinkedList | 26020 | 26008 | -0.1% | 1.00x(?) |
ObjectiveCBridgeFromNSSetAnyObjectToStringForced | 107076 | 107532 | +0.4% | 1.00x(?) |
ArrayAppendArrayOfInt | 605 | 605 | +0.0% | 1.00x |
ArrayOfPOD | 2369 | 2370 | +0.0% | 1.00x(?) |
Chars | 4707 | 4712 | +0.1% | 1.00x |
StrToInt | 5509 | 5498 | -0.2% | 1.00x(?) |
BitCount | 91 | 91 | +0.0% | 1.00x |
ArrayValueProp3 | 2904 | 2895 | -0.3% | 1.00x(?) |
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced | 87945 | 87974 | +0.0% | 1.00x(?) |
ArrayValueProp4 | 2845 | 2831 | -0.5% | 1.00x(?) |
ObjectiveCBridgeStubFromArrayOfNSString | 56148 | 56346 | +0.3% | 1.00x(?) |
GlobalClass | 0 | 0 | +0.0% | 1.00x |
Memset | 19775 | 19782 | +0.0% | 1.00x(?) |
ArrayAppendReserved | 3117 | 3115 | -0.1% | 1.00x(?) |
SevenBoom | 1414 | 1420 | +0.4% | 1.00x(?) |
ObserverPartiallyAppliedMethod | 7870 | 7857 | -0.2% | 1.00x(?) |
ObjectiveCBridgeFromNSArrayAnyObjectToString | 112825 | 113915 | +1.0% | 0.99x(?) |
Integrate | 345 | 348 | +0.9% | 0.99x |
ErrorHandling | 3545 | 3595 | +1.4% | 0.99x(?) |
StaticArray | 32800 | 33209 | +1.2% | 0.99x(?) |
TypeFlood | 169 | 171 | +1.2% | 0.99x(?) |
StringHasSuffixUnicode | 61391 | 61735 | +0.6% | 0.99x |
ObjectiveCBridgeToNSSet | 38634 | 38842 | +0.5% | 0.99x(?) |
SortStringsUnicode | 8844 | 8911 | +0.8% | 0.99x |
ObjectiveCBridgeStubToArrayOfNSString | 28024 | 28193 | +0.6% | 0.99x(?) |
Phonebook | 59089 | 59726 | +1.1% | 0.99x(?) |
ObserverForwarderStruct | 4934 | 4964 | +0.6% | 0.99x(?) |
ArrayValueProp | 2470 | 2483 | +0.5% | 0.99x |
ObjectiveCBridgeStubNSDataAppend | 2618 | 2633 | +0.6% | 0.99x(?) |
StackPromo | 120416 | 122913 | +2.1% | 0.98x(?) |
ObjectiveCBridgeStubFromNSDateRef | 3818 | 3888 | +1.8% | 0.98x |
ObjectiveCBridgeStubToNSDateRef | 3093 | 3159 | +2.1% | 0.98x(?) |
StringEqualPointerComparison | 9032 | 9218 | +2.1% | 0.98x |
PolymorphicCalls | 1078 | 1095 | +1.6% | 0.98x |
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced | 126170 | 128188 | +1.6% | 0.98x(?) |
ObjectiveCBridgeStubNSDateRefAccess | 1161 | 1187 | +2.2% | 0.98x |
ObjectiveCBridgeFromNSString | 4828 | 4913 | +1.8% | 0.98x(?) |
NSStringConversion | 2820 | 2868 | +1.7% | 0.98x(?) |
DictionaryBridge | 3635 | 3729 | +2.6% | 0.97x(?) |
ObjectiveCBridgeStubURLAppendPathRef | 222613 | 229113 | +2.9% | 0.97x(?) |
OpenClose | 402 | 419 | +4.2% | 0.96x |
ObjectiveCBridgeStubDateAccess | 1004 | 1049 | +4.5% | 0.96x |
146 | 5677095 | 5897647 | +3.9% | 0.96x |
ObjectiveCBridgeStubToNSDate | 12923 | 13573 | +5.0% | 0.95x(?) |
NopDeinit | 54828 | 57822 | +5.5% | 0.95x |
default: return nil | ||
} | ||
} | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note to self: upon reflection this fix is dubious; it implies the motivation for this type is no longer happening. Need to investigate what the point of this really is.
Also note: the existing implementation appears to also have UB (strict aliasing violation).
Note: this commit has several TODOs that are resolved in the next commit.
* Some tests were removed because they exclusively check for lazy bridge behaviour * Many checks for objc/native-ness were removed as meaningless * Many checks for identity were updated (or removed) for new semantics * Trap checks were updated to reflect more eager semantics * A keysEnumerator() impl had to be added as the new design touches it * Some tests that randomly touch impl details were updated
@swift-ci please smoke test |
rebased and added updates to reflection tests. Annoyingly, updating the size of a type means all the offsets get messed up. |
@slavapestov is verifying the offsets (which are naturally just the sum of strides) really interesting? |
Hi @gankro can you hold off landing this until I land some resilience fixes? Your previous changes broke the resilient build and I'm still debugging them. |
@slavapestov this won't land for a long while; these branches are mostly here so everyone who wants to evaluate their consequences can. Also: dang I'm really sorry about constantly breakinn resilience :( |
No worries, it's good to shake all the bugs out. |
It looks like we never did get around to eager bridging. Should this remain open @Gankra? |
i feel like y'all should maybe have a better understanding of what your project should do than me, someone who hasn't worked here for 3 years? |
@Gankra Very well. Thank you for all the work that went into this patch. I'm just sorry we weren't able to take it at the time. I've spoken to the stdlib folk and they believe there may still be limited cases where this optimization makes sense. I've filed SR-11805 to see if an external contributor would like to take up the mantle at some point in the future. With luck, your patch may yet make it through! |
Now that the rewrite of HashedCollections is done, we can move forward with looking at the impact of eager bridging Dictionary and Set. Not implemented in this PR is the refactoring of the design of bridging that @dabrahams did. That was just to get this out tonight to run benching/testing and get some feedback.