Se qualcuno mi può aiutare, sono completamente fuori dalle idee.Problema di prestazioni della mappa
così ho questo codice (si tratta di una versione molto semplificata del mio codice):
while(readNewFile())
{
while(getNewStructFromFile())
{
unsigned long starttime = GetTickCount();
customerData.fillFromBinaryData(structPointer);
cout<< GetTickCount() - starttime;
aMap.insert(pair<int,string>(customerData.phoneNumber,""));
}
// Ouptut all data
aMap.clear();
}
In sostanza, si legge solo i record da un file binario. customerData
ottiene i dati e riempie le sue variabili con i dati da esso. Quindi, inserisce il numero di telefono in una mappa (per il debug sto solo inserendo una stringa int e una stringa vuota).
Il problema è che dopo un po 'questo programma diventa molto lento; se commento la mappa, il programma viene eseguito correttamente senza problemi con un tempo di esecuzione costante per file. Se utilizzo l'inserimento della mappa, dopo alcuni file, il programma torna molto lentamente (da 8 a 10 secondi a 1 minuto o più). Ma eseguendo il debug con GetTickCount()
, mi viene mostrato che il ritardo si verifica in customerData.fillFromBinaryData
(al primo 0 ms, quindi salta a 30-40 ms (per compilare le variabili di classe)). Ma se commento questa semplice inserzione della mappa, non c'è alcun ritardo nel riempire l'oggetto con i dati! Dov'è la logica in questo? Qualcuno potrebbe darmi un suggerimento, sono fuori di idee. Scusa se questa domanda non è veramente buona.
Ho provato diversi tipi di mappe, ma ancora una volta, mi mostra che il ritardo non è nell'inserimento della mappa.
Modifica/Possibile soluzione:
Nel caso in cui qualcuno ha problemi simili, ho installato VS2015, e il ritardo utilizzando le mappe è andato! Non sono sicuro di come sia correlato, ma Hurra!
Si stanno stampando tutti i dati in ogni ciclo? I dati aumentano di volta in volta .... – Aleksandar
Semplicemente non posso essere l'unica persona stranamente curiosa del fatto che questa domanda sia contrassegnata come 'asn.1', considerando che non vi è assolutamente alcuna menzione di ciò nel corpo della domanda. – WhozCraig
I output una volta per file, e ho cancellato la mappa dopo questo, perché dovrebbe farlo diventare più grande? customerData è solo un record del cliente, ogni volta che ottiene un nuovo valore. In realtà sto leggendo da un file ASN :) Non sono sicuro del motivo per cui ho aggiunto il tag ... – Silencer