Geschwindigkeit C vs. C++

Jennesta

Erfahrenes Mitglied
Hallo Leute,

mir stellt sich gerade die Frage, welche Variante meiner Implementierung schneller sein wird.
Einmal habe ich es mit fstream realisiert und einmal mit fscanf. Bei kleinen Datenmengen fällt es nicht sonderlich auf, daher habe ich auch durch 'clock()' nicht viel erkennen können. Da ich später aber 100-200GB an Dateien abgrasen werde, wäre es mir schon wichtig die schnellste Methode zu nutzen.

Hier mal ein Auszug der Funktionen:

Code:
while(!in.eof()) {
		for(i=0; i<4; i++) {
			in >> a[k][i];
			in >> c;
		}
		in >> a[k][i];
		k++;
	}

Code:
while (!feof(pfile)) {
		fscanf(pfile, "%lf, %lf, %lf, %lf, %lf", &a[i][0], &a[i][1], &a[i][2], &a[i][3], &a[i][4]);
	}

Schonmal Danke für Hilfe.
Grüße Jennesta
 
Hallo Jennesta,

im Allgemeinen sind scanf & Co. schneller als die iostream-Varianten. Es kommt natürlich immer auch auf den konkreten Anwendungsfall an.

Dein C++-Beispiel kann unter Umständen auch sehr lange dauern, da bei einem Einlesefehler eine Endlosschleife entsteht. Die erste Zeile sollte
C++:
while (in) {
lauten.

Grüße,
Matthias
 
Danke für die schnelle Antwort.
Das mit scanf etc. habe ich mir schon fast gedacht, aber gut das auch von anderer Seite zu hören.

Achja, und danke für den Hinweis mit dem eof, werde ich mir hoffentlich merken :)

Grüße Jennesta
 
Zurück