S
Optimizer schrieb:
Angenommen, COW würde verwendet werden, dann würde ja genau das kopieren, auf das du dich so fixierst, entfallen. Dann müsste das gar nicht erst wegoptimiert werden.
Sag mal, reden wir hier vom selben?
Er _muss_ es kopieren, auch bei COW - denn sonst wäre folgendes ein bisschen sehr komisch:
char s[]="hallo";
string s2(s);
s[1]='e';
cout<<s2;
und schon hat sich s2 verändert...
Ich glaube eher, du willst nicht zuhören.
Teste es einfach, dann siehst du, dass ich recht habe.
Und genau dafür gibt es strcmp() in C (ohne ++).
Blödsinn.
Denn dann gibt es auch keine char* in C (ohne ++).
Natürlich ist es deshalb kein Verbrechen, strcmp() zu verwenden, aber warum sollte es dann eins sein operator== zu verwenden?
Weil es um den Faktor 10 langsamer ist?
Zumal ja auch Stroustrup empfielt, die C-Funktionen zu meiden.
Ich glaube du willst nicht verstehe - ich gebe hiermit auf.
verwende einfach was du willst. Ich habe genug erklärt damit jeder der es will verstehen kann - wenn es jemand nicht verstehen will, kann ich auch nix dafür.
Ich würde ja noch sagen, dass man im Zweifelsfall ein paar Messungen durchführen kann
Dann mach das doch einfach. Ich habe auf 4 Compilern gemessen - der Unterschied war etwa Faktor 7 bis 11.
Und wenn du
string("s")==buffer
für klarer hältst als
!strcmp("s", buffer)
dann solltest du nochmal n bisschen lernen gehen.
wenn man buffer als char* hat - dann hat man sich bereits entschieden char* zu verwenden, sonst würde ich ja gleich eine ordentliche klasse verwenden.