Skip to content
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

[Perf] Regressions in System.Text.Perf_Utf8Encoding for Greek and Cyrillic #52313

Closed
DrewScoggins opened this issue May 5, 2021 · 26 comments
Closed
Assignees
Labels
arch-x64 area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI os-linux Linux OS (any supported distro) os-windows tenet-performance Performance related issue tenet-performance-benchmarks Issue from performance benchmark
Milestone

Comments

@DrewScoggins
Copy link
Member

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 508e56025f66f5c2c00a8f1902816959bb61e0ac
Compare 65bcecebde4aebd5926952ccfc4dc8e7fbf7eaed
Diff Diff

Regressions in System.Text.Perf_Utf8Encoding

Benchmark Baseline Test Test/Base Test Quality Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
GetString - Duration of single invocation 348.09 μs 381.20 μs 1.10 0.00
GetString - Duration of single invocation 223.28 μs 240.51 μs 1.08 0.00
GetBytes - Duration of single invocation 204.86 μs 217.86 μs 1.06 0.01
GetBytes - Duration of single invocation 126.23 μs 139.66 μs 1.11 0.01

graph
graph
graph
graph
Historical Data in Reporting System

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Text.Perf_Utf8Encoding*'

Payloads

Baseline
Compare

Histogram

System.Text.Perf_Utf8Encoding.GetString(Input: Greek)


System.Text.Perf_Utf8Encoding.GetString(Input: Cyrillic)


System.Text.Perf_Utf8Encoding.GetBytes(Input: Greek)


System.Text.Perf_Utf8Encoding.GetBytes(Input: Cyrillic)


Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository

@DrewScoggins DrewScoggins added os-linux Linux OS (any supported distro) os-windows tenet-performance Performance related issue tenet-performance-benchmarks Issue from performance benchmark arch-x64 labels May 5, 2021
@dotnet-issue-labeler dotnet-issue-labeler bot added area-System.Text.Encoding untriaged New issue has not been triaged by the area owner labels May 5, 2021
@ghost
Copy link

ghost commented May 5, 2021

Tagging subscribers to this area: @tarekgh, @krwq, @eiriktsarpalis, @layomia
See info in area-owners.md if you want to be subscribed.

Issue Details

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 508e56025f66f5c2c00a8f1902816959bb61e0ac
Compare 65bcecebde4aebd5926952ccfc4dc8e7fbf7eaed
Diff Diff

Regressions in System.Text.Perf_Utf8Encoding

Benchmark Baseline Test Test/Base Test Quality Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
GetString - Duration of single invocation 348.09 μs 381.20 μs 1.10 0.00
GetString - Duration of single invocation 223.28 μs 240.51 μs 1.08 0.00
GetBytes - Duration of single invocation 204.86 μs 217.86 μs 1.06 0.01
GetBytes - Duration of single invocation 126.23 μs 139.66 μs 1.11 0.01

graph
graph
graph
graph
Historical Data in Reporting System

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Text.Perf_Utf8Encoding*'

Payloads

Baseline
Compare

Histogram

System.Text.Perf_Utf8Encoding.GetString(Input: Greek)


System.Text.Perf_Utf8Encoding.GetString(Input: Cyrillic)


System.Text.Perf_Utf8Encoding.GetBytes(Input: Greek)


System.Text.Perf_Utf8Encoding.GetBytes(Input: Cyrillic)


Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository

Author: DrewScoggins
Assignees: -
Labels:

arch-x64, area-System.Text.Encoding, os-linux, os-windows, tenet-performance, tenet-performance-benchmarks, untriaged

Milestone: -

@alexcovington
Copy link
Contributor

From @L2:

