한국정보기술진흥원2026 제7회 청소년 IT경시대회 개최안내

마이크로소프트, '.NET 11' 성능 개선 수백 건 공개...비동기 처리 구조 바꾸고 불필요한 검사·메모리 할당 줄여, 일부 코드는 5배 빨라져

마이크로소프트가 .NET 11의 성능 개선 내용 수백 건을 공개했다.
[한국정보기술신문] 마이크로소프트(MS)가 15일(현지시간) 차세대 개발 플랫폼 '.NET 11'의 성능 개선 내용을 공개했다. .NET(닷넷)은 MS가 만든 오픈소스 소프트웨어 개발 플랫폼이다. C#, F# 같은 언어로 만든 프로그램을 윈도, 리눅스, 맥 등에서 실행하게 해 준다. 발표는 MS 닷넷 공식 블로그를 통해 MS 수석 엔지니어(Distinguished Engineer) 스티븐 토브가 썼다. 그는 .NET 11에 새로 적용된 개선 사항 수백 건을 소개했다. 핵심은 프로그램 실행 과정의 낭비를 줄이고, 비동기 처리 방식을 새로 설계한 것이다.
image.png
Unsplash 제공

매년 이어진 성능 보고서, 올해 주제는 '한 단계 더'

토브는 .NET Core 2.0 시절부터 해마다 성능 개선을 정리한 글을 써 왔다. 올해 글은 영화 '이것이 스파이널 탭이다'의 한 장면으로 시작한다. 볼륨 눈금이 10이 아닌 11까지 있는 앰프를 두고 "한 단계 더 크다"고 말하는 장면이다. 토브는 .NET 11도 1년 동안의 개선이 쌓여 실제로 한 단계 더 빨라졌다고 설명했다.
개선은 대부분 작은 단위에서 이뤄졌다. 불필요한 검사 하나를 없애고, 필요 없는 메모리 할당 하나를 줄이는 식이다. 이런 작은 개선이 서로 겹치면서 전체 성능이 눈에 띄게 높아진다는 것이 MS의 설명이다.

JIT 컴파일러, 불필요한 메모리 할당 없애

가장 큰 변화는 JIT(적시) 컴파일러에서 나왔다. JIT 컴파일러는 프로그램이 실행되는 순간 중간 단계 코드를 CPU가 이해하는 기계어로 바꾸는 장치다. 여기서 개선이 이뤄지면 개발자가 코드를 고치지 않아도 프로그램이 빨라진다.
MS는 '탈추상화' 기능을 강화했다. 개발자는 코드를 재사용하기 쉽게 여러 겹의 구조로 짠다. 이 구조는 편리하지만 실행 속도를 떨어뜨린다. .NET 11의 JIT는 이런 겹을 실행 단계에서 걷어내는 범위를 넓혔다.
또 잠깐 쓰고 버리는 객체를 찾아내 메모리 할당 자체를 없애는 기능도 좋아졌다. 공개된 측정 결과에서 숫자 값을 문자로 바꾸는 한 예제는 9.583나노초에서 1.987나노초로 줄었다. 나노초는 10억분의 1초다. 24바이트의 메모리 할당도 사라졌다. 목록을 차례로 읽는 다른 예제는 13.874나노초에서 2.674나노초로 약 5배 빨라졌다.
외부 개발자의 기여도 컸다. 깃허브 이용자 'hez2010'은 여러 건의 개선을 제출했다. 이 덕분에 특정 호출 방식의 예제가 6.678나노초에서 1.764나노초로 줄었다. 또 다른 기여자 'MichalPetryka'의 개선으로 함수를 담는 객체인 '델리게이트'의 크기가 64비트 환경에서 8바이트씩 작아졌다.

비동기 처리, 컴파일러에서 런타임으로 옮겨

