마이크로소프트에 따르면 ‘닷넷 6(.NET 6)’는 JiT(Just-in-Time) 컴파일 및 가비지 수집(GC)부터 JSON까지 다양한 영역에서 성능 향상을 이뤘다.
지난 8월 17일(현지 시각) 발표된 공식 블로그 게시글에서 마이크로소프트의 닷넷팀 개발자 스티븐 토브는 닷넷 6의 성능 개선 사항을 공개했다.
그는 JiT에서 ‘믿을 수 없는 수치의’ 성능 향상이 있으며, 이는 컴파일러가 메소드 피호출자(callee)에서 코드를 가져와 호출자(caller)에 내보내는 과정인 인라인 등에 영향을 미친다고 언급했다. 호출자의 컨텍스트를 비호출자의 컨텍스트에 노출해 인라인 없이는 불가능했던 후속(knock-on) 최적화를 가능하게 하는 게 주요 이점이라는 설명이다.
이어서 토브는 JiT가 런타임에서 IL(Intermediate Language)을 어셈블리 코드로 변환하는 데 사용되며, 또 크로스젠2(CrossGen2) 코드 최적화 및 R2R 형식(실행 준비)의 일부로 사전 컴파일에 사용된다고 밝혔다.
닷넷 6에서 가비지 수집은 세그먼트보다 리전을 기반으로 GC 구현을 전환해 성능을 개선했다. 리전은 (세그먼트보다) 더 작은 메모리 단위이기 때문에 GC 성능을 향상시킬 수 있다고 개발팀은 말했다.
또한 닷넷 6에서는 여러 작업에 고유 식별자를 제공하는 데 사용되는 시스템 유형(예: Guid)의 성능도 개선됐다. 새로운 System.Text.Json 소스 생성기 역시 성능을 향상시켰다. FileStream 유형도 다시 작성돼 I/O 성능 문제가 해결됐다.
다른 개선사항도 있다. 닷넷 6는 리눅스에서의 TLS(Transport Layer Security) 세션 재개 지원이 포함돼 보안 연결 설정에 필요한 시간을 단축할 수 있다. 또 BigInteger 구현 전반에 걸쳐 범위를 적극적으로 사용할 수 있게 됐다.
한편 닷넷 6는 오는 11월 프로덕션 릴리즈로 출시될 계획이다. 현재까지 닷넷 6은 일곱 번의 베타 프리뷰를 거쳤으며, 릴리즈 캔디데이트가 다음 단계로 예정돼 있다. ciokr@idg.co.kr