Span<T>을 사용한 고성능 메모리 처리
Span<T>는 배열, 문자열, 메모리 블록 등을 할당 없이
빠르게 조작할 수 있는 구조입니다.
주로 성능이 중요한 고급 시나리오에서 사용되며,
GC(가비지 컬렉션) 오버헤드를 줄이는 데 매우 유리합니다.
using System;
class Program
{
static void Main()
{
int[] numbers = { 10, 20, 30, 40, 50 };
Span<int> slice = new Span<int>(numbers, 1, 3);
for (int i = 0; i < slice.Length; i++)
{
slice[i] *= 2;
}
foreach (var n in numbers)
{
Console.WriteLine(n);
}
}
}
Span<int>는 numbers 배열의 일부(20, 30, 40)를 참조합니다.
해당 요소만 2배로 수정되며, 원본 배열에도 반영됩니다.
메모리 복사 없이 처리되므로 빠르고 효율적인 처리가 가능합니다.
단, Span<T>는 스택 메모리 기반이므로 힙에 저장하거나 비동기 메서드에서 사용할 수 없습니다.
ReadOnlySpan<T>를 사용하면 읽기 전용 처리가 가능하며,
Memory<T>는 Span<T>를 힙에서도 안전하게 사용할 수 있게 합니다.

#CSharpSpan사용법 #고성능메모리처리 #Span배열슬라이스 #GC최적화코딩
#CSharp퍼포먼스향상 #SpanVsArray #힙스택차이 #Span활용사례
#ReadOnlySpanMemory #CSharp메모리관리팁
'CSharp > CShap Tip' 카테고리의 다른 글
using 문으로 리소스 자동 해제하기 (0) | 2025.07.17 |
---|---|
?? 널 병합 연산자 (Null-coalescing Operator) (0) | 2025.06.30 |
Span<T>와 Memory<T>를 사용한 고성능 메모리 처리 (0) | 2025.06.27 |
yield return을 활용한 지연 평가(Deferred Execution) (0) | 2025.06.26 |
LINQ의 SelectMany로 중첩 컬렉션을 평면화하기 (0) | 2025.06.25 |
댓글