Einzelnen Beitrag anzeigen
  #12 (permalink)  
Alt 16-03-2013, 22:19
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von Melewo Beitrag anzeigen
...
Falls ja, habe zwischenzeitlich mit einem kleinen Tutorial begonnen:

OOP: Klasse zum Auslesen (rückwärts) von umfangreichen CSV-Dateien | Coder-Welten.de ...
Nett. Es gibt aber einen kleinen Haken. Verwendest du fgets() mit Angabe der Puffer-Größe, bricht die Funktion unter Umständen ab, bevor ein Zeilenumbruch gelesen wurde. Das dürfte bei CSV-Dateien dazu führen, dass dieser und der nächste Datensatz unbrauchbar werden.

Zitat:
Zitat von andygyr Beitrag anzeigen
... Ist schade dass es keine direkte PHP Funktion für das gibt. ...
Dafür sind Programmiersprachen im Allgemeinen da: um sich seine eigenen Funktionen, zugeschnitten auf die konkrete Aufgabe, zu zimmern.

Zitat:
... rund 12'800 Zeilen. (Für jeden Handelstag eine Zeile)
Wenn ich da die Daten in ein Array lese, das Array umdrehe und mit einem foreach durchgehe und ausgebe, inkl. str_getcsv und print_r brauche ich dafür ca. 5 Sekunden, vobei die dauer für print_r in etwa meinem Vorhaben entsprechen wird.
Das Einlesen von Festplatten dauert seine Zeit, besonders, wenn es zeilenweise geschieht: Intern holt fgets() die Daten Byte für Byte statt in Blöcken, weil es jedesmal nachschaut, wann ein Zeilenumbruch-Zeichen kommt.

Auch das "Umwenden" des Arrays ist zeitaufwändig. Wie du schon zweimal gesagt bekommen hast, ist das nicht unbedingt nötig: Du kannst ein Array auch von hinten nach vorne durchlaufen.

Und die Ausgabe (im Browser?) kann auch dauern. Da die Menge der Daten nicht von vornherein bekannt, werden Puffer reserviert, gefüllt und Daten hin- und herkopiert.

Um herauszubekommen, wo du den Vorgang optimieren kannst, teste mal die Laufzeit einmal ohne Ausgabe mit print_r() und einmal ohne das Array umzukehren.

Zitat:
Leider werden die anzahl Handelstage auch nicht weniger sondern immer mehr.
Langfristig wird dir daher jeder zu einer echten Datenbank (statt CSV-Files) raten. Da kannst du die Datensätze in der vorliegenden Reihenfolge ein- und zur Auswertung andersherum wieder auslesen ("... order by <timestamp> desc").

Für den Anfang tut es SQLite, das kann seine Datenbanken auf Anforderung komplett im Hauptspeicher halten, so lange sie dort reinpassen.
Mit Zitat antworten