.NET 8 Native AOT 관련 자료 수집 및 정리

.NET 8 Native AOT 발표 자료를 생성 하기 위해 관련 자료 수집 및 내용을 정리할 계획입니다.

  • 기간: 2개월
  • 결과: 수집 자료, 1차 정리, 발표 자료
5개의 좋아요

자료

문서

관련 예제 코드

벤치마킹

4개의 좋아요

정리1

Native AOT 란?

  • 컴파일 시점에서 AOT 컴파일을 수행해서 바이트 코드(IL)가 아닌 네이티브 코드로 컴파일 하는 기술
  • .NET 7 부터 사용 가능했으며 윈도우, 리눅스 플랫폼 지원
  • .NET 8은 맥OS 플랫폼도 지원

Native AOT 장점

  • 시작 실행 시 JIT(Just-In-Time) 컴파일 과정이 없으므로 빠르게 프로그램 시작
  • JIT 과정이 없으므로 메모리 사용량이 보다 낮음
  • 런타임 라이브러리 의존성이 없는 실행 파일 생성
  • 타 프로그래밍 언어에 C 스타일로 라이브러리 제공 가능

Native AOT가 의미있는 영역

  • 마이크로 서비스 ( 작은 인스턴스 크기 및 빠른 응답시간 )
  • SBC(Single Board Computer) 애플리케이션 개발

Native AOT 단점

  • .NET의 JIT 성능이 좋아짐에 따라 동작 시간은 조금 떨어질 수 있음
  • 동적 로딩 안됨
  • 제한 사항이 있는 트리밍
  • 일부 API의 비호환성
  • Native AOT를 지원하지 않는 오픈소스 라이브러리가 대다수
5개의 좋아요

요 부분은 내용이 변경되어야하지 않을까하여 피드백 드려봅니다.!

  • 시작 실행 시 AOT JIT (Just-In-Time) 컴파일 과정이 없으므로 빠르게 프로그램 시작
  • AOT JIT 컴파일 과정이 없으므로 메모리 사용량이 보다 낮음
  • .NET의 런타임 AOT JIT 성능이 좋아짐에 따라 동작 시간은 조금 떨어질 수 있음
4개의 좋아요

피드백 감사합니다.

4개의 좋아요

정리2

.NET 7 vs .NET 8 Native AOT

구분 .NET 7 .NET 8 비고
지원 애플리케이션 콘솔 콘솔, ASP.NET Core(구조 및 기능 범위는 다름)
Hello World
실행파일 용량
(리눅스 기준)
13Mb 1.5Mb
성능 - 정적 필드 읽기 향상
- 인덱스 찾기 향상
- 정적 클래스 초기화 오버헤드 개선
- 경량 스핀 락 개선
디버그 기호
(리눅스 기준)
실행파일 .dbg 파일로 별도 분리 <StripSymbols>false</StripSymbols>
실행파일 포함 가능
4개의 좋아요
2개의 좋아요
1개의 좋아요