map schneller als array?



  • Hallo,

    ich laufe in einer schleife die ca. 800 000 iterationen macht.
    Dort greife ich auf ein array derselben grösse zu über array[idx + offset] hole
    ich mir werte aus dem array.
    Jetzt ist mir das zu langsam. Kann es sein wenn ich statt dess arrays nun eine einfach map benutze dies schneller wird? Oder überseh ich da was. Ich dachte bei hashes sind die zugriffe schneller?!?

    Danke für hilfe!



  • Willst du wissen, ob der Indexzugriff über ein Array schneller ist wie der Zugriff über die Map?



  • ja richtig 🙂



  • und da wir schon dabei sind...
    noch ne frage...ist der zugriff auf ein statisches array schneller als auf einen std::vector<int> ? Oder ist das gleich schnell?



  • Ein Arrayzugriff über den Index ist immer schneller oder gleichschnell wie der Zugriff auf eine Map

    Ein Arrayzugriff ist ja nur eine Addition auf eine bestimmte Adresse, die dann auf das spezifische Arrayelement verweist

    Eine Map kann z. B. Auch ein Array sein mit einem Hashingalgorithmus - das heißt für den Zugriff auf das Array kostet was (genauso viel wie nur Array) + die Berechnung des Hashwertes + auflösen von eventuellen Kollisionen usw. was beim Hashing so alles halt passieren kann



  • und da wir schon dabei sind...
    noch ne frage...ist der zugriff auf ein statisches array schneller als auf einen std::vector<int> ? Oder ist das gleich schnell?

    das kommt auf den Compiler drauf an



  • Jo, und auf die Implementierung der STL. Im allgemeinen wird das aber in etwa gleichschnell sein.

    Du hast hoffentlich im Release-Modus Deine Messungen gemacht?

    Ansonsten kannst Du vielleicht mal verraten, was Du in etwa machen willst? Vielleicht gibt's dafür ein effizienteres Verfahren? Am reinen Zugriff wirste nicht viel ändern können.

    edit: einmal reicht. Du brauchst die Frage nicht in mehrere Subforen stellen, da kommt man sich sonst irgendwie verarscht vor.



  • Dieser Thread wurde von Moderator/in rapso aus dem Forum Spiele-/Grafikprogrammierung in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Also, nur so als Frage, du tust bei den Iterationen aber keine einfüge Operationen
    in den vector vornehmen, oder?
    Und, kannst du uns evtl. mal den Code zeigen?


Anmelden zum Antworten