PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schlechte Performance mit fgets



nobody0
28-01-2005, 00:54
Um Dateien zu verarbeiten lese ich deren Namen so mit fgets ein:

Bash:
> find ./ -type f -print | dupmerge

dupmerge:


while (fgets (buf, sizeof (buf), stdin), !feof (stdin))
{
nfiles++;
if (EOF == fputs (buf, tmp))
{
(void) fprintf (stderr, "could not write to temporary file, exiting\n");
exit (-1);
}
}


aber das dauert bei nur 434730 Dateien schon 40 Minuten, in denen die Festplatten-LED dauernd an ist!
Das find ist hierbei nicht das Problem, wie mir top zeigt.

Was kann man da machen um das Einlesen der Dateinamen zu beschleunigen? :confused:

nobody0
28-01-2005, 08:28
Das Problem ist an anderer Stelle: Das angehängte | tee /tmp/d.txt verzögert die Ausgabe über eine halbe Stunde!

Edit: Mit
fflush(stdout);
ist das Problem beseitigt.