Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
27.11.2002, 20:53
anothergb02



Simple Frage : Welche Variante ist schneller ?

In beiden Fällen soll ein Vektor als Beispiel dienen.

1 Fall:

Man benutzt zB. als Vektor ein ganz gewöhnlichen struct oder eine Klasse, der/die 3 Variablen beinhaltet (als Beispiel sei die struct Varriante gezeigt)
=>
--------------------
struct vector3_t {
double coord[3];
};
--------------------

2 Fall:

Man baut den Vektor per stack auf.
Hier benutze ich zur veranschaulichung vector.
=>
--------------------------
typedef vector<double>vector3_t
--------------------------

So und nun ist meine Frage, welche Varriante wäre in der Verarbeitung, Berrechnung ... schneller ?

--

Being in john Malkovich
.....

zum Seitenanfang zum Seitenende Profil || Suche
001
28.11.2002, 14:53
Prefect



Ich nehme mal an, du meinst im zweiten Fall das STL-Template std::vector

Das ist verdammt ineffizient wenn du schon zur Compilezeit weißt, wie groß ein Array werden soll. std::vector sieht nämlich letztendlich (ungefähr) so aus:

Quellcode:
class vector {
double *data; // Pointer auf die Daten
int size; // Anzahl Elemente im Array
int reserved; // Anzahl Elemente, für die Speicher reserviert ist
};

Du hast also zwei Speicherblöcke, einmal die Vektorklasse, und einmal die eigentlichen Vektordaten. Das ist doch ziemliche Verschwendung in diesem Fall.

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
002
28.11.2002, 16:41
Mazze



Es gibt allerdings auch noch ein anderes STL-Template namens valaray, das anscheinend schneller sein soll. Allerdings hab ich noch nie damit gearbeitet.

In Quake wird afaik für einen Vektor auch nur eine struct mit 3 Elementen verwendet.

cu
Matze

--

BattleTech-MOD:
http://bthl.unitedgaming.net/

zum Seitenanfang zum Seitenende Profil || Suche
003
28.11.2002, 22:15
anothergb02



k danke.
valaray werde ich gleich mal testen, das rechnet sich nämlich ziehmlich krass hoch, wenn du das mal durchrechnist, auch wenn der unterschied nur bei
10^7 s in der Berechnungszeit liegt.

--

Being in john Malkovich
.....


Dieser Beitrag wurde am 28.11.2002 um 22:18 von anothergb02 bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
004
28.11.2002, 23:31
Leviathan



@anothergb02: du meinst sicher 10^-7 s, zehn milliarden sekunden machen schon einen unterschied *g*.

und ich würde es mit einem struct machen, das reicht vollkommen aus, du hast die absolute kontrolle und es ist schnell implementiert.

--

Entities: HL | HL²
Kompilierfehler
r_speeds | mehr über r_speeds


Dieser Beitrag wurde am 28.11.2002 um 23:31 von Leviathan bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
005
29.11.2002, 10:45
King of Darkness



ist es denn dann auch schnell im zugriff und weis nich was noch

--

Coding Center --- Tutorials über Programmierung und andere Themen
Amazon Preisbeobachung mit Preisalarm

zum Seitenanfang zum Seitenende Profil || Suche
006
30.11.2002, 16:51
anothergb02



@King of Darkness
Es kam mir ja gerade auf die Zugriffsgeschwindigkeit an. Wenn es ein wenig länger dauert das Zeug in den Speicher zu legen ist das nicht so wild, haupsache das weiterläufige Verwalten ist schneller.
So wie es aber aussieht werde ich jetzt doch wieder mit struct arbeiten.
Gut Dank an euch alle nochmal bye.

--

Being in john Malkovich
.....

zum Seitenanfang zum Seitenende Profil || Suche