Skip to content

[stdlib][DNM] Test out perf impact of making Hasher resilient #18953

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

airspeedswift
Copy link
Member

Just a perf experiment at this point.

@airspeedswift
Copy link
Member Author

@swift-ci please smoke benchmark staging

@swift-ci
Copy link
Contributor

Build comment file:

Performance: -O

TEST OLD NEW DELTA SPEEDUP
Regression
SetIntersect_OfObjects 1931 3177 +64.5% 0.61x
SetIsSubsetOf_OfObjects 449 683 +52.1% 0.66x
SetExclusiveOr_OfObjects 11560 15682 +35.7% 0.74x
SetUnion_OfObjects 9956 12923 +29.8% 0.77x
Dictionary4OfObjects 421 532 +26.4% 0.79x
Dictionary4 305 367 +20.3% 0.83x
Dictionary3OfObjects 710 822 +15.8% 0.86x
RGBHistogramOfObjects 19635 22246 +13.3% 0.88x
DictionaryRemoveOfObjects 24811 27908 +12.5% 0.89x
DictionarySwapOfObjects 9232 10325 +11.8% 0.89x
Dictionary2OfObjects 2077 2321 +11.7% 0.89x
DictionaryOfObjects 2542 2793 +9.9% 0.91x
DictionarySubscriptDefaultMutationOfObjects 1727 1889 +9.4% 0.91x
Improvement
StringComparison_latin1 698 638 -8.6% 1.09x

Performance: -Osize

TEST OLD NEW DELTA SPEEDUP
Regression
SetIntersect_OfObjects 1963 3215 +63.8% 0.61x
SetExclusiveOr_OfObjects 11572 15811 +36.6% 0.73x
SetUnion_OfObjects 10080 13220 +31.2% 0.76x
SetIsSubsetOf_OfObjects 516 664 +28.7% 0.78x
Dictionary4OfObjects 474 576 +21.5% 0.82x
Dictionary4 330 393 +19.1% 0.84x
DictionarySwapOfObjects 8770 10360 +18.1% 0.85x
DictionaryRemoveOfObjects 25790 29155 +13.0% 0.88x
RGBHistogramOfObjects 19755 22038 +11.6% 0.90x
DictionarySubscriptDefaultMutationOfObjects 1738 1934 +11.3% 0.90x
StringWordBuilder 1737 1891 +8.9% 0.92x (?)
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

@jrose-apple
Copy link
Contributor

That's…not nearly as bad as it was the first time we tried it!

@airspeedswift
Copy link
Member Author

@swift-ci please smoke benchmark

@jrose-apple
Copy link
Contributor

Oops; after #18862, this diff might not be the right test anymore.

@jrose-apple
Copy link
Contributor

jrose-apple commented Sep 27, 2018

Whoops, that should be 55eaa7f in #19332.

@swift-ci
Copy link
Contributor

Build comment file:

Performance: -O

TEST OLD NEW DELTA RATIO
Regression
SetIsSubsetBox25 164 278 +69.5% 0.59x
SetIntersectionBox0 133 225 +69.2% 0.59x
SetIntersectionBox25 256 363 +41.8% 0.71x
SetIsSubsetBox0 311 439 +41.2% 0.71x
SetSubtractingBox0 143 198 +38.5% 0.72x
SetSymmetricDifferenceBox25 494 650 +31.6% 0.76x
Dictionary4OfObjects 343 443 +29.2% 0.77x
Dictionary4 251 323 +28.7% 0.78x
SetSubtractingBox25 250 307 +22.8% 0.81x
SetExclusiveOr_OfObjects 6757 8202 +21.4% 0.82x
SetSymmetricDifferenceBox0 676 818 +21.0% 0.83x
DictionarySwapOfObjects 7125 8555 +20.1% 0.83x
SetUnionBox25 334 398 +19.2% 0.84x
DictionaryRemoveOfObjects 20077 23644 +17.8% 0.85x
Dictionary3OfObjects 543 635 +16.9% 0.86x
DictionarySwapAtOfObjects 8322 9511 +14.3% 0.87x
Prims 709 795 +12.1% 0.89x
PrimsSplit 715 800 +11.9% 0.89x
IterateData 1405 1572 +11.9% 0.89x (?)
SetUnion_OfObjects 5325 5942 +11.6% 0.90x
SetUnionBox0 534 594 +11.2% 0.90x

Code size: -O

