Hi,
Prinzipiell stimme ich Dir da zu. Allerdings halten Mechanismen, wie Caching, Buffering und ähnliche dagegen. Ob nun die Verwendung einer DB die bessere Lösung ist, ist auch von vielen Faktoren abhängig.
ja. Zusammengefasst wäre IMHO folgendes richtig: Das jeweilige Vorgehen ist immer vom individuellen Umfeld und den Bedingungen abhängig. Konform?
Ob es hier überhaupt eone generelle Vorgehensempfehlung geben kann, wage ich zu bezweifeln.
Sicher nicht. Ich halte es jedoch für einen schwerwiegenden Fehler, _gerade_ in Unkenntnis der exakten Sachlage das in den meisten Fällen schlechtestmögliche Vorgehen zu empfehlen, zumal in der Pauschalität.
Fakt ist jedenfalls, dass in der Praxis CSV-Dateien bis ca. 200kByte "locker" mit der Arraytechnik verarbeitet werden können, und dies auch keine unangemessene Last Für die maschine darstellt.
Dieser Fakt hängt unmittelbar davon ab, was mit "der" Praxis gemeint ist. Ändern sich die Daten beispielsweise stark, oder die Funktion wird viele Male pro Sekunde aufgerufen, oder der Vorgang wird mit vielen Dateien durchgeführt, oder ... (usw.), dann ist dieses Vorgehen ein absoluter Killer.
Die sparsamste Methose (nicht für den Speicher, sondern für die Verarbeitungsdauer) ist, die gesamte Datei auf einmal einzulesen,
Erwartest Du die Information statistisch verteilt, potenziell am Ende der Datei, potenziell am Anfang, potenziell gar nicht? Auch(!) hiervon hängt die Lösung ab. Die sparsamste Methode könnte ohne weiteres der Aufruf eines Systemprogramms wie z.B. grep
sein. Ich könnte mir sogar den Fall vorstellen, dass die sparsamste Methode darin besteht, die Datei in eine temporäre DB-Tabelle zu übertragen und dort eine Abfrage durchzuführen.
Nein, das komplette Einlesen einer Datei, von der man nur Bruchstücke benötigt, ist in aller Regel ein Fehler. In Einzelfällen ist es die bestmögliche Lösung, ohne Zweifel. Dieses Vorgehen pauschal zu empfehlen, insbesondere ohne auf die immensen Gefahren hinzuweisen, halte ich jedoch für grob fahrlässig. Das "klassische" Vorgehen, die Daten zeilenweise zu verarbeiten, bis das Ergebnis gefunden wurde, mag im Durchschnitt eine schlechtere Performance bieten - es ist jedoch, wenn jede Zeile nur für sich betrachtet werden muss, _immer_ praktisch völlig gefahrlos.
Cheatah
X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
X-Will-Answer-Email: No
X-Please-Search-Archive-First: Absolutely Yes