STL Wenn's schnell gehen soll?
-
also ich habe mir eine xml-klasse geschrieben. Der Baum wird schlicht über eine stl-list gelöst.
Nun ist die Frage, sollte man dies machen, wenn das Ganze in einem aufwendigen Spiel genutzt werden soll? Die Performance soll ja nicht die beste sein..gruß -vactor
-
die performance ist so schnell wie es eben für ne liste möglich ist.
-
STL-Container können durchaus recht gute Performance haben - wenn man weiß welchen man für welchen Zweck einsetzen kann

list bietet z.B. Vorteile, wenn du ständig "irgendwo" Elemente einfügen willst (insert ist O(1)), benötigt aber länger, um nach einem bestimmten Index zu suchen. vector benötigt mehr Zeit zum Einfügen - außer am Ende (insert ist O(n), push_back() im Mittel O(1)), kann allerdings in konstanter Zeit auf einen gegebenen Index zugreifen. (deque arbeitet etwas langsamer als ein vector, hat aber zusätzlich push_front(), das in konstanter Zeit am Anfang einfügen kann)
-
Für ein XML-Parsing würde ich keine std::list nehmen, sondern std::vector. Denn durch die XML wird durch iteriert, von vorne nach hinten. Es werden immer nur Elemente hinten angefügt, und das kann vector ohne Problem. Und beim lesen und suchen des fertigen Baums im Spiel, ist vector ratten schnell. list ist meiner Meinung nach falsch gewählt. Selbst wenn man im Spiel zu einem späteren Zeitpunkt Knoten hinzufügt, fügt man diese ja nur ans Ende an.
-
Gerade weil man nur ans Ende einfügen soll ist List besser geeignet.
-
Das Problem ist, daß ich unter anderem einen pop_front brauche
-
-vactor schrieb:
Das Problem ist, daß ich unter anderem einen pop_front brauche
Dann versuch's mal mit einer deque

-
.............. schrieb:
Gerade weil man nur ans Ende einfügen soll ist List besser geeignet.
Sowas würde ich mich auch nur anonym trauen zu sagen.
