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
-
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
-
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?
-
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).