TEST OLD NEW DELTA RATIO
Regression
DictTest4.o 25401 27649 +8.9% 0.92x
ErrorHandling.o 2710 2854 +5.3% 0.95x
DictionaryRemove.o 20042 21074 +5.1% 0.95x
DictionarySwap.o 30435 31899 +4.8% 0.95x
DictTest4Legacy.o 26775 27855 +4.0% 0.96x
DictTest2.o 20848 21656 +3.9% 0.96x
OpenClose.o 3857 4001 +3.7% 0.96x
DictTest3.o 29824 30776 +3.2% 0.97x
DictionarySubscriptDefault.o 33196 34212 +3.1% 0.97x
RGBHistogram.o 27234 27962 +2.7% 0.97x
TestsUtils.o 23450 23978 +2.3% 0.98x
AnyHashableWithAClass.o 3604 3676 +2.0% 0.98x
CountAlgo.o 21444 21812 +1.7% 0.98x
SetTests.o 61793 62833 +1.7% 0.98x
WordCount.o 68062 69206 +1.7% 0.98x
Prims.o 43853 44589 +1.7% 0.98x
PrimsSplit.o 43901 44637 +1.7% 0.98x
DictTest.o 52399 53095 +1.3% 0.99x
DictionaryGroup.o 18087 18303 +1.2% 0.99x
StringRemoveDupes.o 16277 16453 +1.1% 0.99x

Performance: -Osize

TEST OLD NEW DELTA RATIO
Regression
SetIsSubsetBox25 234 326 +39.3% 0.72x
SetIntersectionBox0 202 281 +39.1% 0.72x
SetIntersectionBox25 361 458 +26.9% 0.79x
Dictionary4 303 373 +23.1% 0.81x
Dictionary4OfObjects 407 501 +23.1% 0.81x
SetSubtractingBox0 204 250 +22.5% 0.82x
SetSymmetricDifferenceBox25 676 797 +17.9% 0.85x
SetSubtractingBox25 332 374 +12.7% 0.89x
IterateData 1462 1646 +12.6% 0.89x
PrimsSplit 920 1014 +10.2% 0.91x
Prims 921 1014 +10.1% 0.91x
SetUnionBox25 444 481 +8.3% 0.92x

Code size: -Osize

TEST OLD NEW DELTA RATIO
Regression
DictTest4.o 20904 22992 +10.0% 0.91x
DictionarySwap.o 26907 28179 +4.7% 0.95x
DictTest4Legacy.o 23286 24334 +4.5% 0.96x
ErrorHandling.o 3014 3142 +4.2% 0.96x
DictionaryRemove.o 17011 17675 +3.9% 0.96x
StringRemoveDupes.o 9533 9869 +3.5% 0.97x
OpenClose.o 3714 3842 +3.4% 0.97x
CountAlgo.o 14568 15064 +3.4% 0.97x
TestsUtils.o 20258 20818 +2.8% 0.97x
DictionarySubscriptDefault.o 28404 29132 +2.6% 0.98x
RGBHistogram.o 23794 24346 +2.3% 0.98x
WordCount.o 57359 58647 +2.2% 0.98x
Prims.o 38425 39241 +2.1% 0.98x
PrimsSplit.o 38473 39289 +2.1% 0.98x
DictTest2.o 16786 17130 +2.0% 0.98x
SetTests.o 53153 54113 +1.8% 0.98x
DictTest3.o 23506 23866 +1.5% 0.98x
AnyHashableWithAClass.o 3884 3940 +1.4% 0.99x
ReduceInto.o 15256 15464 +1.4% 0.99x
DictionaryGroup.o 16535 16751 +1.3% 0.99x

Performance: -Onone

TEST OLD NEW DELTA RATIO
Regression
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 38146 49091 +28.7% 0.78x
CharIteration_japanese_unicodeScalars_Backwards 260269 307434 +18.1% 0.85x
CharIteration_korean_unicodeScalars_Backwards 210523 248350 +18.0% 0.85x
CharIteration_russian_unicodeScalars_Backwards 180251 212601 +17.9% 0.85x
CharIteration_chinese_unicodeScalars_Backwards 164666 194212 +17.9% 0.85x
CharIteration_tweet_unicodeScalars_Backwards 429051 504372 +17.6% 0.85x
CharIteration_punctuated_unicodeScalars_Backwards 47884 56119 +17.2% 0.85x
CharIteration_utf16_unicodeScalars_Backwards 191276 210772 +10.2% 0.91x
Improvement
ArrayOfPOD 749 672 -10.3% 1.11x

Code size: Swift libraries

TEST OLD NEW DELTA RATIO
Regression
libswiftNetwork.dylib 167936 172032 +2.4% 0.98x
Improvement
libswiftStdlibUnittest.dylib 409600 405504 -1.0% 1.01x
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: Quad-Core Intel Xeon E5
  Processor Speed: 3.7 GHz
  Number of Processors: 1
  Total Number of Cores: 4
  L2 Cache (per Core): 256 KB
  L3 Cache: 10 MB
  Memory: 16 GB

