deque Löschen
-
Hallo,
in meinem C++Programm verwalte ich Daten in einer deque. Der Zugriff sowie auch das Löschen der deque verursacht große Zeitprobleme...es dauert ewig bis der Befehl ausgeführt worden ist.
Ich vermute, dass es was mit der Datenverwaltung im Heap zu tun hat.Kann mir jemand weiterhelfen wie ich das Problem lösen kann?
Das wäre super!!!
-
Welchen Compiler verwendest du? Bist du sicher, dass das Löschen die meiste Zeit braucht, hast du das nachgemessen? Wie löschst du überhaupt, mit
clear(),erase(), Destruktor?Stelle ausserdem sicher, dass du im Release-Modus kompilierst sowie eventuelle Debug-Laufzeitumgebungen (nicht das Gleiche wie Debug-Modus!) deaktiviert hast.
-
Ja es liegt definitiv am Löschen der Queue (clear). Ich hab auch schon versucht mit Pointern zu arbeiten und über delete dann die Daten zu löschen, aber da existiert das gleiche zeitliche Problem.
Das mit der Release-Modus habe ich schon ausprobiert, hat aber keine Verbesserung gebracht.
-
Zwei Fragen:
Wieviele Elemente welchen Typs(kurze Beschreibung bei eigenem Typ) sind in der deque?
Kannst du ein bisschen Code zeigen?
-
shopgirl schrieb:
Das mit der Release-Modus habe ich schon ausprobiert, hat aber keine Verbesserung gebracht.

Bist du wirklich sicher, dass du sowohl Release-Modus kompilierst als auch die Debug-Runtime ausgeschaltet hast? Wie siehts aus, wenn du direkt von der .exe startest?
Ich frage, weil ich keine Lust auf fröhliches Rumraten habe, wenn sich anschliessend herausstellt, dass nur die Konfiguration am Problem schuld war. Ja, das gab es auch schon hier.
Ansonsten ist Code sicher keine schlechte Idee.
-
Nur mal am Rande:
Wie kommst du denn auf die Idee, dass es mit Pointern schneller geht, wenn es eh nur ums löschen geht und somit das delete bleibt? OO Du hast somit so gar noch eindeletemehr...Ansonsten wird Nexus wohl recht haben... (nur Release-Mode bringt bei so häufigem Löschen(wie es hier klingt) rel. wenig - da ist die Debug-Runtime vrmtl der Flaschenhals...)
bb
-
unskilled schrieb:
Wie kommst du denn auf die Idee, dass es mit Pointern schneller geht, wenn es eh nur ums löschen geht und somit das delete bleibt? OO Du hast somit so gar noch ein
deletemehr...Wieso nicht? Wenn man
std::dequenoch nicht gut kennt, hat man vielleicht nicht so viel Vertrauen und befürchtet, dass da intern was unheimlich Aufwändiges passiert.