Regarding System.Text.Perf_Utf8Encoding.GetBytes(Input: Cyrillic)
The regression seems to happen from this commit:
JIT: revise inlinee scale computations #51593
Commit: a4b0a03
PR: #51593
It largely affects this method's assembly (code blocks are moved around):
System.Text.Unicode.Utf8Utility.TranscodeToUtf8(Char*, Int32, Byte*, Int32, Char* ByRef, Byte* ByRef)
Source: https://github.com/dotnet/runtime/blob/main/src/libraries/System.Private.CoreLib/src/System/Text/Unicode/Utf8Utility.Transcoding.cs#L842
The assemblies for this method are identical in Checked Mode but different in Release Mode. Trying to perform a jitdump using Release Mode crashes the jitdump.
(Building in Release and Checked -> copying over the Checked crljit.dll into Release -> using Release with env var COMPlus_JitDump:TranscodeToUtf8
On the same note, I've also experienced the Debug Mode jitdump crash for this particular method at this commit (multiple assert failures).

@eiriktsarpalis
Copy link
Member

cc @AndyAyersMS

@danmoseley danmoseley added area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI and removed area-System.Text.Encoding labels Jul 21, 2021
@danmoseley
Copy link
Member

Thanks @alexcovington

@JulieLeeMSFT JulieLeeMSFT added needs-further-triage Issue has been initially triaged, but needs deeper consideration or reconsideration and removed untriaged New issue has not been triaged by the area owner labels Jul 21, 2021
@JulieLeeMSFT JulieLeeMSFT added this to the 6.0.0 milestone Jul 21, 2021
@AndyAyersMS
Copy link
Member

Looking a bit wider at the history for the first GetString test

newplot (63)

The regression noted in this issue is the jump on 20-Apr. Subsequently we have made improvements and the net over the entire 6.0 cycle is about 2% regression over 5.0.

however for the GetBytes variant we see a bigger net regression, around 7%:

newplot (62)

So let's take a closer look at this second test.

@AndyAyersMS
Copy link
Member

5.0 vs 6.0rc1 preview:

Method Runtime Input Mean Ratio
GetString .NET 5.0 EnglishAllAscii 29.94 us 1.00
GetString .NET 6.0 EnglishAllAscii 30.24 us 1.01
GetString .NET 5.0 EnglishMostlyAscii 153.37 us 1.00
GetString .NET 6.0 EnglishMostlyAscii 167.57 us 1.09
GetString .NET 5.0 Chinese 220.73 us 1.00
GetString .NET 6.0 Chinese 213.97 us 0.97
GetString .NET 5.0 Cyrillic 181.73 us 1.00
GetString .NET 6.0 Cyrillic 201.88 us 1.11
GetString .NET 5.0 Greek 289.07 us 1.00
GetString .NET 6.0 Greek 307.62 us 1.07

@AndyAyersMS
Copy link
Member

Also oddly full PGO doesn't help here... in fact it's a bit slower overall.

newplot (65)

@AndyAyersMS
Copy link
Member

AndyAyersMS commented Aug 16, 2021

As noted above the jit crashes trying to dump TranscodeToUtf8 in morph -- looks like there's a HW intrinsic node with uninitialized aux type field:

               [000274] -A----------              *  ASG       simd16 (copy)
               [000272] D------N----              +--*  LCL_VAR   simd16<System.Runtime.Intrinsics.Vector128`1[Int16]> V07 loc1         
               [000271] ------------              \--*  HWINTRINSIC simd16 short Create
               [000270] ------------                 \--*  CNS_INT   int    -128

and we die computing the node hash during morph:

Assert failure(PID 9932 [0x000026cc], Thread: 14472 [0x3888]): Assertion failed 'type < CORINFO_TYPE_COUNT' in 'System.Text.Unicode.Utf8Utility:TranscodeToUtf8(long,int,long,int,byref,byref):int' during 'Morph - Global' (IL size 1625)

    File: C:\repos\runtime2\src\coreclr\jit\ee_il_dll.hpp Line: 273
    Image: c:\repos\runtime2\artifacts\tests\coreclr\windows.x64.checked\tests\core_root\corerun.exe

This may be fixed in more recent builds, will have to check.

Yes, seems like it was fixed right after these changes, at #51627.

@AndyAyersMS
Copy link
Member

Cause of the layout diffs is that some blocks are now (properly) weighted at zero:

;;; before

BB116 [0125]  1                           100             [32B..32C)-> BB119 ( cond )                     i bwd 
BB117 [0126]  1                           100             [32B..32C)                                      i bwd 
BB118 [0127]  2                           100             [32B..32C)-> BB120 (always)                     i bwd 
BB119 [0128]  1                           100             [32B..32C)                                      i bwd 

;;; after

BB116 [0125]  1                             0             [32B..32C)-> BB119 ( cond )                     i rare bwd 
BB117 [0126]  1                             0             [32B..32C)                                      i rare bwd 
BB118 [0127]  2                             0             [32B..32C)-> BB120 (always)                     i rare bwd 
BB119 [0128]  1                             0             [32B..32C)                                      i rare bwd 

and so likely we reorder code in a way that negatively impacts Greek/Cyrillic as we never saw any static PGO runs that hit those code blocks.

A possible fix here would be to update our MPGO collections to include some runs done in other locales.

@davidwrighton does that seem worth trying at this stage in the release?

@davidwrighton
Copy link
Member

I have no objection to adding an internationalization scenario, but @Lxiamail is the expert in that space. Technically we are basically in position to do this, its just a bit of work. Please provide a priority here.

@AndyAyersMS
Copy link
Member

Area owners @tarekgh, @krwq, @eiriktsarpalis, @layomia can you provide some guidance? We have two options:

  • live with the above regressions for .NET 6. I am not aware of any other cases like these where we're worse off then .NET 5.
  • try adjusting the PGO training scenarios to cover some of those cases. Will likely improve the regressed cases above, but may have other effects that are not easy to predict in advance (eg may regress default locale perf from where it is now).

Longer term I think we should definitely add the coverage, the question is whether we should try doing it now.

@tarekgh
Copy link
Member

tarekgh commented Aug 17, 2021

CC @GrabYourPitchforks

Does the regression is scoped to the Greek and Cyrillic cases only? From @AndyAyersMS comment #52313 (comment) it looks we have a regression with the ASCII cases too in the scenario EnglishMostlyAscii.
I would say:

  • If the ASCII cases somehow affected by this regression, then this is a priority and would be good to be addressed now as this used in most common scenarios.
  • If the issue scoped to a couple of scripts here, then I think can wait next release considering the risk that @AndyAyersMS mentioned in his comment.
  • If the issue spanning many scripts, I would say at least we should try to do something now.

@tarekgh
Copy link
Member

tarekgh commented Aug 17, 2021

By the way, I am not the area owner, I am just expressing my opinion. area owners can still advise as needed.

@GrabYourPitchforks
Copy link
Member

As a stopgap, is it worth considering suppressing profile-guided optimization of just this one family of methods? We'd still want all other JIT optimizations to kick in, just not PGO.

@AndyAyersMS
Copy link
Member

s it worth considering suppressing profile-guided optimization of just this one family of methods

There is currently no way to do that, unfortunately.

@GrabYourPitchforks
Copy link
Member

Should we repurpose this tracking issue to cover adding the necessary non-ASCII tests for generating PGO data?

One interesting aspect of the transcoding logic is that it's written with the understanding that its blocks won't be reordered. That is, the blocks within the method are already in an order which should give optimal throughput across multiple languages. Hence my question about suppressing PGO for this one family of methods.

@AndyAyersMS
Copy link
Member

Should we repurpose this tracking issue to cover adding the necessary non-ASCII tests for generating PGO data

Seems prudent. We may also have to work to do to ensure that our PGO merging does reasonable things here.

that it's written with the understanding that its blocks won't be reordered.

There's never been any such guarantee made by the jit when optimizing; it reorders blocks as it deems best, and may duplicate blocks in places if it thinks such duplication will be helpful. It may be that the current jit tends not to reorder code much from IL order, but that will be less and less true as time goes on.

In .NET 7 we'll likely add a blended synthetic profile to the static PGO data so we're a bit less dependent on PGO training covering all the key scenarios. But that is a ways off.

@GrabYourPitchforks
Copy link
Member

It may be that the current jit tends not to reorder code much from IL order, but that will be less and less true as time goes on.

Oh, definitely. :)

I didn't intend to hold this up as an example of good practice. Just that it's another case where we do somewhat "fun" things in corelib because it ships alongside the JIT and manual inspection of the (corelib, JIT) combo [at least when this code was written] showed optimal codegen.

@GrabYourPitchforks
Copy link
Member

We may also have to work to do to ensure that our PGO merging does reasonable things here.

How about this - I'll leave the current issue to track whatever JIT changes you think might be appropriate here, and I opened #57698 to track the specific action of feeding a new corpus into PGO. Sound good?

@AndyAyersMS
Copy link
Member

Sound good?

Sure.

We should update the PGO collection process for main and keep an eye on the perf impact there (takes a few days to know for sure). If we're happy with the results, we can make the case to back port this to .NET 6 and/or try and surgically update the MIBC somehow.

@JulieLeeMSFT JulieLeeMSFT modified the milestones: 6.0.0, 7.0.0 Sep 2, 2021
@JulieLeeMSFT
Copy link
Member

Changing to .NET 7 to revisit after #57698.

@GSPP
Copy link

GSPP commented Nov 8, 2021

Would branching hints (RyuJIT: Allow developers to provide Branch Prediction Information) be a solution for this? That could be a long-term strategy to stabilize benchmarks.

@AndyAyersMS
Copy link
Member

@EgorBo another case I hope improves with some non EN-US PGO data.

@EgorBo
Copy link
Member

EgorBo commented Jul 12, 2022

Don't they look fine on the global picture? e.g.
image

@JulieLeeMSFT JulieLeeMSFT removed the needs-further-triage Issue has been initially triaged, but needs deeper consideration or reconsideration label Aug 1, 2022
@AndyAyersMS
Copy link
Member

If you look back further, you will see we are regressed vs 5.0 in many cases. Hopefully the PGO updates that are coming will address most of these.

BenchmarkDotNet=v0.13.1.1786-nightly, OS=Windows 11 (10.0.22000.795/21H2)
Intel Core i7-8700 CPU 3.20GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical cores
.NET SDK=7.0.100-rc.1.22374.1
[Host] : .NET 7.0.0 (7.0.22.36704), X64 RyuJIT
Job-YGVZQW : .NET 5.0.17 (5.0.1722.21314), X64 RyuJIT
Job-PLWJPL : .NET 6.0.7 (6.0.722.32202), X64 RyuJIT
Job-VXYKMP : .NET 7.0.0 (7.0.22.36704), X64 RyuJIT

PowerPlanMode=00000000-0000-0000-0000-000000000000 IterationTime=250.0000 ms MaxIterationCount=20
MinIterationCount=15 WarmupCount=1

Method Job Runtime Toolchain Input Mean Error StdDev Median Min Max Ratio RatioSD Gen 0 Gen 1 Gen 2 Allocated Alloc Ratio
GetByteCount Job-YGVZQW .NET 5.0 net5.0 EnglishAllAscii 8.131 us 0.1615 us 0.1510 us 8.152 us 7.910 us 8.401 us 1.00 0.00 - - - - NA
GetByteCount Job-PLWJPL .NET 6.0 net6.0 EnglishAllAscii 7.428 us 0.1454 us 0.1617 us 7.393 us 7.225 us 7.723 us 0.92 0.03 - - - - NA
GetByteCount Job-VXYKMP .NET 7.0 net7.0 EnglishAllAscii 7.967 us 0.0885 us 0.0827 us 7.944 us 7.839 us 8.124 us 0.98 0.02 - - - - NA
GetBytes Job-YGVZQW .NET 5.0 net5.0 EnglishAllAscii 26.768 us 0.6435 us 0.7410 us 26.590 us 25.936 us 28.172 us 1.00 0.00 52.5519 52.5519 52.5519 167576 B 1.00
GetBytes Job-PLWJPL .NET 6.0 net6.0 EnglishAllAscii 25.908 us 0.3673 us 0.3256 us 25.981 us 25.144 us 26.316 us 0.96 0.03 52.5288 52.5288 52.5288 167594 B 1.00
GetBytes Job-VXYKMP .NET 7.0 net7.0 EnglishAllAscii 26.136 us 0.3911 us 0.3658 us 26.031 us 25.475 us 26.760 us 0.97 0.04 52.5332 52.5332 52.5332 167594 B 1.00
GetString Job-YGVZQW .NET 5.0 net5.0 EnglishAllAscii 30.547 us 0.4327 us 0.3613 us 30.538 us 29.996 us 31.247 us 1.00 0.00 99.9071 99.9071 99.9071 335120 B 1.00
GetString Job-PLWJPL .NET 6.0 net6.0 EnglishAllAscii 30.700 us 0.5937 us 0.6097 us 30.485 us 29.916 us 32.005 us 1.01 0.02 99.9300 99.9300 99.9300 335154 B 1.00
GetString Job-VXYKMP .NET 7.0 net7.0 EnglishAllAscii 30.722 us 0.4543 us 0.4028 us 30.691 us 30.068 us 31.585 us 1.01 0.02 99.8810 99.8810 99.8810 335154 B 1.00
GetByteCount Job-YGVZQW .NET 5.0 net5.0 EnglishMostlyAscii 23.043 us 0.3278 us 0.2737 us 23.003 us 22.669 us 23.471 us 1.00 0.00 - - - - NA
GetByteCount Job-PLWJPL .NET 6.0 net6.0 EnglishMostlyAscii 19.753 us 0.3882 us 0.3813 us 19.742 us 19.138 us 20.420 us 0.86 0.02 - - - - NA
GetByteCount Job-VXYKMP .NET 7.0 net7.0 EnglishMostlyAscii 24.421 us 0.3524 us 0.3296 us 24.443 us 23.544 us 24.822 us 1.06 0.02 - - - - NA
GetBytes Job-YGVZQW .NET 5.0 net5.0 EnglishMostlyAscii 108.521 us 2.0233 us 1.9872 us 108.232 us 105.758 us 112.442 us 1.00 0.00 52.5000 52.5000 52.5000 173616 B 1.00
GetBytes Job-PLWJPL .NET 6.0 net6.0 EnglishMostlyAscii 106.756 us 1.5509 us 1.3749 us 106.766 us 105.089 us 109.651 us 0.98 0.02 52.5000 52.5000 52.5000 173634 B 1.00
GetBytes Job-VXYKMP .NET 7.0 net7.0 EnglishMostlyAscii 105.718 us 0.5815 us 0.4856 us 105.862 us 104.831 us 106.317 us 0.97 0.02 52.4329 52.4329 52.4329 173634 B 1.00
GetString Job-YGVZQW .NET 5.0 net5.0 EnglishMostlyAscii 151.017 us 1.7265 us 1.5305 us 150.592 us 149.107 us 154.687 us 1.00 0.00 88.0952 88.0952 88.0952 335126 B 1.00
GetString Job-PLWJPL .NET 6.0 net6.0 EnglishMostlyAscii 171.322 us 0.8257 us 0.6895 us 171.277 us 169.825 us 172.191 us 1.13 0.01 88.5989 88.5989 88.5989 335156 B 1.00
GetString Job-VXYKMP .NET 7.0 net7.0 EnglishMostlyAscii 184.085 us 1.0848 us 1.0147 us 184.209 us 181.636 us 185.781 us 1.22 0.01 88.6628 88.6628 88.6628 335156 B 1.00
GetByteCount Job-YGVZQW .NET 5.0 net5.0 Chinese 10.291 us 0.1921 us 0.2056 us 10.284 us 9.980 us 10.830 us 1.00 0.00 - - - - NA
GetByteCount Job-PLWJPL .NET 6.0 net6.0 Chinese 8.782 us 0.1875 us 0.2159 us 8.723 us 8.404 us 9.253 us 0.86 0.03 - - - - NA
GetByteCount Job-VXYKMP .NET 7.0 net7.0 Chinese 11.229 us 0.0927 us 0.0867 us 11.225 us 11.063 us 11.383 us 1.09 0.02 - - - - NA
GetBytes Job-YGVZQW .NET 5.0 net5.0 Chinese 103.610 us 1.7619 us 1.6480 us 103.557 us 101.165 us 106.780 us 1.00 0.00 55.1948 55.1948 55.1948 180680 B 1.00
GetBytes Job-PLWJPL .NET 6.0 net6.0 Chinese 128.075 us 1.6520 us 1.5453 us 127.770 us 125.600 us 131.174 us 1.24 0.03 55.3862 55.3862 55.3862 180699 B 1.00
GetBytes Job-VXYKMP .NET 7.0 net7.0 Chinese 119.261 us 0.7929 us 0.7029 us 119.177 us 118.300 us 120.890 us 1.15 0.02 55.4511 55.4511 55.4511 180699 B 1.00
GetString Job-YGVZQW .NET 5.0 net5.0 Chinese 213.442 us 2.2415 us 2.0967 us 213.615 us 210.108 us 218.188 us 1.00 0.00 47.5000 47.5000 47.5000 155960 B 1.00
GetString Job-PLWJPL .NET 6.0 net6.0 Chinese 221.371 us 1.9883 us 1.8598 us 221.490 us 218.707 us 224.223 us 1.04 0.01 47.5352 47.5352 47.5352 155976 B 1.00
GetString Job-VXYKMP .NET 7.0 net7.0 Chinese 247.002 us 1.3755 us 1.2193 us 246.998 us 244.987 us 249.531 us 1.16 0.01 47.3485 47.3485 47.3485 155976 B 1.00
GetByteCount Job-YGVZQW .NET 5.0 net5.0 Cyrillic 8.397 us 0.1404 us 0.1245 us 8.405 us 8.255 us 8.649 us 1.00 0.00 - - - - NA
GetByteCount Job-PLWJPL .NET 6.0 net6.0 Cyrillic 6.868 us 0.1392 us 0.1603 us 6.840 us 6.628 us 7.187 us 0.82 0.02 - - - - NA
GetByteCount Job-VXYKMP .NET 7.0 net7.0 Cyrillic 9.599 us 0.0720 us 0.0674 us 9.579 us 9.465 us 9.715 us 1.14 0.02 - - - - NA
GetBytes Job-YGVZQW .NET 5.0 net5.0 Cyrillic 101.997 us 1.3748 us 1.2860 us 101.872 us 99.850 us 104.207 us 1.00 0.00 31.8627 31.8627 31.8627 102272 B 1.00
GetBytes Job-PLWJPL .NET 6.0 net6.0 Cyrillic 121.360 us 0.8819 us 0.8250 us 121.341 us 120.073 us 122.658 us 1.19 0.02 32.2115 32.2115 32.2115 102283 B 1.00
GetBytes Job-VXYKMP .NET 7.0 net7.0 Cyrillic 117.930 us 2.0740 us 1.9400 us 117.420 us 115.679 us 122.242 us 1.16 0.02 32.1691 32.1691 32.1691 102283 B 1.00
GetString Job-YGVZQW .NET 5.0 net5.0 Cyrillic 183.475 us 2.0407 us 1.9089 us 184.027 us 180.516 us 186.634 us 1.00 0.00 41.1765 41.1765 41.1765 133640 B 1.00
GetString Job-PLWJPL .NET 6.0 net6.0 Cyrillic 192.954 us 2.3513 us 2.1994 us 192.786 us 189.443 us 197.296 us 1.05 0.02 41.1585 41.1585 41.1585 133654 B 1.00
GetString Job-VXYKMP .NET 7.0 net7.0 Cyrillic 192.009 us 1.7094 us 1.5990 us 191.765 us 189.652 us 194.730 us 1.05 0.01 41.4157 41.4157 41.4157 133654 B 1.00
GetByteCount Job-YGVZQW .NET 5.0 net5.0 Greek 11.327 us 0.2093 us 0.2056 us 11.309 us 11.049 us 11.807 us 1.00 0.00 - - - - NA
GetByteCount Job-PLWJPL .NET 6.0 net6.0 Greek 9.511 us 0.1716 us 0.1522 us 9.502 us 9.221 us 9.761 us 0.84 0.02 - - - - NA
GetByteCount Job-VXYKMP .NET 7.0 net7.0 Greek 12.124 us 0.0550 us 0.0459 us 12.123 us 12.011 us 12.195 us 1.07 0.02 - - - - NA
GetBytes Job-YGVZQW .NET 5.0 net5.0 Greek 166.313 us 1.4803 us 1.3847 us 166.133 us 163.969 us 168.234 us 1.00 0.00 41.4474 41.4474 41.4474 131792 B 1.00
GetBytes Job-PLWJPL .NET 6.0 net6.0 Greek 186.328 us 1.4658 us 1.3711 us 186.143 us 184.549 us 188.837 us 1.12 0.01 41.1765 41.1765 41.1765 131806 B 1.00
GetBytes Job-VXYKMP .NET 7.0 net7.0 Greek 179.646 us 1.0993 us 0.9745 us 179.852 us 177.548 us 181.475 us 1.08 0.01 40.9483 40.9483 40.9483 131806 B 1.00
GetString Job-YGVZQW .NET 5.0 net5.0 Greek 292.855 us 2.0650 us 1.9316 us 292.821 us 288.179 us 296.838 us 1.00 0.00 52.0833 52.0833 52.0833 169352 B 1.00
GetString Job-PLWJPL .NET 6.0 net6.0 Greek 303.743 us 2.4884 us 2.3276 us 304.041 us 299.532 us 307.790 us 1.04 0.01 51.8868 51.8868 51.8868 169370 B 1.00
GetString Job-VXYKMP .NET 7.0 net7.0 Greek 299.880 us 3.2602 us 3.0496 us 300.174 us 294.760 us 307.060 us 1.02 0.01 51.6827 51.6827 51.6827 169370 B 1.00

@AndyAyersMS AndyAyersMS modified the milestones: 7.0.0, 8.0.0 Aug 11, 2022
@EgorBo
Copy link
Member

EgorBo commented Aug 23, 2022

#73973 updated PGO data that includes adhoc scenarios for Encoding to train on non-latin data, as the result:

image

image

@EgorBo EgorBo closed this as completed Aug 23, 2022
@ghost ghost locked as resolved and limited conversation to collaborators Sep 22, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
arch-x64 area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI os-linux Linux OS (any supported distro) os-windows tenet-performance Performance related issue tenet-performance-benchmarks Issue from performance benchmark
Projects
None yet
Development

No branches or pull requests