@airspeedswift
Copy link
Member Author

@swift-ci please smoke benchmark

@airspeedswift
Copy link
Member Author

OK let's try again with the full fixed-layout removal.

@swift-ci
Copy link
Contributor

Build comment file:

Performance: -O

TEST OLD NEW DELTA RATIO
Regression
SetIsSubsetBox25 179 329 +83.8% 0.54x
SetIntersectionBox0 149 254 +70.5% 0.59x
SetIntersectionBox25 287 404 +40.8% 0.71x
SetSubtractingBox0 160 218 +36.2% 0.73x
SetIsSubsetBox0 370 498 +34.6% 0.74x
Dictionary4OfObjects 345 463 +34.2% 0.75x
SetSymmetricDifferenceBox25 547 733 +34.0% 0.75x
Dictionary4 279 352 +26.2% 0.79x
SetExclusiveOr_OfObjects 7421 9251 +24.7% 0.80x
SetSymmetricDifferenceBox0 741 918 +23.9% 0.81x
Dictionary3OfObjects 565 686 +21.4% 0.82x
SetSubtractingBox25 282 341 +20.9% 0.83x
DictionarySwapOfObjects 7991 9583 +19.9% 0.83x
SetUnionBox25 371 440 +18.6% 0.84x
PrimsSplit 794 895 +12.7% 0.89x
SetUnion_OfObjects 5861 6605 +12.7% 0.89x
SetUnionBox0 587 661 +12.6% 0.89x
DictionaryRemoveOfObjects 22353 24442 +9.3% 0.91x
Improvement
IterateData 1744 1568 -10.1% 1.11x (?)
CStringLongAscii 3550 3309 -6.8% 1.07x

Code size: -O

TEST OLD NEW DELTA RATIO
Regression
DictTest4.o 25273 27489 +8.8% 0.92x
ErrorHandling.o 2710 2854 +5.3% 0.95x
DictionaryRemove.o 20010 21026 +5.1% 0.95x
DictionarySwap.o 30403 31851 +4.8% 0.95x
DictTest2.o 20672 21496 +4.0% 0.96x
DictTest4Legacy.o 26663 27711 +3.9% 0.96x
OpenClose.o 3857 4001 +3.7% 0.96x
DictTest3.o 29648 30616 +3.3% 0.97x
DictionarySubscriptDefault.o 33196 34212 +3.1% 0.97x
RGBHistogram.o 27170 27898 +2.7% 0.97x
TestsUtils.o 23450 23978 +2.3% 0.98x
AnyHashableWithAClass.o 3604 3676 +2.0% 0.98x
StringRemoveDupes.o 16133 16421 +1.8% 0.98x
CountAlgo.o 21444 21812 +1.7% 0.98x
SetTests.o 61793 62833 +1.7% 0.98x
WordCount.o 68062 69206 +1.7% 0.98x
Prims.o 43837 44573 +1.7% 0.98x
PrimsSplit.o 43885 44621 +1.7% 0.98x
DictTest.o 52239 52951 +1.4% 0.99x
DictionaryGroup.o 18087 18303 +1.2% 0.99x

Performance: -Osize

TEST OLD NEW DELTA RATIO
Regression
SetIsSubsetBox0 422 716 +69.7% 0.59x
SetIsSubsetBox25 254 362 +42.5% 0.70x
SetIntersectionBox0 225 312 +38.7% 0.72x
SetIntersectionBox25 408 513 +25.7% 0.80x
Dictionary4OfObjects 409 508 +24.2% 0.81x
Dictionary4 322 394 +22.4% 0.82x
SetSubtractingBox0 235 284 +20.9% 0.83x
DictionarySwapOfObjects 8762 10228 +16.7% 0.86x
SetSymmetricDifferenceBox25 784 903 +15.2% 0.87x
SetSubtractingBox25 371 419 +12.9% 0.89x
PrimsSplit 1017 1115 +9.6% 0.91x (?)
Prims 1029 1117 +8.6% 0.92x
SetUnionBox25 501 543 +8.4% 0.92x
Improvement
IterateData 1763 1628 -7.7% 1.08x (?)
CStringLongAscii 3540 3293 -7.0% 1.08x
StringWordBuilder 1899 1770 -6.8% 1.07x (?)

Code size: -Osize

