본문 바로가기
CSharp/CShap Tip

Span<T>을 사용한 고성능 메모리 처리

by MonoSoft 2025. 7. 11.
728x90
반응형

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메모리관리팁

728x90
반응형

댓글