또 하나의 큰 변화는 '런타임 비동기(runtime async)'다. 비동기 처리는 파일 읽기처럼 시간이 걸리는 작업을 기다리는 동안 다른 일을 하게 하는 방식이다. C#에서는 async와 await라는 명령어로 쓴다.
지금까지는 C# 컴파일러가 이 코드를 복잡한 구조로 미리 바꿔 두었다. .NET 11에서는 이 작업을 프로그램 실행 환경인 런타임과 JIT가 맡는다. 실행 중에 더 많은 정보를 알 수 있어 최적화 여지가 커진다는 것이 MS의 설명이다. 개발자가 코드를 쓰는 방식은 바뀌지 않는다. MS는 기존 방식과 동작이 100% 같아야 한다는 목표를 세웠다.
효과는 수치로 나타났다. 비동기 함수 10개를 연결한 시험 프로그램의 파일 크기는 1만752바이트에서 5632바이트로 절반 가까이 줄었다. 두 단계로 연결된 비동기 호출이 바로 끝나는 경우 실행 시간은 21.221나노초에서 6.151나노초로 줄었다. 144바이트이던 메모리 할당은 0이 됐다.
오류 처리에서는 차이가 더 컸다. 기존 방식은 오류가 비동기 함수를 하나 지날 때마다 잡았다가 다시 던지는 과정을 반복했다. 새 방식은 이 반복을 건너뛴다. 30단계를 거쳐 오류가 전달되는 예제는 51.302마이크로초에서 10.721마이크로초로 줄었다. 마이크로초는 100만분의 1초다.
다만 런타임 비동기는 아직 기본값이 아니다. 개발자가 프로젝트 설정에서 직접 켜야 한다. .NET 기본 라이브러리는 대부분 이미 새 방식으로 만들어졌다. MS가 세운 .NET 11의 목표는 .NET 10과 비슷한 성능이다. 토브는 "아직 완전히 최적화되지 않았고, 코드 효율이 떨어지는 경우도 알려져 있다"고 밝혔다. 실제로 1단계 호출에서 작업을 한 번 멈춘 뒤 오류가 나는 예제는 기존보다 느렸다. async void 등 일부 형태는 아직 지원하지 않는다. 토브는 .NET 12부터 기본으로 켜지기를 바란다고 했다.
성능 분석 도구도 함께 개선됐다. 비동기 작업은 멈췄다가 다른 스레드에서 다시 실행되기 때문에 어느 경로에서 시간이 오래 걸렸는지 추적하기 어려웠다. 기존 추적 방식은 기록이 너무 많아 실제 서비스에서는 쓰기 힘들었다. MS는 기록을 작게 압축해 모아 보내는 새 방식을 도입했다. 일부 측정에서 추가 부담은 1% 미만이었고, 기록 데이터의 양은 10분의 1 수준으로 줄었다. 이 기능은 기존 방식으로 만든 비동기 코드에도 적용된다. 런타임 비동기 관련 작업은 9월 14일 기준 235건의 코드 변경 요청으로 이뤄졌다.

경계 검사 줄여 '안전한 코드'도 빠르게

C#은 메모리 안전 언어다. 배열의 범위를 벗어난 곳을 읽으려 하면 오류를 내 데이터 손상을 막는다. 이를 위해 JIT는 접근할 때마다 범위를 확인하는 '경계 검사'를 넣는다. 하지만 이 검사는 속도를 떨어뜨린다. 그래서 일부 개발자는 검사를 피하려고 위험한 방식인 '안전하지 않은(unsafe) 코드'를 써 왔다.
.NET 11의 JIT는 검사가 필요 없다고 증명할 수 있는 경우를 크게 늘렸다. 예를 들어 배열 원소 16개를 더하는 예제에서 검사를 한 번으로 합쳤다. 실행 시간은 2.958나노초에서 1.828나노초로 줄었다.
이 작업은 MS가 .NET 라이브러리 전반에서 안전하지 않은 코드를 점검하는 과정에서 나왔다. 점검 결과 일부 코드는 안전한 코드로 바꿔도 느려지지 않았고, 더 빨라진 경우도 있었다. 목록 합계를 구하는 기능이 대표적이다. 토브는 외부 라이브러리 개발자에게도 속도를 위해 쓴 안전하지 않은 코드를 안전한 코드로 바꿔 .NET 11에서 다시 측정해 보라고 권했다.
함께 공개된 C# 15 미리보기도 같은 방향이다. 포인터를 선언하는 것만으로는 더 이상 unsafe 표시가 필요 없다. 실제로 메모리를 읽고 쓸 때만 표시하도록 범위를 좁혔다.
측정에는 .NET 11 출시 후보(RC1) 버전이 쓰였다. 측정 대상도 대부분 아주 짧은 작업을 반복하는 '마이크로 벤치마크'다. 토브도 결과가 하드웨어, 운영체제, 설정 등에 따라 달라질 수 있다고 밝혔다. 따라서 실제 서비스에서 얼마나 빨라질지는 개발자가 직접 측정해 확인해야 한다. 벤치마크 코드는 모두 공개돼 누구나 같은 시험을 해 볼 수 있다.
한국정보기술신문 정보기술분과 양한결 기자 news@kitpa.org

함께 읽으면 좋은 기사

AWS, 이란 공격 받은 바레인·UAE 데이터센터 일부 데이터 "복구 불가" 공식화...피격 6개월 만의 발표, 여러 가용 영역 동시 피해로 설계 한계 넘어서

AWS, 이란 공격 받은 바레인·UAE 데이터센터 일부 데이터 "복구 불가" 공식화...피격 6개월 만의 발표, 여러 가용 영역 동시 피해로 설계 한계 넘어서