TEST OLD NEW DELTA RATIO
Regression
DictTest4.o 20904 23008 +10.1% 0.91x
DictionarySwap.o 26827 28147 +4.9% 0.95x
DictTest4Legacy.o 23270 24350 +4.6% 0.96x
ErrorHandling.o 3014 3142 +4.2% 0.96x
DictionaryRemove.o 16931 17643 +4.2% 0.96x
OpenClose.o 3714 3842 +3.4% 0.97x
CountAlgo.o 14568 15064 +3.4% 0.97x
StringRemoveDupes.o 9501 9805 +3.2% 0.97x
TestsUtils.o 20258 20818 +2.8% 0.97x
DictionarySubscriptDefault.o 28404 29132 +2.6% 0.98x
RGBHistogram.o 23714 24314 +2.5% 0.98x
DictTest2.o 16706 17082 +2.3% 0.98x
WordCount.o 57359 58647 +2.2% 0.98x
Prims.o 38409 39193 +2.0% 0.98x
PrimsSplit.o 38457 39241 +2.0% 0.98x
SetTests.o 53153 54113 +1.8% 0.98x
DictTest3.o 23426 23818 +1.7% 0.98x
AnyHashableWithAClass.o 3884 3940 +1.4% 0.99x
ReduceInto.o 15256 15464 +1.4% 0.99x
DictionaryGroup.o 16535 16751 +1.3% 0.99x

Performance: -Onone

TEST OLD NEW DELTA RATIO
Improvement
DropFirstArrayLazy 34204 31196 -8.8% 1.10x
PrefixArrayLazy 34012 31172 -8.3% 1.09x
CStringLongAscii 3635 3380 -7.0% 1.08x

Code size: Swift libraries

TEST OLD NEW DELTA RATIO
Regression
libswiftNetwork.dylib 167936 172032 +2.4% 0.98x
Improvement
libswiftStdlibUnittest.dylib 409600 405504 -1.0% 1.01x
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

@jrose-apple
Copy link
Contributor

Okay, about the same after all.

lorentey and others added 3 commits September 28, 2018 14:02
The optimizer dislikes nested switch statements; flatten them out to simplify optimization and to hopefully speed things up a little.
@airspeedswift
Copy link
Member Author

@swift-ci please smoke benchmark

@swift-ci
Copy link
Contributor

Build comment file:

Performance: -O

TEST OLD NEW DELTA RATIO
Regression
DictionarySwapAtOfObjects 7315 46672 +538.0% 0.16x
DictionarySwapAt 1040 5263 +406.1% 0.20x
SetIsSubsetBox25 173 309 +78.6% 0.56x
SetIntersectionBox0 146 245 +67.8% 0.60x
SetIsSubsetBox0 337 491 +45.7% 0.69x
SetIntersectionBox25 279 405 +45.2% 0.69x
SetSubtractingBox0 154 215 +39.6% 0.72x
Dictionary4OfObjects 320 440 +37.5% 0.73x
SetSymmetricDifferenceBox25 542 730 +34.7% 0.74x
Dictionary4 251 335 +33.5% 0.75x
SetExclusiveOr_OfObjects 7437 9677 +30.1% 0.77x
SetSymmetricDifferenceBox0 743 959 +29.1% 0.77x
SetSubtractingBox25 268 342 +27.6% 0.78x
Dictionary3OfObjects 531 660 +24.3% 0.80x
SetUnionBox25 380 465 +22.4% 0.82x
DictionarySwapOfObjects 7778 9388 +20.7% 0.83x
SetUnion_OfObjects 6018 7126 +18.4% 0.84x
SetUnionBox0 611 708 +15.9% 0.86x
PrimsSplit 747 841 +12.6% 0.89x
Prims 749 842 +12.4% 0.89x
DictionaryRemoveOfObjects 21558 24155 +12.0% 0.89x

Code size: -O

TEST OLD NEW DELTA RATIO
Regression
DictTest4.o 25817 28145 +9.0% 0.92x
DictionaryCompactMapValues.o 26210 27834 +6.2% 0.94x
ErrorHandling.o 2710 2854 +5.3% 0.95x
DictTest4Legacy.o 27271 28383 +4.1% 0.96x
DictionaryRemove.o 18110 18846 +4.1% 0.96x
OpenClose.o 3857 4001 +3.7% 0.96x
DictTest2.o 21264 21936 +3.2% 0.97x
DictTest3.o 29808 30688 +3.0% 0.97x
TestsUtils.o 24154 24794 +2.6% 0.97x
DictionarySubscriptDefault.o 33756 34604 +2.5% 0.98x
RGBHistogram.o 27517 28189 +2.4% 0.98x
StringRemoveDupes.o 16229 16581 +2.2% 0.98x
AnyHashableWithAClass.o 3604 3676 +2.0% 0.98x
CountAlgo.o 21540 21940 +1.9% 0.98x
WordCount.o 66974 68070 +1.6% 0.98x
Prims.o 44029 44733 +1.6% 0.98x
PrimsSplit.o 44077 44781 +1.6% 0.98x
SetTests.o 61225 62017 +1.3% 0.99x
DictTest.o 52831 53455 +1.2% 0.99x

