-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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] Linux/x64: System.Text.Tests Regressions on 11/27/2024 1:41:48 AM #110413
Comments
Due to #104488, FYI @tannergooding. Change seems purposeful, maybe this is acceptable? Commit range: d58ffd1...cf7a744 Related Regressions: |
Assigned to @PranavSenthilnathan for triage. |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Judging by the ADX, the regression reproduces on multiple Intel CPUs, but not AMDs. Let me kick in the benchmark again on some intels |
@PranavSenthilnathan are you actually sure the regression comes from that commit specifically? |
Looks like it was, only seems to be an issue when AVX-512 is not enabled/available. |
@EgorBot -intel -profiler -commit cf7a744 vs previous --envvars DOTNET_JitDisasm:Vector DOTNET_EnableAVX512F:0 using System.Text;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;
// Actual runner is optional, but if it exists, it has to be like this:
BenchmarkSwitcher.FromAssembly(typeof(Bench).Assembly).Run(args);
public class Bench
{
public int size = 512;
public string encName = "utf-8";
private Encoding _enc;
private string _toEncode;
private char[] _chars;
[GlobalSetup]
public void SetupGetBytes()
{
_enc = Encoding.GetEncoding(encName);
_toEncode = CreateString(size);
_chars = _toEncode.ToCharArray();
}
[Benchmark]
[MemoryRandomization]
public int GetByteCount() => _enc.GetByteCount(_chars);
public static string CreateString(int length)
{
char[] str = new char[length];
for (int i = 0; i < str.Length; i++)
{
// Add path separator so folders aren't too long.
if (i % 20 == 0)
{
str[i] = Path.DirectorySeparatorChar;
}
else
{
str[i] = 'a';
}
}
return new string(str);
}
} |
Run Information
Regressions in System.Text.Tests.Perf_Encoding
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
System.Text.Tests.Perf_Encoding.GetBytes(size: 512, encName: "utf-8")
ETL Files
Histogram
JIT Disasms
System.Text.Tests.Perf_Encoding.GetByteCount(size: 512, encName: "utf-8")
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.IO.Tests.BinaryWriterExtendedTests
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
System.IO.Tests.BinaryWriterExtendedTests.WriteAsciiString(StringLengthInChars: 2000000)
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Text.Perf_Utf8Encoding
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
System.Text.Perf_Utf8Encoding.GetByteCount(Input: EnglishAllAscii)
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
The text was updated successfully, but these errors were encountered: