iteration über std::vector langsamer als pointerarithmetik über array?
-
hab mich verpostet....bitte löschen
-
hmm es könnte durchaus sein, dass ich vektoren in ihrer Länge beeinflusst habe im Nachhinein.
Leider geht es mir als erstes Kriterium um Geschwindigkeit. Ich habe ein sehr rechenintensives (viele for-schleifen über arrays) so dass es sich wirklich summieren könnte...Danke für eure Hilfe
-
In diesem Fall könnten normale Array schon einiges an geschwindigkeit bringen.
Das ist natürlich trotzdem kein Grund malloc und co. zu verwenden, new tut es auch.
-
Braunstein schrieb:
In diesem Fall könnten normale Array schon einiges an geschwindigkeit bringen....
Aber nur, wenn er dabei die Größe nicht auch ändert ... und wenn er das Ändern der Größe da vermeiden kann, kann er es auch bei vector vermeiden.

Also ich denke: Array und vector analog verwendet, sollten gleich schnell sein.
Gruß,
Simon2.
-
Das hat nicht nur was mit Größenänderungen zu tun. Ich habe ebenfalls die Erfahrung gemacht, dass auch der Zugriff über vector langsamer sein kann als bei einem normalen Array. Mag sein das es wenig ist, aber sehr vielen Zugriffen kann das schon etwas ausmachen. Auch bei unserer Software (numerische Simulationen) kommt es sehr auf Geschwindigkeit an.
-
Braunstein schrieb:
Das hat nicht nur was mit Größenänderungen zu tun. Ich habe ebenfalls die Erfahrung gemacht, dass auch der Zugriff über vector langsamer sein kann als bei einem normalen Array...
Hier gibt es mehrere Fragen von meiner Seite:
a) Wie greifst du auf die Vektorelemente zu [] oder at?
b) Wie verwendest du den Vektor in Schleifen (bzw. wie sieht der Schleifenkopf aus... Häufiger Fehler an dieser Stelle sind ständige Methodenaufrufe des Vektors)
c) Nutzt du die Algorithmen der STL, sofern passend?cu André
-
a) mit []
b) ich rufe size() nicht ständig neu auf.
c) im Berechnungskern nicht.
-
Hier gibt es irgendwo einen Beitrag, in dem gemessen wurde, wie Iteration über Array und Vector mittels Zeiger und Iterator sich zueinander verhalten. Ich meine mich zu erinnern dass bei abgeschalteter Secure-STL (Microsoft) und Release-Build (Perf.-Optimierung an) alle getesteten Implementierungen von der Ausführungsgeschwindigkeit her identisch waren.
Müsste den Thread mal raussuchen.
-
Hallo,
Ich kenne den Thread. Es könnte ja durchaus sein, dass dieses verhalten Compilerabhängig ist. Wir hatten das damals auf dem BCB4 getstet.
-
Hier ist der Thread zu finden.
Braunstein! Welchen Compiler benutzt du? Der MSVC8 benutzt gutgemeint die Secure-Lib, d.h. es wird ALLES überprüft, was schief gehen könnte. Kann man aber abschalten. Siehe den verlinkten Thread.
EDIT: Naja, daaaamals auf dem BCB4.
Probier es heute einfach nochmal aus, mit ner vernünftigen Implementierung. 
-
Mach ich vielleicht sogar mal.

Ich habe jetzt hauptsächlich den BCB2007 im Einsatz. Der soll ja deutlich standardkonformer sein.