Porovnání rychlosti .NET a C++/CX

18. 10. 2011 10:41 zboj

S novým WinRT se zásadně mění vnitřnosti celé platformy .NET (pro nové „Metro“ aplikace, které poběží i na procesorech ARM). Použil jsem kus kódu z reálné výpočetně náročné aplikace k porovnání rychlosti C++/CX a C#.

Aplikace v nativním kódu je (nepřekvapivě) rychlejší, zajímavé ale je, že zhruba dvakrát, což je podstatný rozdíl. Na vině je zřejmě mezivrstva CLR mezi aplikačním kódem a WinRT, která u aplikace napsané v C++/CX chybí.

Co z toho vyplývá? Pokud píšete aplikaci, která kromě UI obsahuje také netriviální aplikační logiku, je jasnou volbou C++/CX. .NET se pro „Metro“ aplikace, je-li prioritou rychlost, hodí méně, nemluvě o vyšší spotřebě paměti díky plně automatické správě paměti. Pokud tedy chcete mít svou aplikaci rychlou (ARM je stále ještě pomalejší než procesory od Intelu) a schopnou běhu na pozadí (pokud spotřebujete příliš mnoho paměti, operační systém vám ji ukončí), která zbytečně neždímá baterku, je jasnou volbou C++/CX (snad s výjimkou aplikací typu „stáhni z webové služby informace o počasí a zobraz sluníčko, mráček a číslo s teplotou“).

Je dost pravděpodobné, že .NET skončí jako Java, tedy na servrech.

Sdílet