A
Axel Panning
Hallo,
ich hab bei einem Programm bei mir festgestellt, daß das "deleten" von
Feldern erheblich länger dauert, als das Anlegen von Feldern. p. Bei
einem Programm von mir werden oft große Datenfelder unterschiedlicher
Größe angelegt und wieder gelöscht. Daher ist dieser Umstand sehr ungünstig.
Ist das Normal, daß der Unterschied bei Faktor 10-20 liegt? Oder begehe
ich hier an irgendeiner Stelle einen grundlegenden Fehler!?
Danke für die Hilfe.
Gruß Axel
code:
QTime t;
t.start();
double** data = new double*[1300];
for (int i=0;i<1300;i++) data = new double[1300];
cout << "needed to create: " << t.elapsed() << " mseconds"<<endl;
t.start();
for (int j=0;j<1300;j++) delete [] data[j];
delete [] data;
cout << "needed to delete: " << t.elapsed() << " mseconds"<<endl;
Programm Ausgabe (auf AthloxXP1800, kompiliert mit MS-VC6 - release,
optimiert auf Geschwindigkeit):
needed to create: 31 mseconds
needed to delete: 484 mseconds
ich hab bei einem Programm bei mir festgestellt, daß das "deleten" von
Feldern erheblich länger dauert, als das Anlegen von Feldern. p. Bei
einem Programm von mir werden oft große Datenfelder unterschiedlicher
Größe angelegt und wieder gelöscht. Daher ist dieser Umstand sehr ungünstig.
Ist das Normal, daß der Unterschied bei Faktor 10-20 liegt? Oder begehe
ich hier an irgendeiner Stelle einen grundlegenden Fehler!?
Danke für die Hilfe.
Gruß Axel
code:
QTime t;
t.start();
double** data = new double*[1300];
for (int i=0;i<1300;i++) data = new double[1300];
cout << "needed to create: " << t.elapsed() << " mseconds"<<endl;
t.start();
for (int j=0;j<1300;j++) delete [] data[j];
delete [] data;
cout << "needed to delete: " << t.elapsed() << " mseconds"<<endl;
Programm Ausgabe (auf AthloxXP1800, kompiliert mit MS-VC6 - release,
optimiert auf Geschwindigkeit):
needed to create: 31 mseconds
needed to delete: 484 mseconds