Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Verwendung von Containern zeitkritisch?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
26.01.2007, 14:35 Uhr
derphilipder



Ich habe eine große Menge an Int-Werten, mit denen ich möglichst schnell arbeiten will.
Das Verwenden von z.B. std::vector ist natürlich recht bequem, gegenüber einem Array, das ich selbst verwalten muss. Aber wie siehts da mit der Performance aus? Ist es wesentlich schneller, wenn ichs von Hand mache?
--
Konfuzius says: "A man who goes to bed with an itchy asshole is a man who wakes up with stinky finger!"
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.01.2007, 15:52 Uhr
virtual
Sexiest Bit alive
(Operator)


Der Performanceunterschied bei Zugriffen auf std::vector bzgl array ist nicht messbar. Im aller ungünstigsten Fall kann der Compiler aus irgendeinem Grund den op[] beim Vector nicht inlinen, dann verlierst Du vielleicht ein oder zwei Prozessorzyklen. Ist mir aber noch nicht vorgekommen .
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.01.2007, 18:19 Uhr
stephanw
localhorst


Ein Vector hat doch als Standard nur Platz für 10 (?) Elemente. Liegt der interne Speicher eines lokalen Vectors (auto-Variable) mit auf dem Stack ? Wo liegt der, wenn er nachträglich vergrößert wird ?
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.01.2007, 19:05 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat von stephanw:
Ein Vector hat doch als Standard nur Platz für 10 (?) Elemente.


Wie kommst Du zu dieser These?
Denkar wäre, daß ein Vektor für X Elemente direkt in seiner Struktur Platz hat und dann, falls es mehr Elemente würden, den Speciher dynamisch alloziert. Dies ist aber keineswegs in irgendeiner Form standardisiert.

Zitat von stephanw:

Liegt der interne Speicher eines lokalen Vectors (auto-Variable) mit auf dem Stack ? Wo liegt der, wenn er nachträglich vergrößert wird ?



Generell wird der Speicher bei Vektoren mittels allocatoren Belegt, welche letztlich auch nichts anderes machen, als Heap Speicher zu besorgen. Dies ist im Übrigen der Weg, den man auch im Falle von Arrays gehen muß, wenn diese dynamisch sind.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
26.01.2007, 23:47 Uhr
derphilipder



Ok, thx!
--
Konfuzius says: "A man who goes to bed with an itchy asshole is a man who wakes up with stinky finger!"
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
28.01.2007, 23:25 Uhr
stephanw
localhorst


@virtual: ja, ok... ich weiß auch nicht mehr, woher ich das über die Default-Größe "wusste". Das habe ich wohl mal irgendwo gelesen und nie drüber nachgedacht. Und das mit dem Vergrößern hätte ich mir auch selbst beantworten können. Daher gebe ich zu, dass ich dieses Verkehrsschild nicht beachtet habe ;-)

--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: