-
Notifications
You must be signed in to change notification settings - Fork 4.6k
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] Impact on various benchmarks from not aligning cloned loop #48517
Comments
I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label. |
@JulieLeeMSFT, @AndyAyersMS - FYI |
Related PR: #48090 |
Actionable item: For few benchmarks above, double check if the improvements are real from #48090 |
Most, if not all benchmarks are attributed to the data alignment problem: The stability is relatively less in FormatterUint32 benchmark because a loop gets aligned. Assembly code of Utf8Formatter:TryFormatUInt64 0F1F840000000000 align [8 bytes]
;; bbWeight=0.50 PerfScore 1.00
G_M65231_IG19: ;; offset=01A0H
4C8D4630 lea r8, [rsi+48]
48BACDCCCCCCCCCCCCCC mov rdx, 0xCCCCCCCCCCCCCCCD
488BC6 mov rax, rsi
48F7E2 mul rdx:rax, rdx
488BF2 mov rsi, rdx
48C1EE03 shr rsi, 3
413BCE cmp ecx, r14d
0F830D020000 jae G_M65231_IG45
4863D1 movsxd rdx, ecx
488D04B6 lea rax, [rsi+4*rsi]
4803C0 add rax, rax
4C2BC0 sub r8, rax
44880413 mov byte ptr [rbx+rdx], r8b
FFC9 dec ecx
85C9 test ecx, ecx
7FC5 jg SHORT G_M65231_IG19 FannkuchRedux_2: We do create cloned loops in this benchmark so this is an improvement. To summarize, not all the improvements are because of cloned loops because there are some data alignment issues. |
Run Information
Improvemnts in System.Collections.IterateFor<String>
Historical Data in Reporting System
Repro
.
Payloads
Baseline
Compare
Histogram
System.Collections.IterateFor.Span(Size: 512)
System.Collections.IterateFor.Array(Size: 512)
System.Collections.IterateFor.ReadOnlySpan(Size: 512)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Improvemnts in System.Tests.Perf_Int64
Historical Data in Reporting System
Repro
.
Payloads
Baseline
Compare
Histogram
System.Tests.Perf_Int64.TryParse(value: "9223372036854775807")
System.Tests.Perf_Int64.TryParse(value: "-9223372036854775808")
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Improvemnts in System.Buffers.Text.Tests.Utf8FormatterTests
Historical Data in Reporting System
Repro
.
Payloads
Baseline
Compare
Histogram
System.Buffers.Text.Tests.Utf8FormatterTests.FormatterUInt32(value: 12345)
System.Buffers.Text.Tests.Utf8FormatterTests.FormatterUInt32(value: 4294967295)
System.Buffers.Text.Tests.Utf8FormatterTests.FormatterUInt64(value: 12345)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Improvemnts in System.IO.Tests.Perf_StreamWriter
Historical Data in Reporting System
Repro
.
Payloads
Baseline
Compare
Histogram
System.IO.Tests.Perf_StreamWriter.WriteString(writeLength: 2)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Improvemnts in System.Perf_Convert
Historical Data in Reporting System
Repro
.
Payloads
Baseline
Compare
Histogram
System.Perf_Convert.FromBase64Chars
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Improvemnts in System.Tests.Perf_DateTime
Historical Data in Reporting System
Repro
.
Payloads
Baseline
Compare
Histogram
System.Tests.Perf_DateTime.ToString(format: "o")
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Improvemnts in Microsoft.Extensions.Primitives.StringSegmentBenchmark
Historical Data in Reporting System
Repro
.
Payloads
Baseline
Compare
Histogram
Microsoft.Extensions.Primitives.StringSegmentBenchmark.LastIndexOf
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Improvemnts in PerfLabTests.LowLevelPerf
Historical Data in Reporting System
Repro
.
Payloads
Baseline
Compare
Histogram
PerfLabTests.LowLevelPerf.GenericClassGenericStaticField
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Improvemnts in BenchmarksGame.FannkuchRedux_2
Historical Data in Reporting System
Repro
.
Payloads
Baseline
Compare
Histogram
BenchmarksGame.FannkuchRedux_2.RunBench(n: 10, expectedSum: 73196)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Improvemnts in System.Collections.IterateForEachNonGeneric<String>
Historical Data in Reporting System
Repro
.
Payloads
Baseline
Compare
Histogram
System.Collections.IterateForEachNonGeneric.Stack(Size: 512)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Improvemnts in System.Collections.IndexerSetReverse<Int32>
Historical Data in Reporting System
Repro
.
Payloads
Baseline
Compare
Histogram
System.Collections.IndexerSetReverse.Array(Size: 512)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Collections.ContainsFalse<String>
Historical Data in Reporting System
Repro
.
Payloads
Baseline
Compare
Histogram
System.Collections.ContainsFalse.Queue(Size: 512)
System.Collections.ContainsFalse.Stack(Size: 512)
System.Collections.ContainsFalse.List(Size: 512)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Regressions in System.Collections.IndexerSetReverse<String>
Historical Data in Reporting System
Repro
.
Payloads
Baseline
Compare
Histogram
System.Collections.IndexerSetReverse.IList(Size: 512)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
The text was updated successfully, but these errors were encountered: