optimierung bei containern



  • hallo

    was war noch gleich der fachbegriff für die stl optimierung, dass z.b. ein string erst dann wirklich kopiert wird wenn sich eine der beiden instanzen ändert?

    gruss



  • copy-on-write



  • Copy on write (COW)



  • achja... danke


  • Mod

    CoW hat an sich nichts mit der STL zu tun, ist bloß eine übliche Optimierung, die auch in vielen STL-Implementierungen benutzt wird. Oder wurde. Denn seit C++11 ist sie quasi verboten, die Implementierungen müssen bloß noch nachziehen. Der neue Kandidat für die Standardoptimierung ist wohl short string optimization. Die ist auch besser für Multithreading ausgelegt, was wohl auch ein/der Grund ist, wieso CoW in Ungnade gefallen ist:
    http://www.gotw.ca/publications/optimizations.htm


  • Mod

    SeppJ schrieb:

    Der neue Kandidat für die Standardoptimierung ist wohl short string optimization.

    Wobei diese Optimierung tatsächlich nur bei basic_string eingesetzt werden kann und nicht auch allgemein bei richtigen Containern (ok, ggf. auch bei vector mit gutartigen (=trivialen) Typen).



  • camper schrieb:

    SeppJ schrieb:

    Der neue Kandidat für die Standardoptimierung ist wohl short string optimization.

    Wobei diese Optimierung tatsächlich nur bei basic_string eingesetzt werden kann und nicht auch allgemein bei richtigen Containern (ok, ggf. auch bei vector mit gutartigen (=trivialen) Typen).

    Aus Interesse, warum? Und geht SSO auch mit eigenen Allokatoren?


  • Mod

    passant schrieb:

    camper schrieb:

    SeppJ schrieb:

    Der neue Kandidat für die Standardoptimierung ist wohl short string optimization.

    Wobei diese Optimierung tatsächlich nur bei basic_string eingesetzt werden kann und nicht auch allgemein bei richtigen Containern (ok, ggf. auch bei vector mit gutartigen (=trivialen) Typen).

    Aus Interesse, warum? Und geht SSO auch mit eigenen Allokatoren?

    Korrektur: SSO geht in keinem Fall bei richtigen Containern, weil Iteratoren auf Elemente bei swap stabil bleiben (23.2.1/8).


Log in to reply