Hello,
das nochmalige Lesen des Threads zum Thema "Konkurrierende Dateizugriffe", in dem ich im wesentlichen mit Andreas Lindig konfereiert habe, hat mich bezüglich unserer datanverändernden Funktionen
flat_rec_insert()
flat_rec_update()
flat_rec_delete()
noch auf eine Optimierungsidee gebracht. Die wesentlichen Zeitfresser sind nach eingehender Untersuchung die Basic-IO-Zugirffe, also das Lesen und Schreiben in Dateien sowie die Ausgabe auf die Standardausgabe (echo, print). Alle anderen Prozesse (Suchen von Datensätzen mittels next(), prev(), die gzfunktionen, das Umkopieren von Arrays usw.) laufen sehr schnell ab und sind auch bei großen Datenmengen mindestens um den Faktor 50 schneller gewesen, als die Lese-/Schreibprozesse.
Wenn wir also bei den o.a. Funktionen feststellen können, dass überhaupt kein Datensatz asu dem File verändert wurde, brauchen wir die Daten weder neu zu serialisieren, noch zurückzuschreiben, denn die Datei wird ja nicht verändert. Das bedeutet also, dass unsere Funktionen dann bei gleichen Versuchsbedingungen nicht für ca. 10 Aufrufe pro Sekunde gut sind, sondern vielelciht für 15 oder mehr. Ich vermute, dass das Scheiben in Files ungefähr doppelt soviel Zeit in Anspruch nimmt, wie das Lesen.
Liebe Grüße aus http://www.braunschweig.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau