C++ e c#

domenica 16 settembre 2007 - 09.41

ciccioherz Profilo | Junior Member

Ciao, avrei bisogno di un chiarimento:

esiste una differenza in termini di prestazioni e si quale tra le 2 istruzioni:

C# -> MioOggetto ogg = new MioOggetto(); //ogg contiene un riferimento all'istanza creata da new

C++ -> MioOggetto *ogg = &OggettoCreatoPrecedentemente;//il puntatore ogg contiene contiene l'indirizzo di memoria di OggettoCreatoPrecedentemente

Voglio dire, alla fine in nessuno dei due casi viene copiato l'oggetto, per cui

C# -> ogg.membro;
C++ -> ogg->membro;

hanno le stesse prestazioni? tecnicamente, che differenza c'è tra le due variabili?
grazie

Brainkiller Profilo | Guru

>hanno le stesse prestazioni? tecnicamente, che differenza c'è
>tra le due variabili?

Bella domanda, intanto non sono due variabili. Uno è un riferimento (reference) e l'altro è un puntatore. Seconda differenza in C# stai creando un oggetto con la new e nel secondo no, quindi c'è per forza una differenza prestazionale anche se minima. Dipende anche da com'è strutturato MioOggetto.

In genere per rispondere a questo tipo di domande è sufficiente metterle in un ciclo for e misurare i tempi anche se secondo me queste due non sono confrontabili.

Per finire, si sa che in ambito C++ il codice è molto più veloce rispetto al C# che ha bisogno spesso di ottimizzazioni (JIT, ecc.).
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5