This tests the performance of MemoryExtensions.ToUpperInvariant(this ReadOnlySpan<char>, Span<char>)
, String.GetHashCode()
, and String.GetHashCode(StringComparison.OrdinalIgnoreCase)
.
In below table:
- baseline coreclr = 3.0.0-preview1-26808-05
- local build (6) = local build from private dev Utf8String branch, 6th rev.
- local build (7) = local build from private dev Utf8String branch, 7th rev.
Method | Toolchain | StringLength | Mean | Error | StdDev | Scaled | ScaledSD |
---|---|---|---|---|---|---|---|
ToUpperInvariant | baseline coreclr | 0 | 27.112 ns | 0.7416 ns | 1.1763 ns | 1.00 | 0.00 |
ToUpperInvariant | local build (6) | 0 | 28.529 ns | 0.2706 ns | 0.2398 ns | 1.05 | 0.04 |
ToUpperInvariant | local build (7) | 0 | 28.066 ns | 0.1443 ns | 0.1350 ns | 1.04 | 0.04 |
GetHashCode_Ordinal | baseline coreclr | 0 | 4.313 ns | 0.0296 ns | 0.0231 ns | 1.00 | 0.00 |
GetHashCode_Ordinal | local build (6) | 0 | 5.244 ns | 0.0579 ns | 0.0484 ns | 1.22 | 0.01 |
GetHashCode_Ordinal | local build (7) | 0 | 3.086 ns | 0.0237 ns | 0.0210 ns | 0.72 | 0.01 |
GetHashCode_OrdinalIgnoreCase | baseline coreclr | 0 | 18.678 ns | 0.1951 ns | 0.1825 ns | 1.00 | 0.00 |
GetHashCode_OrdinalIgnoreCase | local build (6) | 0 | 20.105 ns | 0.1053 ns | 0.0934 ns | 1.08 | 0.01 |
GetHashCode_OrdinalIgnoreCase | local build (7) | 0 | 8.921 ns | 0.1123 ns | 0.0995 ns | 0.48 | 0.01 |
ToUpperInvariant | baseline coreclr | 4 | 35.407 ns | 0.6994 ns | 0.7484 ns | 1.00 | 0.00 |
ToUpperInvariant | local build (6) | 4 | 28.775 ns | 0.3312 ns | 0.3099 ns | 0.81 | 0.02 |
ToUpperInvariant | local build (7) | 4 | 31.174 ns | 0.4099 ns | 0.3835 ns | 0.88 | 0.02 |
GetHashCode_Ordinal | baseline coreclr | 4 | 6.026 ns | 0.1500 ns | 0.1541 ns | 1.00 | 0.00 |
GetHashCode_Ordinal | local build (6) | 4 | 6.093 ns | 0.0498 ns | 0.0441 ns | 1.01 | 0.03 |
GetHashCode_Ordinal | local build (7) | 4 | 4.931 ns | 0.0534 ns | 0.0500 ns | 0.82 | 0.02 |
GetHashCode_OrdinalIgnoreCase | baseline coreclr | 4 | 49.758 ns | 1.0321 ns | 0.9654 ns | 1.00 | 0.00 |
GetHashCode_OrdinalIgnoreCase | local build (6) | 4 | 43.354 ns | 0.2082 ns | 0.1948 ns | 0.87 | 0.02 |
GetHashCode_OrdinalIgnoreCase | local build (7) | 4 | 16.042 ns | 0.1153 ns | 0.1079 ns | 0.32 | 0.01 |
ToUpperInvariant | baseline coreclr | 5 | 35.801 ns | 0.2261 ns | 0.2115 ns | 1.00 | 0.00 |
ToUpperInvariant | local build (6) | 5 | 28.751 ns | 0.4291 ns | 0.4014 ns | 0.80 | 0.01 |
ToUpperInvariant | local build (7) | 5 | 34.639 ns | 0.8401 ns | 1.0001 ns | 0.97 | 0.03 |
GetHashCode_Ordinal | baseline coreclr | 5 | 6.201 ns | 0.1417 ns | 0.1326 ns | 1.00 | 0.00 |
GetHashCode_Ordinal | local build (6) | 5 | 6.153 ns | 0.0499 ns | 0.0417 ns | 0.99 | 0.02 |
GetHashCode_Ordinal | local build (7) | 5 | 5.493 ns | 0.1443 ns | 0.2711 ns | 0.89 | 0.05 |
GetHashCode_OrdinalIgnoreCase | baseline coreclr | 5 | 49.420 ns | 0.4589 ns | 0.4292 ns | 1.00 | 0.00 |
GetHashCode_OrdinalIgnoreCase | local build (6) | 5 | 45.264 ns | 0.5892 ns | 0.5512 ns | 0.92 | 0.01 |
GetHashCode_OrdinalIgnoreCase | local build (7) | 5 | 16.310 ns | 0.3465 ns | 0.3241 ns | 0.33 | 0.01 |
ToUpperInvariant | baseline coreclr | 6 | 37.879 ns | 0.7674 ns | 0.7179 ns | 1.00 | 0.00 |
ToUpperInvariant | local build (6) | 6 | 28.755 ns | 0.2657 ns | 0.2485 ns | 0.76 | 0.02 |
ToUpperInvariant | local build (7) | 6 | 32.251 ns | 0.3301 ns | 0.3088 ns | 0.85 | 0.02 |
GetHashCode_Ordinal | baseline coreclr | 6 | 6.931 ns | 0.0897 ns | 0.0839 ns | 1.00 | 0.00 |
GetHashCode_Ordinal | local build (6) | 6 | 6.908 ns | 0.0403 ns | 0.0337 ns | 1.00 | 0.01 |
GetHashCode_Ordinal | local build (7) | 6 | 7.500 ns | 0.1145 ns | 0.1071 ns | 1.08 | 0.02 |
GetHashCode_OrdinalIgnoreCase | baseline coreclr | 6 | 48.922 ns | 0.4234 ns | 0.3960 ns | 1.00 | 0.00 |
GetHashCode_OrdinalIgnoreCase | local build (6) | 6 | 44.963 ns | 0.3350 ns | 0.2970 ns | 0.92 | 0.01 |
GetHashCode_OrdinalIgnoreCase | local build (7) | 6 | 16.465 ns | 0.1662 ns | 0.1555 ns | 0.34 | 0.00 |
ToUpperInvariant | baseline coreclr | 8 | 38.584 ns | 0.6842 ns | 0.6400 ns | 1.00 | 0.00 |
ToUpperInvariant | local build (6) | 8 | 30.847 ns | 0.1948 ns | 0.1822 ns | 0.80 | 0.01 |
ToUpperInvariant | local build (7) | 8 | 35.489 ns | 0.4056 ns | 0.3596 ns | 0.92 | 0.02 |
GetHashCode_Ordinal | baseline coreclr | 8 | 8.524 ns | 0.1923 ns | 0.1799 ns | 1.00 | 0.00 |
GetHashCode_Ordinal | local build (6) | 8 | 8.491 ns | 0.0996 ns | 0.0883 ns | 1.00 | 0.02 |
GetHashCode_Ordinal | local build (7) | 8 | 8.355 ns | 0.1871 ns | 0.1750 ns | 0.98 | 0.03 |
GetHashCode_OrdinalIgnoreCase | baseline coreclr | 8 | 52.789 ns | 0.2734 ns | 0.2283 ns | 1.00 | 0.00 |
GetHashCode_OrdinalIgnoreCase | local build (6) | 8 | 48.555 ns | 0.3863 ns | 0.3425 ns | 0.92 | 0.01 |
GetHashCode_OrdinalIgnoreCase | local build (7) | 8 | 18.977 ns | 0.4012 ns | 0.4460 ns | 0.36 | 0.01 |
ToUpperInvariant | baseline coreclr | 12 | 44.065 ns | 0.9062 ns | 0.8476 ns | 1.00 | 0.00 |
ToUpperInvariant | local build (6) | 12 | 31.734 ns | 0.2659 ns | 0.2357 ns | 0.72 | 0.01 |
ToUpperInvariant | local build (7) | 12 | 36.682 ns | 0.2457 ns | 0.2298 ns | 0.83 | 0.02 |
GetHashCode_Ordinal | baseline coreclr | 12 | 11.074 ns | 0.1309 ns | 0.1225 ns | 1.00 | 0.00 |
GetHashCode_Ordinal | local build (6) | 12 | 11.229 ns | 0.0532 ns | 0.0498 ns | 1.01 | 0.01 |
GetHashCode_Ordinal | local build (7) | 12 | 10.760 ns | 0.0810 ns | 0.0676 ns | 0.97 | 0.01 |
GetHashCode_OrdinalIgnoreCase | baseline coreclr | 12 | 58.343 ns | 0.7073 ns | 0.6270 ns | 1.00 | 0.00 |
GetHashCode_OrdinalIgnoreCase | local build (6) | 12 | 54.238 ns | 1.1591 ns | 1.4234 ns | 0.93 | 0.03 |
GetHashCode_OrdinalIgnoreCase | local build (7) | 12 | 21.889 ns | 0.1729 ns | 0.1617 ns | 0.38 | 0.00 |
ToUpperInvariant | baseline coreclr | 100 | 136.112 ns | 2.2649 ns | 3.7213 ns | 1.00 | 0.00 |
ToUpperInvariant | local build (6) | 100 | 64.421 ns | 0.2800 ns | 0.2619 ns | 0.47 | 0.01 |
ToUpperInvariant | local build (7) | 100 | 77.626 ns | 1.7653 ns | 3.5660 ns | 0.57 | 0.03 |
GetHashCode_Ordinal | baseline coreclr | 100 | 84.672 ns | 0.9272 ns | 0.7743 ns | 1.00 | 0.00 |
GetHashCode_Ordinal | local build (6) | 100 | 84.974 ns | 0.3928 ns | 0.3674 ns | 1.00 | 0.01 |
GetHashCode_Ordinal | local build (7) | 100 | 82.864 ns | 0.6180 ns | 0.5781 ns | 0.98 | 0.01 |
GetHashCode_OrdinalIgnoreCase | baseline coreclr | 100 | 235.276 ns | 4.6731 ns | 7.6781 ns | 1.00 | 0.00 |
GetHashCode_OrdinalIgnoreCase | local build (6) | 100 | 159.288 ns | 1.8972 ns | 1.6818 ns | 0.68 | 0.02 |
GetHashCode_OrdinalIgnoreCase | local build (7) | 100 | 98.823 ns | 0.7694 ns | 0.7197 ns | 0.42 | 0.01 |
ToUpperInvariant | baseline coreclr | 1000 | 1,054.925 ns | 20.6730 ns | 19.3376 ns | 1.00 | 0.00 |
ToUpperInvariant | local build (6) | 1000 | 398.685 ns | 2.0002 ns | 1.6702 ns | 0.38 | 0.01 |
ToUpperInvariant | local build (7) | 1000 | 409.100 ns | 7.1746 ns | 6.7111 ns | 0.39 | 0.01 |
GetHashCode_Ordinal | baseline coreclr | 1000 | 821.523 ns | 4.1718 ns | 3.6982 ns | 1.00 | 0.00 |
GetHashCode_Ordinal | local build (6) | 1000 | 837.539 ns | 4.1703 ns | 3.9009 ns | 1.02 | 0.01 |
GetHashCode_Ordinal | local build (7) | 1000 | 831.497 ns | 4.3487 ns | 3.8550 ns | 1.01 | 0.01 |
GetHashCode_OrdinalIgnoreCase | baseline coreclr | 1000 | 1,911.866 ns | 11.5271 ns | 10.7824 ns | 1.00 | 0.00 |
GetHashCode_OrdinalIgnoreCase | local build (6) | 1000 | 1,308.217 ns | 21.4140 ns | 18.9830 ns | 0.68 | 0.01 |
GetHashCode_OrdinalIgnoreCase | local build (7) | 1000 | 897.387 ns | 16.9168 ns | 16.6146 ns | 0.47 | 0.01 |