C++/CLI è più veloce di C#? In che tipo di operazioni è più veloce?C++/CLI è più veloce di C#
risposta
Non necessariamente. Tuttavia, C++/CLI toglie gran parte dello zucchero sintattico intorno ai modi non performanti di fare cose che sono presenti in C# (boxing per esempio).
Inoltre, C + +/CLI consente un'interpolazione molto più pulita con codice non gestito, che consente effettivamente di combinare codice gestito/non gestito, che è un ambiente cruciale per le prestazioni che può essere vantaggioso.
EDIT:
Vedi questo post per alcune delle differenze: http://msdn.microsoft.com/en-us/library/ms379617(VS.80).aspx
Poiché entrambi funzionano sul framework .NET, direi che qualsiasi differenza di prestazioni sarebbe trascurabile. Qualsiasi differenza dipenderà quasi sicuramente da quanto bene i compilatori che stai utilizzando funzionano.
Visto che sono entrambi linguaggi .NET che vengono compilati nello stesso codice di byte che a sua volta viene eseguito sulla stessa macchina virtuale direi in generale, n.
C++/CLI ha solo lo scopo di fornire un'interoperabilità del linguaggio tra .NET e C++.
C++/CLI è un linguaggio pieno titolo a sé stante. Ha alcuni vantaggi rispetto a C#, anche in un/clr: ambiente di compilazione puro. –
Penso che sia stato dedicato molto impegno a questo prodotto. È difficile pensare che fosse destinato solo alle operazioni di interoperabilità. –
Qualsiasi codice gestito scritto in C++/CLI sarà essenzialmente identico al C# equivalente, assumendo la precisione del compilatore, poiché entrambi finiranno come istruzioni di linguaggio intermedie. Tuttavia, C++/CLI semplifica il missaggio del codice non gestito con la porzione gestita, che può fornire notevoli vantaggi in termini di velocità se ottimizzato in modo ottimale.
Bene, la risposta breve è no. Perché? I tipi di riferimento in C++/CLI sono compilati in MSIL, come in C#.
La cosa bella di C++/CLI (e la risposta lunga), tuttavia, è che è possibile chiamare facilmente in codice nativo, che (in molti casi) è più veloce. Detto questo, se si scrive una classe C++ nativa e si aspetta che venga eseguita in modo nativo quando viene chiamata da qualcuno in una classe gestita, quella classe C++ nativa deve essere compilata senza il supporto CLR (this question entra nel modo di farlo).
- 1. C# è più veloce di VB.NET?
- 2. quando java è più veloce di C++ (o quando JIT è più veloce, quindi precompilato)?
- 3. Java più veloce di C
- 4. serializzazione C++ più veloce?
- 5. C# TPL più veloce di C++ PPL?
- 6. È `estendi` più veloce di` + = `?
- 7. C# Qualcosa di più veloce di Console.Write()?
- 8. Contenitore coda più veloce (C++)
- 9. CLucene è più veloce di java lucene?
- 10. C# Generazione più veloce di hash MD5
- 11. più veloce/C++ immagine C ridimensionamento biblioteca
- 12. Perché String.IsNullOrEmpty è più veloce di String.Length?
- 13. Perché ToUpperInvariant() è più veloce di ToLowerInvariant()?
- 14. FastCall è davvero più veloce?
- 15. Perl o C è più veloce durante l'analisi?
- 16. C Questo hack senza branch è in realtà più veloce?
- 17. Cast veloce in C# usando BitConverter, può essere più veloce?
- 18. Il codice C# è più veloce del codice Visual Basic.NET?
- 19. È DateTime.ParseExact() più veloce di DateTime.Parse()
- 20. è "assoluto" più veloce di Move()?
- 21. Perché Object.keys è più veloce di hasOwnProperty?
- 22. Perché Crystal è più veloce di Ruby?
- 23. Perché file_get_contents è più veloce di memcache_get?
- 24. Perché HashMap è più veloce di HashSet?
- 25. SQLite è davvero più veloce di MySQL?
- 26. Perché emplace_back è più veloce di push_back?
- 27. Perché Array.reverse_each è più veloce di Array.reverse.each
- 28. Confronto di memoria, che è più veloce?
- 29. Perché è .index più veloce di .all?
- 30. Cosa è più veloce di std :: pow?
Ottimo punto sulla mancanza di zucchero sintattico di C#. –
Grazie, un po 'un modo diverso di guardare le cose, ma suppongo sia un vantaggio in termini di prestazioni poiché ti aiuta a scrivere codice performante – LorenVS
Quindi, ancora una volta, C++/CLI introduce lo zucchero sintattico per cose come l'imitazione dello stack allocation e RAII tramite ' Dispose' call. –