001
31.10.2006, 19:57 Uhr
stephanw
localhorst
|
Wenn 80 % der Zeit in Iteratoren stecken, heißt das nicht unbedingt, dass diese langsam sind. Es gibt noch ein paar andere Möglichkeiten: - es wird nicht der für den gewählten Algorithmus optimale Container verwendet (z.B. list oder map da, wo ein vector besser wäre) - es wird nicht der optimale Algorithmus benutzt (z.B. Ablegen und Suchen von Strings in vector statt einer map oder einer hash-table - es wird aus Versehen sinnlos (weiter-) iteriert - es wird viel im Freispeicher rumgesucht statt auf dem Stack (falls möglich)
Kannst Du das alles ausschließen ?
Zu Deinem Beispiel: ein Vector-Iterator etwa ist im Grunde ja auch nur ein nativer Pointer und ist daher auch genauso schnell. Evtl. ist ein Vector langsamer, wenn dieser seinen Speicher statt auf dem Stack eben auf dem Heap allokiert. Ob das so ist und ob man es vermeiden kann, weiß ich grad nicht und will ich auch nicht nachsehen, sonst schaff ich Ronin im Fernsehen nicht mehr ;-) -- Reden ist Schweigen und Silber ist Gold. |