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.