NetWasm, C#으로 컴파일한 Wasm이 Rust보다 10.9% 작아졌다

C# now beats Rust on WASM size

NetWasm 0.8.0은 C#과 .NET CIL을 데스크톱 CLR이나 Mono 없이 독립적인 WASI Preview 2 컴포넌트로 컴파일한다. 42를 출력하는 동일 워크로드에서 정밀 GC를 포함한 결과물이 47,798바이트로, 크기 최적화한 Rust 1.95.0의 53,635바이트보다 10.9% 작고 Brotli-11 압축 시 20.4% 작다. 0.10.0에서는 할당·GC 벤치마크가 Mono AOT보다 26~40% 빠르며, 빈 UI Blazor WebAssembly AOT 빌드보다 약 320배 작다.

이것은 데스크톱 .NET을 Wasm 샌드박스에 밀어 넣은 것이 아니라 새로운 .NET 플랫폼이다. 바로 그 경계 덕분에 네이티브 Wasm 수준의 크기를 가진 C#이 가능해졌다.
  1. sondr3

    이건 좀 불공정한 비교다. 여기서 벤치마크된 C# 코드도 후처리를 거친 건데, 다른 타깃들은 그런 걸 안 했다. 작성자가 /r/dotnet 서브레딧에 이걸 발표했을 때 단 reddit 댓글[1]을 보면, Rust는 훨씬, 아주 훨씬 더 작아질 수 있다. 제목은 좋게 봐도 오해의 소지가 있고, 나쁘게 보면 거짓말이다. 이건 대단한 일이지만 이 도구를 보여주려고 만든 아주 좁은 벤치마크를 빼고 Rust를 이긴다고 말하는 건 진실과는 거리가 멀다.

    [1]: https://www.reddit.com/r/dotnet/comments/1x7wsgb/rust_just_l...

  2. bob1029

    특별한 성능 케이스가 아닌 이상 wasm의 매력을 도대체 이해 못 하겠다. 우리는 Blazor server side에서 wasm 모드로 옮기는 걸 단 한 번도 고려한 적이 없다. 5년 넘게 단 한 번도 그 얘기가 나온 적이 없다. 그 전체 아이디어는 결국 엔지니어링 인재를 낭비하는 거대한 방해물로 판명됐다. 이런 이상주의적인 wasm 파이프라인을 쫓고 기묘한 websocket 트랜스포트와 씨름하는 대신, 우리는 무상태 HTTP 위에서 지루한 옛날 cshtml과 JavaScript를 작성할 수 있었을 텐데.

    autocad나 premiere의 웹 버전을 만드는 게 아니라면, 이 기술을 굳이 쓸 이유를 모르겠다.

  3. weinzierl

    이건 좀 불공정한 비교 아닌가?

    WASM은 C#이 쓸 수 있는 가비지 컬렉터와 함께 배포되는 반면 Rust는 메모리 관리를 전부 스스로 하니까, 당연히 더 커질 수밖에 없다.

    수정: OP를 더 자세히 읽어보니 내가 틀린 것 같다. 비교된 버전들에서 C# 버전은 가비지 컬렉터가 포함된 런타임을 함께 배포하는 모양이다.

이 날의 다른 글

2026-10-21