Span<T>을 이용한 고성능 문자열 처리
C#의 Span<T>는 메모리 할당 없이 배열이나
문자열의 일부분을 안전하게 다룰 수 있게 해주는 고성능 구조체입니다.
특히 문자열을 조작하거나 파싱할 때
Substring()을 대체해 GC 부담을 줄이고 빠른 실행 속도를 제공합니다.
using System;
class Program
{
static void Main()
{
string input = "2025-07-04";
Span<char> dateSpan = input.AsSpan();
var year = dateSpan.Slice(0, 4);
var month = dateSpan.Slice(5, 2);
var day = dateSpan.Slice(8, 2);
Console.WriteLine($"Year: {year}");
Console.WriteLine($"Month: {month}");
Console.WriteLine($"Day: {day}");
}
}
출력 결과
Year: 2025
Month: 07
Day: 04
AsSpan()은 문자열을 Span<char>로 변환하여
부분 접근이 가능하게 만듭니다.
Slice(start, length)로 원하는 범위를 참조만 하므로,
메모리 복사나 할당이 일어나지 않습니다.
Span<T>는 stack-only 구조체로 힙에 할당되지 않아
매우 효율적이며, 파싱 및 성능 최적화가 중요한 시나리오에 매우 적합합니다.
Span<T>는 파일 처리, 문자열 파싱, 바이너리 데이터 처리 등
성능이 중요한 영역에서 매우 큰 이점을 제공합니다. .NET Core 2.1 이상에서
사용할 수 있습니다.

#CSharpSpan활용 #Span문자열파싱 #고성능문자열처리 #CSharp메모리최적화
#Substring대체 #SpanSlice사용법 #CSharp파싱성능 #SpanAsSpan활용
#GC부담줄이기 #CSharp성능향상팁
'CSharp > CSharp 문법' 카테고리의 다른 글
string.IsNullOrWhiteSpace()로 문자열 검증을 더 견고하게! (0) | 2025.07.08 |
---|---|
TryParse()로 안전하게 숫자 변환하기 (0) | 2025.07.07 |
LINQ의 Where()와 Select()를 활용한 조건 필터링 및 변환 (0) | 2025.07.03 |
Dictionary<TKey, TValue>를 효율적으로 초기화하는 방법 (0) | 2025.07.02 |
string.IsNullOrWhiteSpace()로 안전한 문자열 검증하기 (0) | 2025.07.01 |
댓글