Span<T>와 Memory<T>를 사용한 고성능 메모리 처리
C#에서는 고성능 애플리케이션을 위해
Span<T>와 Memory<T>를 활용해 할당 없는
슬라이싱(Slicing) 과 데이터 복사 최소화를 할 수 있습니다.
특히, 문자열이나 배열 등의 데이터를 부분적으로
다룰 때 유용하며, GC 부담도 줄일 수 있습니다.
using System;
class Program
{
static void Main()
{
string text = "CSharpPerformanceTip";
ReadOnlySpan<char> span = text.AsSpan(6, 11);
Console.WriteLine(span.ToString()); // "Performance"
}
}
출력 결과
Performance
Span<T>는 스택 메모리에 존재하며, 배열, 문자열, 메모리 블록 등을
복사 없이 부분 참조할 수 있게 합니다.
Memory<T>는 힙 메모리를 대상으로 하며 비동기 작업에서 유용하게 활용됩니다.
Span<T>는 ref struct이기 때문에 비동기 메서드나 필드로 사용할 수 없습니다.
이 경우 Memory<T>를 사용하세요.
문자열을 자르거나 배열을 복사할 때 Substring()이나 Array.Copy() 대신
Span<T>를 사용하면 할당을 피할 수 있어 성능을 향상시킬 수 있습니다.

#CSharpSpan활용 #고성능메모리처리 #MemoryT예제 #할당없는슬라이싱
#CSharp성능향상 #GC최적화코드 #비동기메모리처리 #SpanMemory차이
#RefStruct제약 #CSharp메모리관리
'CSharp > CShap Tip' 카테고리의 다른 글
Span<T>을 사용한 고성능 메모리 처리 (0) | 2025.07.11 |
---|---|
?? 널 병합 연산자 (Null-coalescing Operator) (0) | 2025.06.30 |
yield return을 활용한 지연 평가(Deferred Execution) (0) | 2025.06.26 |
LINQ의 SelectMany로 중첩 컬렉션을 평면화하기 (0) | 2025.06.25 |
인터페이스 default 구현으로 공통 로직 제공하기 (0) | 2025.06.20 |
댓글