2009-08-21 19 views

risposta

14

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

+0

Ottimo punto sulla mancanza di zucchero sintattico di C#. –

+0

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

+0

Quindi, ancora una volta, C++/CLI introduce lo zucchero sintattico per cose come l'imitazione dello stack allocation e RAII tramite ' Dispose' call. –

8

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.

1

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++.

+3

C++/CLI è un linguaggio pieno titolo a sé stante. Ha alcuni vantaggi rispetto a C#, anche in un/clr: ambiente di compilazione puro. –

+0

Penso che sia stato dedicato molto impegno a questo prodotto. È difficile pensare che fosse destinato solo alle operazioni di interoperabilità. –

1

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.

3

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).

Problemi correlati