Source Generator
소스제너레이터
Roslyn Source Generator
이 포스팅은 증분 소스제너레이터에 대해서 작성합니다.
Roslyn의 소스 제너레이터를 활용하면 C# 소스코드를 구문분석 하여 구문에 맞는 소스코드를 생성할 수 있습니다.
많은 게임 개발자, 특히 C#을 사용하시는 분들, 모바일 환경에서 GC 친화적 게임을 개발하려는 분들에게 특히 도움이 되는 내용입니다. Roslyn을 사용해서 소스코드를 생성하면 특수 상황에서 최대한 CPU 자원을 덜 사용하며 메모리를 비약적으로 절약할 수 있습니다. 뿐만아니라 코드 생산성에도 유용합니다. 프로그래머의 실수를 줄일 수 있고, 프로그래머가 수동으로 최적화 해야하는 영역등에서 소스제너레이터를 활용할 수 있겠습니다.
### 증분과 비증분
로즐린 소스제너레이터에 관심을 가지고 찾아보신 분들이라면 두 가지 버전의 소스제너레이터를 찾아보실 수 있습니다. 기존(비증분) 방식과 차세대(증분) 방식입니다. 특히 증분 소스제너레이터 라는 용어가 나오는데, 여기서 ‘증분’ 이란 좀 더 친숙한 용어로 점진적으로 (풀어서: 천천히, 그리고 효율적으로) 소스코드를 생성하는 방식입니다.
소스코드를 구문분석한다는 의미는 컴파일 하기 전 미리 IDE(Host) 에서 소스코드를 읽고 분석 하는 과정이므로 여러분들의 IDE(Rider, VSCode 등) 코드편집기의 성능을 위해서 조금 복잡하지만 증분 소스제너레이터를 사용하는것이 좋습니다.
C#의 구 소스제너레이터(비 증분방식) 은 분석할 코드의 양이 많고, 변화가 잦은 경우 호스트(IDE)가 느려지는 현상이 있지만 증분 방식은 구문분석한 코드들을 효율적으로 캐싱하고, 변화된 구문을 추적하며 그에 맞춰 소스코드를 생성하기에 훨씬 효율적이라고 볼 수 있습니다.
이제 직접 작성해보겠습니다.
프로젝트 생성
#