From 3eb7fdb8bacb19136e144f83a9dcc1b60d8b3ade Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Tue, 16 Jan 2024 13:49:33 +0100 Subject: [PATCH] reverse-string: add alternative span code --- .../reverse-string/.approaches/span/content.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/exercises/practice/reverse-string/.approaches/span/content.md b/exercises/practice/reverse-string/.approaches/span/content.md index f351f16591..bc12c2ee71 100644 --- a/exercises/practice/reverse-string/.approaches/span/content.md +++ b/exercises/practice/reverse-string/.approaches/span/content.md @@ -56,6 +56,17 @@ So what is the limit for the amount of memory we can allocate? Well, this depends on how memory has already been allocated on the stack. That said, a small test program successfully stack-allocated memory for `750_000` characters, so you might be fine. +## Alternative + +It is possible to use an alternative span-based implementation that is more readable, but has the downside of being about twice as slow: + +```csharp +Span chars = stackalloc char[input.Length]; +input.AsSpan().CopyTo(chars); +chars.Reverse(); +return new string(chars); +``` + ## Performance If you're interested in how this approach's performance compares to other approaches, check the [performance approach][approach-performance].