NetWasm schlägt Rust: C#-Wasm nur noch 47.798 Bytes groß
C# now beats Rust on WASM size
NetWasm 0.8.0 kompiliert C# und .NET CIL direkt zu kleinen, eigenständigen WASI-Preview-2-Komponenten – inklusive präzisem Garbage Collector. Für dasselbe print-42-Programm erreicht es 47.798 Bytes, während Rust 1.95.0 mit Size-Profil 53.635 Bytes benötigt: 10,9 % kleiner roh, 20,4 % mit Brotli-11. Der unabhängige Compiler verzichtet auf Desktop-CLR, Mono und dotnet.js. Ab 0.10.0 laufen Allokations- und GC-Benchmarks zudem schneller als bei Mono AOT.
Dies ist eine neue .NET-Plattform, nicht Desktop-.NET, in eine Wasm-Sandbox gequetscht.
- sondr3
Es ist ein etwas unfairer Vergleich, denn der hier gebenchmarkte C#-Code wird ebenfalls nachbearbeitet, was bei keinem der anderen Ziele der Fall ist. Siehe diesen Kommentar[1] auf reddit, wo der Autor dies im /r/dotnet-Subreddit angekündigt hat – Rust kann noch viel, viel kleiner werden. Der Titel ist bestenfalls irreführend und schlimmstenfalls eine Lüge; das hier ist großartig, aber zu behaupten, es schlage Rust, ist weit von der Wahrheit entfernt, außer bei dem sehr engen Benchmark, der eigens angelegt wurde, um dieses Tool vorzuführen.
[1]: https://www.reddit.com/r/dotnet/comments/1x7wsgb/rust_just_l...
- bob1029
Ich habe den Reiz von wasm außerhalb spezieller Performance-Fälle nie verstanden. Wir haben nie auch nur einmal erwogen, von Blazor server side auf den wasm-Modus umzusteigen. In über 5 Jahren kam das nicht ein einziges Mal auf. Die ganze Idee entpuppte sich als eine riesige, ablenkende Verschwendung von Engineering-Talent. Statt dieser idealistischen wasm-Pipeline nachzujagen und uns mit seltsamen Websocket-Transporten herumzuschlagen, hätten wir langweiliges altes cshtml und JavaScript auf zustandslosem HTTP schreiben können.
Es sei denn, man baut eine Web-Version von autocad oder premiere – ich sehe keinen Sinn darin, sich mit dieser Technologie zu befassen.
- weinzierl
Das ist ein bisschen ein unfairer Vergleich, oder?
Da WASM mit einem Garbage Collector ausgeliefert wird, den C# nutzen kann, während Rust die gesamte Speicherverwaltung selbst übernimmt, wird es natürlich größer sein.
EDIT: Wenn ich den OP gründlicher lese, glaube ich, dass ich mich irre. Anscheinend wird in den verglichenen Versionen bei der C#-Version eine Runtime mit Garbage Collector mitgeliefert.