|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Oct 2008
Messaggi: 70
|
[C++ vs C#] Velocità algoritmo
Ciao a tutti.
Premesso che non sono un grande esperto di C++, ho riscritto (sto riscrivendo) una applicazione da C# in C++. I metodi sono praticamente uguali, cambiano naturalmente certe strutture dati (in pratica da liste a vector) ma appunto i metodi sono uguali e anche il numero di iterazioni (non ci sono bug - al max qualche memory leak ma sono ancora a esecuzione singola). Il risultato sorprendente è che il C# è più veloce del C++ !! Caratteristica di questa applicazione è che ho a che fare con tantissimi piccoli oggetti diversi che vengono creati, ci si butta dentro qualcosa, si fanno due conti e per quell'oggetto si associa un punteggio. Ho notato che, almeno da test veloci, nell'inizializzazione di un oggetto il c# sia più veloce.. non so se sia proprio vero comunque.. Può essere che in un caso come questo non sia vera la regola per cui il C++ è più efficiente? Cosa devo tener conto per poter scegliere in maniera sensata C++ o C#? Come immaginate, non vorrei arrivare alla fine per rendermi conto che non ho guadagnato in tempo ma tutt'altro... Grazie delle vostre impressioni! |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2095
|
Se il codice C# è più veloce, sicuramente più comprensibile, meno prono ad andare in core e perdere memoria perché ti sbatti ad usare il C++?
Comunque il codice C++ se è portato direttamente da C# userà un sacco di new puoi provare a dichiarare tutte le variabili nello stack ci sta che C++ sia più lento ad allocare memoria che C#...
__________________
Cosmos C# Open Source Managed Operating System Cosmos Thread Ufficiale Cosmos Official Site Vuoi collaborare allo sviluppo? Unisciti alla chat! |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Oct 2008
Messaggi: 70
|
Eh, mi aspettavo comunque un leggero miglioramento, perchè adesso comunque sto gestendo dei timeout per restituire una soluzione non ottima ma entro un tempo accettabile.
Stavo guardando le opzioni del compilatore, ho indicato no CRL sperando che il nativo mi desse qualcosa in più.. Data l'esperienza finora sono anch'io per accantonare il C++ e ottimizzare il C#. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Giusto per capire se stai sbagliando qualcosa dovresti postare un po' di codice d'esempio.
Già il fatto che tu parli di memory leak mi dà l'idea che non hai usato smartpointer, usando direttamente dei puntatori. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:25.