From 342b776b2eac1d19dd87a46f956a57732c5916c7 Mon Sep 17 00:00:00 2001 From: Tanner Gooding Date: Tue, 4 Nov 2025 12:21:27 -0800 Subject: [PATCH] Add some CopyTo tests for Span --- .../micro/libraries/System.Memory/Span.cs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/benchmarks/micro/libraries/System.Memory/Span.cs b/src/benchmarks/micro/libraries/System.Memory/Span.cs index b1a29c31258..e68f5453e32 100644 --- a/src/benchmarks/micro/libraries/System.Memory/Span.cs +++ b/src/benchmarks/micro/libraries/System.Memory/Span.cs @@ -19,9 +19,10 @@ public class Span where T : struct, IComparable, IEquatable { [Params( - 4, // non-vectorized code path - 33, // both vectorized and non-vectorized code path - 512)] // vectorized code path + 4, // non-vectorized code path + 33, // both vectorized and non-vectorized code path + 512, // vectorized code path + 3000)] // larger than memmove p/invoke threshold public int Size; private T[] _array, _same, _different, _emptyWithSingleValue; @@ -39,7 +40,16 @@ public void Setup() [Benchmark] public void Clear() => new System.Span(_array).Clear(); - + + [Benchmark] + public void CopyTo() => _array.AsSpan().CopyTo(_different); + + [Benchmark] + public void CopyToSame() => _array.AsSpan().CopyTo(_array); + + [Benchmark] + public void CopyToOverlap() => _array.AsSpan(0, _array.Length - 1).CopyTo(_array.AsSpan(1)); + [Benchmark] public void Fill() => new System.Span(_array).Fill(default);