Ich habe ein C++ - Programm für wissenschaftliche Zwecke ausgeführt und ich bin jetzt dabei, es zu optimieren.C++ Container sehr effizient beim Hinzufügen von Elementen zum Ende
Der Engpass scheint eine Funktion zu sein, wo ich Paare von Ganzzahlen stapeln muss. Ihre Nummer ist unmöglich von Anfang an zu wissen, und ich habe eine std::vector
einer benutzerdefinierten Struktur mit zwei ints
verwendet. Gibt es einen effizienteren Datencontainer für das wiederholte Hinzufügen von Elementen am Ende? Sollte ich es mit zwei ints
anstelle eines Paares oder einer benutzerdefinierten Struktur verwenden?
edit: Nach Timing und mein Programm Profilieren, kann ich sagen, dass für meinen Gebrauch, vector
als deque
etwas schneller ist (nur um 3%). Meine Laien schließen daraus, dass die CPU die Kontiguität der Daten gut nutzt. Optimierung ist mehr denn je eine Zauberei für mich! Und denen kann es helfen: Ich habe meine Laufzeit deutlich verbessert, indem ich vom STL C++ 11 Zufallsgenerator auf den BOOST geschaltet habe.
Verwandte: http://stackoverflow.com/questions/471432/in-which-scenario-do -i-use-a-particular-stl-container – EdChum
Eine schnelle 'std :: list' – Bastien
Wie müssen Sie auf die Daten zugreifen? Müssen Sie von vorne, von hinten oder dazwischen zugreifen? Diese Information ist wichtig, um den zu verwendenden Container zu bestimmen. –