C#がWasmサイズでRustを逆転、NetWasmが47,798バイトを実現
C# now beats Rust on WASM size
NetWasmはC#と.NET CILを直接WebAssemblyへコンパイルする独立系コンパイラで、デスクトップCLRやMono、DLLを本番に持ち込まない。同じ42を出力するWASI Preview 2 Componentで、NetWasm 0.8.0はランタイムと正確GC込みで47,798バイト、Rust 1.95.0のサイズ重視プロファイルは53,635バイト。Brotli-11では20.4%小さい。0.10.0ではMono AOTより最大40%高速なベンチマークも示す。
これは新しい.NETプラットフォームであり、デスクトップ.NETをWasmサンドボックスに押し込んだものではない。この境界線こそが、ネイティブWasmサイズのC#を可能にしている。
HNでの議論
18- sondr3
これは少し不公平な比較だ。ここでベンチマークされているC#のコードも後処理が施されているが、他のターゲットはどれもそうではない。作者が/r/dotnetサブレディットでこれを発表した際のredditのコメント[1]を見てほしい。Rustはずっと小さくできる。タイトルは最良でも誤解を招くもので、最悪なら嘘だ。これは素晴らしいが、Rustを打ち負かすと言うのは、このツールを披露するために作られた非常に狭いベンチマークを除けば、真実からはほど遠い。
[1]: https://www.reddit.com/r/dotnet/comments/1x7wsgb/rust_just_l...
- bob1029
特別なパフォーマンスケース以外でwasmの魅力を理解したことがない。Blazorサーバーサイドからwasmモードに移行することを検討したことは一度もない。5年以上の間、一度も話題に上らなかった。このアイデア全体は、エンジニアリングの才能を大きく浪費する妨げになるものだった。この理想主義的なwasmパイプラインを追いかけ、奇妙なwebsocketトランスポートに苦労する代わりに、ステートレスHTTP上で退屈な昔ながらのcshtmlとJavaScriptを書いていればよかった。autocadやpremiereのウェブ版を作っているのでなければ、この技術に関わる意味は見出せない。
- weinzierl
これは少し不公平な比較ではないだろうか?WASMにはC#が使えるガベージコレクタが付属しているのに対し、Rustはメモリ管理をすべて自分で行うのだから、当然大きくなる。
編集:OPをもっとよく読むと、私は間違っていると思う。どうやら比較されたバージョンでは、C#バージョンはガベージコレクタ付きのランタイムを同梱しているようだ。