본문 바로가기
CSharp/CShap Tip

Span<T>와 Memory<T>를 사용한 고성능 메모리 처리

by MonoSoft 2025. 6. 27.
728x90
반응형

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

728x90
반응형

댓글