La scorsa settimana ho scritto alcune righe di codice in C# per attivare un file di testo di grandi dimensioni (300.000 righe) in un dizionario. Ci sono voluti dieci minuti per scrivere ed è stato eseguito in meno di un secondo.Gestione memoria stringa C++
Ora sto convertendo quel pezzo di codice in C++ (perché ne ho bisogno in un vecchio oggetto COM C++). Ho passato due giorni su questo fin qui. :-(Anche se la differenza di produttività è scioccante da sola, sono le prestazioni che avrei bisogno di un consiglio.
Ci vogliono sette secondi per caricare, e ancora peggio: ci vuole solo esattamente quel tempo per liberare tutto CStringWs dopo. questo non è accettabile, e devo trovare un modo per aumentare le prestazioni.
ci sono delle possibilità che io possa allocare questo molte stringhe senza vedere questo degrado performace orribile?
la mia ipotesi in questo momento è che dovrò riempire tutto il testo in un grande array e poi lasciare che la mia tabella hash punti all'inizio di ogni stringa all'interno di questo array e rilasciare le cose di CStringW
Ma prima, qualche consiglio da parte degli esperti di C++?
MODIFICA: La mia risposta a me stesso è riportata di seguito. Mi sono reso conto che quella è la via più veloce per me e che passo anche a ciò che considero nella direzione giusta - verso un codice più gestito.
Hai davvero bisogno di mostrarci il codice che stai usando ora, la tua descrizione è troppo vaga per dare input. –
Devi assolutamente fornire maggiori informazioni sulla struttura dati ... –
Prima di conoscere .Net, passare da C++ a C# - senza alcuna idea di come i framework (nel mio caso VCL) fossero simili o diversi - avrebbe è stato altrettanto impegnativo come il contrario. Non c'è bisogno di incolpare C++ per fare la tua domanda. – overslacked