Wenn mir jemand helfen könnte, bin ich völlig aus Ideen.Karte Leistung Ausgabe
So habe ich diesen Code (es ist eine sehr vereinfachte Version meines Code):
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();
}
Im Grunde ist es liest nur Datensätze aus einer Binärdatei. bekommen die Daten und füllt ihre Variablen mit Daten aus. Dann fügt es die Telefonnummer in eine Karte ein (zum Debuggen füge ich nur eine int und eine leere Zeichenfolge ein).
Das Problem ist, dass dieses Programm nach kurzer Zeit sehr langsam wird; Wenn ich die Karte ausfüge, fügt das Programm OK ohne Probleme mit einer konstanten Ausführungszeit pro Datei ein. Wenn ich die Map-Einfügung benutze, geht das Programm nach einigen Dateien wieder sehr langsam (von 8 - 10 Sekunden auf 1 Minute oder mehr). Aber Debugging mit GetTickCount()
, zeigt es mir, dass die Verzögerung in customerData.fillFromBinaryData
passiert (zuerst 0ms, und dann springt es auf 30-40 ms (zum Ausfüllen der Klassenvariablen)). Aber wenn ich diese einfache Karteneinfügung kommentiere, gibt es keine Verzögerung beim Füllen des Objekts mit Daten! Wo ist die Logik darin? Könnte mir jemand einen Hinweis geben, ich habe keine Ideen mehr. Entschuldigung, wenn diese Frage nicht wirklich gut ist.
Ich habe verschiedene Arten von Karten ausprobiert, aber wieder zeigt es mir, dass die Verzögerung nicht in der Karteneinfügung ist.
Bearbeiten/Mögliche Lösung:
Falls jemand hat ähnliche Probleme, ich installiert VS2015 und die Verzögerungs Karten verwenden ist weg! Ich bin mir nicht sicher, wie das zusammenhängt, aber Hurra!
Sie drucken alle Daten in jeder Schleife? Die Daten werden jedes Mal größer .... – Aleksandar
Ich kann einfach nicht die einzige Person sein, die aus der Ferne neugierig ist, warum diese Frage mit "asn.1" markiert ist, wenn man bedenkt, dass sie im Fragetext überhaupt nicht erwähnt wird. – WhozCraig
Ich gebe einmal pro Datei aus, und ich lösche die Karte danach, warum würde es größer werden? customerData ist nur ein Kundendatensatz, jedes Mal wenn es einen neuen Wert erhält. Ich lese wirklich von einer asn Akte :) Ich bin nicht sicher, warum ich den Umbau ... hinzufügte – Silencer