클라우드 3
애플, 아이폰 촬영 사진의 진위 증명하는 '레퍼런스 이미지' 공개...아이폰 18 프로 카메라 센서가 촬영 즉시 서명, 양자내성 암호 적용하고 촬영자 신원은 숨겨

애플, 아이폰 촬영 사진의 진위 증명하는 '레퍼런스 이미지' 공개...아이폰 18 프로 카메라 센서가 촬영 즉시 서명, 양자내성 암호 적용하고 촬영자 신원은 숨겨

정보보안 4
과기정통부, 원주에 디지털헬스케어 특화 'AI융합혁신교육원' 개소...의료데이터·피지컬 AI 교육으로 올해 160명 양성, 기업-대학 연계 프로젝트로 채용까지 잇는다

과기정통부, 원주에 디지털헬스케어 특화 'AI융합혁신교육원' 개소...의료데이터·피지컬 AI 교육으로 올해 160명 양성, 기업-대학 연계 프로젝트로 채용까지 잇는다

인공지능 · 유관기관 2
마이크로소프트, '.NET 11' 성능 개선 수백 건 공개...비동기 처리 구조 바꾸고 불필요한 검사·메모리 할당 줄여, 일부 코드는 5배 빨라져

마이크로소프트, '.NET 11' 성능 개선 수백 건 공개...비동기 처리 구조 바꾸고 불필요한 검사·메모리 할당 줄여, 일부 코드는 5배 빨라져

정보기술 4
애플, iOS 27 등 새 운영체제 배포 시작...'시리 AI' 영어 베타 공개...한국어는 10월 지원, 자녀 보호 기능 강화하고 앱 실행 속도 최대 30% 개선

애플, iOS 27 등 새 운영체제 배포 시작...'시리 AI' 영어 베타 공개...한국어는 10월 지원, 자녀 보호 기능 강화하고 앱 실행 속도 최대 30% 개선

인공지능 4
딥시크, KV 캐시 4분의 1로 줄인 'V4.1 플래시' 공개...층 간 캐시 공유·FP4 저장으로 장기 AI 에이전트 비용 절감 겨냥

딥시크, KV 캐시 4분의 1로 줄인 'V4.1 플래시' 공개...층 간 캐시 공유·FP4 저장으로 장기 AI 에이전트 비용 절감 겨냥

인공지능 4
오픈JDK, 자바 27 정식 출시...G1 기본 가비지 컬렉터·양자내성 TLS 도입

오픈JDK, 자바 27 정식 출시...G1 기본 가비지 컬렉터·양자내성 TLS 도입

정보기술 2
애플, 완전히 새로 만든 '시리 AI' 출시...iOS 27 등 새 운영체제에 차세대 애플 인텔리전스 탑재, 영어 베타로 먼저 시작해 한국어는 다음 달 지원

애플, 완전히 새로 만든 '시리 AI' 출시...iOS 27 등 새 운영체제에 차세대 애플 인텔리전스 탑재, 영어 베타로 먼저 시작해 한국어는 다음 달 지원

정보통신 · 인공지능 4
유웨이어플라이, 수시 원서접수 서버 장애 공식 사과...마감 10분 전 시스템 멈춰 접수 1시간 연장

유웨이어플라이, 수시 원서접수 서버 장애 공식 사과...마감 10분 전 시스템 멈춰 접수 1시간 연장

정보기술 · 정보보안 3
애플, 5초마다 심박 재는 '헬스 센싱 시스템' 애플워치 시리즈 12 공개...S11 칩으로 레디니스 점수·오디오 인텔리전스 도입, 18일 정식 출시

애플, 5초마다 심박 재는 '헬스 센싱 시스템' 애플워치 시리즈 12 공개...S11 칩으로 레디니스 점수·오디오 인텔리전스 도입, 18일 정식 출시

정보기술 5
애플, 첫 폴더블 아이폰 '아이폰 듀오' 내놨다...펼치면 7.6인치·접으면 5.4인치, 1999달러부터 10월 16일 예약 판매

애플, 첫 폴더블 아이폰 '아이폰 듀오' 내놨다...펼치면 7.6인치·접으면 5.4인치, 1999달러부터 10월 16일 예약 판매

정보기술 · 정보통신 5
젯KVM, 성냥갑 크기 원격제어 장치 '젯KVM 미니' 공개...리눅스 걷어내고 마이크로컨트롤러로 다시 설계, 3개 묶음 기준 개당 33달러부터 10월 26일 판매

젯KVM, 성냥갑 크기 원격제어 장치 '젯KVM 미니' 공개...리눅스 걷어내고 마이크로컨트롤러로 다시 설계, 3개 묶음 기준 개당 33달러부터 10월 26일 판매

정보기술 · 정보통신 4