Performance: -Osize

TEST OLD NEW DELTA RATIO
Regression
DictionarySwapAtOfObjects 7765 47126 +506.9% 0.16x
DictionarySwapAt 1467 5051 +244.3% 0.29x
SetIntersectionBox0 210 300 +42.9% 0.70x
SetIsSubsetBox25 257 361 +40.5% 0.71x
SetIntersectionBox25 409 524 +28.1% 0.78x
Dictionary4OfObjects 390 492 +26.2% 0.79x
SetSubtractingBox0 227 283 +24.7% 0.80x
Dictionary4 305 375 +23.0% 0.81x
SetSymmetricDifferenceBox25 727 864 +18.8% 0.84x
SetExclusiveOr_OfObjects 11598 13617 +17.4% 0.85x
DictionarySwapOfObjects 8383 9742 +16.2% 0.86x
SetSubtractingBox25 358 408 +14.0% 0.88x
DictionaryRemoveOfObjects 24638 27908 +13.3% 0.88x
PrimsSplit 974 1074 +10.3% 0.91x
Prims 979 1071 +9.4% 0.91x
SetUnionBox25 490 535 +9.2% 0.92x
ArrayAppendLatin1Substring 133225 144315 +8.3% 0.92x
Improvement
SetIsSubsetBox0 768 529 -31.1% 1.45x

Code size: -Osize

TEST OLD NEW DELTA RATIO
Regression
DictTest4.o 21240 23328 +9.8% 0.91x
DictionaryRemove.o 15195 16131 +6.2% 0.94x
DictionaryCompactMapValues.o 23594 24722 +4.8% 0.95x
DictTest4Legacy.o 22950 23950 +4.4% 0.96x
ErrorHandling.o 3014 3142 +4.2% 0.96x
CountAlgo.o 14624 15152 +3.6% 0.97x
DictTest2.o 16850 17450 +3.6% 0.97x
DictionarySubscriptDefault.o 28868 29892 +3.5% 0.97x
OpenClose.o 3714 3842 +3.4% 0.97x
StringRemoveDupes.o 9213 9485 +3.0% 0.97x
TestsUtils.o 19346 19778 +2.2% 0.98x
RGBHistogram.o 24077 24597 +2.2% 0.98x
Prims.o 38585 39369 +2.0% 0.98x
PrimsSplit.o 38633 39417 +2.0% 0.98x
DictionaryGroup.o 16503 16831 +2.0% 0.98x
WordCount.o 55487 56583 +2.0% 0.98x
DictTest3.o 23570 23994 +1.8% 0.98x
ReduceInto.o 15400 15640 +1.6% 0.98x
SetTests.o 53137 53937 +1.5% 0.99x
AnyHashableWithAClass.o 3884 3940 +1.4% 0.99x

Performance: -Onone

TEST OLD NEW DELTA RATIO
Regression
DictionarySwapAtOfObjects 16330 93709 +473.8% 0.17x
DictionarySwapAt 3767 17404 +362.0% 0.22x
Improvement
DictionaryKeysContainsCocoa 51 47 -7.8% 1.09x

Code size: Swift libraries

TEST OLD NEW DELTA RATIO
Regression
libswiftNetwork.dylib 167936 172032 +2.4% 0.98x
Improvement
libswiftStdlibUnittest.dylib 409600 405504 -1.0% 1.01x
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: Macmini7,1
  Processor Name: Intel Core i7
  Processor Speed: 3 GHz
  Number of Processors: 1
  Total Number of Cores: 2
  L2 Cache (per Core): 256 KB
  L3 Cache: 4 MB
  Memory: 16 GB

@airspeedswift
Copy link
Member Author

Nope!

@lorentey
Copy link
Member

lorentey commented Oct 3, 2018

I'm having another go at this over at #19685.

  • The tail buffer can be safely inlined.
  • Applying the restructuring in [stdlib] Set, Dictionary: Flatten switch statements #19611, we should try switching Set/Dictionary to use _BridgeStorage rather than enum variants. This should get rid of complications arising from switch statements.
  • If all else fails, I can try reusing a single hasher per operation. The mutable reference to hasher will need to be passed around, so this would be a rather ugly, but it's worth a try.

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