Hier wurde es bereits von wahsaga angesprochen, aber ich wiederhole es mal etwas ausführlicher:
Sobald die Datei, die du einliest, eine gewisse Größe erreicht und es keinen Grund gibt, ihren gesamten Inhalt im Speicher zu halten (zum Beispiel, weil du nicht alle Werte ausgeben, sondern nur eine Statistik daraus erstellen willst -- keine Ahnung, kommt auf die Anwendung an), fallen file() und file_get_contents() sowieso raus, weil sie alles gleichzeitig in den Speicher schaufeln, was einfach nur entsetzlich ineffizient ist. Die Frage nach der Geschwindigkeit ist vielleicht einfach nicht die richtige.
Wenn die Einträge der Datei in etwa gleich lang sind und du bestimmte Zeilen/"Datensätze" aus einer Datei auslesen möchtest, könnte es sich lohnen, darüber nachzudenken, den Inhalt der Datei in Blocks identischer Länge zu organisieren. Du verlängerst jeden Eintrag durch Anhängen von Leerzeichen künstlich auf eine Länge von DATENSATZLÄNGE Zeichen/Bytes, bevor du ihn in die Datei schreibst.
Selbst wenn dabei Speicherplatz ungenutzt bleibt, weil nicht jeder Datensatz zwangsläufig die zugedachte Maximallänge ausfüllt, kann man so per fseek() mit DATENSATZLÄNGE * DATENSATZNR ruckzuck an die Stelle des n-ten Eintrags springen (das ist grob gesagt das, was Datenbanken machen). Zudem liefert dir dann filesize() / DATENSATZLÄNGE die Anzahl der Einträge in der Datei, sodass du auch einfach an die letzten drei rankommen würdest.
Allein die Geschwindigkeit von file(), file_get_contents() und fopen() zu vergleichen, ist wenig aussagekräftig, da die Funktionen unterschiedliche Aufgaben erfüllen.
Noch ein
hübsches Zitat zum Thema "kurzer Code" von Aaron Seigo (einem der maßgeblichen Entwickler von KDE). Es passt hier nicht hundertprozentig, aber ich mag den "Don't get clever"-Teil.
Zitat:
|
Zitat von Aaron Seigo
- Don't get clever: You may [have] some super duper clever way of doing something, but if it comes at the cost of code readability think twice. If it doesn't really gain you all that much pass on the opportunity to be clever. Keep it simple and the people who come after you will love you for it.
- Document your cleverness: There are times you have no choice but to be clever. Some problems are just not easy to solve and to be solved well they require non-trivial code. When that happens, be sure to leave meaningful comments in the code so people can understand your cleverness.
|