015
17.06.2003, 16:17 Uhr
ao
(Operator)
|
Zitat: |
~0xdeadbeef postete Geht natürlich auch, aber dann wird jedesmal wieder Speicher angefordert, Konstruktor ausgeführt, Destruktor ausgeführt und Speicher freigegeben - das kostet Rechenzeit.
|
Erstens stimmt das so nicht; die laufzeitmäßig "teure" Aktion ist das Belegen und Freigeben des Speichers, in das der Filename eingetragen wird und das Reinkopieren der Daten, und das wird in beiden Fällen gemacht. Der Default-c'tor ist dagegen vergleichsweise billig.
Zweitens ist der Code mit dem lokalen ostringstream-Objekt übersichtlicher und besser zu lesen. Es ist immer schlecht, wenn man sich merken muß, daß Str ein "überlebendes" Objekt ist, daß vor der Benutzung re-initialisiert werden muß. Sobald man genügend von diesen Kleinigkeiten im Kopf hat, fängt man an, welche zu vergessen. Daraus resultieren Programmierfehler, und die machen ein Projekt schnell richtig teuer.
Besser als solche "Mikro-Optimierungen" ist, das Programm übersichtlich zu designen, fertig zu bauen und wenn es läuft, zu profilen. Erst dann siehst du wirklich, wo wieviel Zeit verbraten wird und ob es überhaupt nötig ist zu optimieren und wenn ja, wo.
ao |