Performance string / char*



  • Wenn ich eine Zeichenkette, und ich diese sehr oft erweitern und dabei umkopieren muss, welche der beiden Methoden ist dann günstiger: a) Das ganze mit der String-Klasse lösen. b) ein Char-Array, dessen Größe ich per realloc ständig erweitere?



  • Kommt drauf an, ob std::string das geeignetere Allokations-Verhalten hat oder du ein geeigneteres implementierst. Du kannst beim std::string zumindest davon ausgehen, dass du mit null Arbeit schon mal was sehr gutes bekommst.

    "Günstiger" hast du nicht näher spezifiziert, daher ist eine konkretere Antwort kaum möglich.



  • codekasper schrieb:

    Wenn ich eine Zeichenkette, und ich diese sehr oft erweitern und dabei umkopieren muss, welche der beiden Methoden ist dann günstiger: a) Das ganze mit der String-Klasse lösen. b) ein Char-Array, dessen Größe ich per realloc ständig erweitere?

    kommt drauf an.

    a.1) string sql="select "+field+" from "+table;
    da ist string nicht fein. es werden 4 strings erzeugt und drei gelöscht.
    a.2) das gleiche mit char* (aber im voraus genug speicher angelegt und strcat) ist besser. leider hat strcat innendrin immer strlen-aufrufe.
    a.3) wenn man sich auch die schreibposition merkt, isses fein.
    a.4) dann kann man aber auch string und += nehmen und das ist genauso fein. und sicherer.
    a) string gewinnt.

    ich weiß aber nicht, welche operationen es genau sind, die du machen wirst.


Anmelden zum Antworten