V
mirco schrieb:
Ist die STL wirklich soooo langsam?
nein. für allgemeine sachen ist sie praktisch nicht zu überbieten. für viele jedes spezielle probleme kann man aber was bauen, was 5% schneller ist.
Im speziellen geht es um GROSSE Matrizen und mehrdimensionale Datenfelder.
wie voll?
Ist die Bearbeitung und Speicherung mit Containern wesentlich langsamer als mit Zeigern?
Bsp.:
vector< vector<double> > stlMatrix;
double **matrix;
nein, nicht wesentlich lahmer. wenn der speicher erstmal angelegt ist, dann ist der zugriff auf ein vector-element innendrin ja auch nur der zugriff über einen zeiger. ich würde sogar sagen, sie sind gleich schnell.
sobald man näheres über die daten weiß, kann man vesuchen, eine spezielle implemetierung zu suchen, die die allgemeine plattmacht. sind zum beispiel die matrizen sehr dünn besetzt? dann ietet sich ne hashtable an, die indexpaare auf die daten mappt. ist die matrix symmentrisch (evtl adjazenzmatrix), dann kann man 50% speicher sparen, vielleicht ist die matrix ja so groß, daß es was bringt. können die demensionen ner matrix zu compilezeit bestimmt werden? dann lohnt sich immerein seitenblich nach blitz++.
außerdem noch überlegen, ob mal double** (beim zugiff zweimal indirektion) oder double*(beim zurgiff einmal multiplikation und einmal indirektion) haben mag.