Gå til innhold

Hastighet på C++ i .NET?


Anbefalte innlegg

Videoannonse
Annonse

Har undret på det samme selv, for alle .NET-språk kompileres jo til IL-kode som i teorien burde vært lik. Jeg diskuterte det med en foreleser en gang, og uten noen garanti for at det han sa var rett, så vil C++.NET være raskere enn VB.NET på grunn av at C++.NET har mindre overhead på å gjøre minneallokeringer og diverse andre ting. Er usikker selv..

Lenke til kommentar

C++ kompilatoren skal være bedre til å optimalisere kode og derfor lage mer effektiv MSIL-kode. Derfor kan man oppleve at C++ .NET er litt raskere enn C#. Ifølge testene jeg har sett er VB.NET en god del tregere enn VB.NET og er nok derfor ikke det beste valget hvis du ønsker rask .NET-kode.

 

Hvordan situasjonen er i den nye utgaven som akkurat er sluppet på MSDN (Visual Studio 2005) vet jeg ikke. C++ .NET er designet helt fra grunnen av igjen (.NET-tilleggene) og jeg vil tro spesielt C#-kompilatoren også har blitt bedre med tanke på hastighet.

Lenke til kommentar

Fordelen C++.NET har, er jo at dte blir native code, avhengig av hvordan du skriver det, vil det nødvendigvis bli raskere.

 

Som benchmarkene på The Computer Language

Shootout Benchmarks viser, så er native code selvsagt raskere en både Java og C#, stort sett på alle områder.

 

I C++.NET kan du blande managed og unmanaged kode, noe som gjør at du kan bruke raske minnehåndteringsrutiner, og snakke tildels med hardware (f.eks. serieportkommunikasjon, som ikke er lagt inn i .NET v1.1 av en eller annen latterlig grunn)

Lenke til kommentar

Tror de fleste er klar over at du kan blande native C++ med managed C++. Og selvfølgelig er native-kode nesten alltid raskere enn MSIL-kode.

Men du kan også lage en regular-dll og gjøre kall til samme koden fra f.eks. C# og få de samme hastighetsfordelene som i C++. Koden er i prinsippet like portabel siden du uansett må rekompilere native-delene hvis du ønsker å bruke filene på en annen platform.

 

Men det som er interessant etter min mening er at managed C++ kode ofte er raskere enn tilsvarende C#- og VB.NET-kode. Dette kommer rett og slett av at managed C++ -kompilatoren er bedre til å optimalisere enn C# og VB.NET. VB.NET er på sin side kjent for å lage enda tregere kode enn C#.

 

Situasjonen kan ha endret seg med den nye utgaven av Visual Studio / .NET Framework. For i teorien skal alle språkene være like raske hvis kompilatorene er like flinke til å generere optimalisert MSIL-kode.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...