Hallo,
ja ich denke das komplette einlesen ist weitaus schneller als
jede Zeile.
Wie kommst du denn auf diesen Trichter? Warum sollte es schneller
sein ca. 200MB (1,6 Mio. Zeilen, pro Zeile ca. 170 Byte) komplett in
den Speicher zu schreiben und dann da zu verarbeiten als 1,6 Mio mal
ca. 170 Bytes auszulesen und zu verarbeiten?
Du vergisst, dass der Speicher kein beliebig schnelles Medium ist.
Ganz im Gegenteil, bei der Kommunikation mit dem RAM ist sehr viel
Overhead enthalten. Mal ganz abgesehen davon dass das alloziieren
von 200MB Speicher auch sehr leicht in die Hose gehen kann.
Nene, wie immer gilt es einen Mittelweg zu finden. Zeichenweise
einzulesen ist sicher Quark. Aber die ganze Datei einzulesen ist
noch viel mehr Quark.
Ich würde hingegen nur die neuen Zeilen einlesen und die alten
irgendwo schon fertig bearbeitet ablegen.
Woher weisst du, dass es alte Zeilen gibt? :-)
Dafür, wie man an die Neuerungen kommt, gibt es sicher diverse
Lösungen, je nachdem wie sicher Du prüfen willst.
Alte groesse im Gedaechtnis behalten, neue Groesse in Erfahrung
bringen und per fseek() den Datei-Pointer an die richtige Stelle in
der Datei setzen.
Eine einfache wäre sicher sich die Zeilenanzahl zu merken und dann
von dort an immer weiterzuarbeiten und die Zeilenanzahl erhöhen.
Sinnlos. Dann muesste man ja die Zeilen trotzdem alle einlesen.
Ich denke so ist es am besten, denn C ist in deinem Fall
wahrscheinlich nicht in dem Maße schneller wie Du Dir das
vorstellst.
Das haengt davon ab, was in dem Script alles geschieht. Das sagte
ich ja bereits.
Gruesse,
CK