Span<T>을 실무에 적용해보자 - slog(완료)

발표자료를 생성하기 위해 slogging을 합니다.

Span<T>을 실무에 사용해보자 (Span<T>으로 내가 짠 코드의 성능을 올려볼까?)

목차

  • Span<T>는 어따 쓰는 물건이고? - “알아보자”
  • 뭔지는 대략 알겠어. 직접 해보자고! - “해보자”
  • 그런데 정말 뭔가 좋아지는거야? - “성능은?”
  • 기존 방식에서 Span<T>으로 바꿔봐 그럼 - “리팩토링”
  • 기존 방식은 계속 써도 돼? - “정리”
2개의 좋아요

Span<T>는 어따 쓰는 물건이고? - “알아보자”

  • 간단하게 스택과 관리힙 소개
  • 빈번한 힙 할당 해제는 GC에 압력을 줌
  • C#의 경쟁자는 이제 비관리 언어
  • 불필요한 복사 및 메모리 할당을 억제
  • Span<T> 등판
  • Span<T>의 특별대우
  • Span<T>Span<T>의 … Slice
  • 스택과 비관리 메모리까지 Span<T>!
  • Span<T>이 사는 곳. 스택
1개의 좋아요
  • .NET Framework 설계 철학은 개발자의 생산성에 초점을 맞춤. 설계철학이 좀 오래됨
  • 비 Windows 운영 체제를 포함하여 클라우드 호스팅 서비스를 고려한 설계 필요성 대두
  • 무복사, 낮은 할당 및 UTF-8 데이터 변환 API를 제공해야 한다는 인식 확장

corefxlab/span.md at archive · dotnet/corefxlab (github.com)

1개의 좋아요

.NET Framework: 866. C# - 고성능이 필요한 환경에서 GC가 발생하지 않는 네이티브 힙 사용 (sysnet.pe.kr)

Interoperating with Unmanaged Code (radio42.com)

To achieve this is pretty easy: Simply keep a reference to the object in question locally in your managed code. Forgetting this aspect is the most common mistake which results in a “memory access violation” error - causing your application to crash.

P/Invoking using Span. (Updated to .NET Core 2.1 official… | by Antão Almada | Medium

recap
Span 를 사용해야 할 5가지 이유 - jacking75

뭔지는 대략 알겠어. 직접 해보자고! - “해보자”

  • ref struct에 익숙해지기
  • 인자로 넘겨보고 반환해보고
  • struct 필드로 넣어보자
  • class 필드로 넣어보자
  • ref structref struct
  • 이진 탐색에 적용
  • string.Split과 유사하게
  • byte[] ↔ struct 뷰!

Split a string into lines without any allocation - Meziantou’s blog

PowerPoint Presentation (adamsitnik.com)

Adam Sitnik “State of the .NET Performance” (slideshare.net)