Re: Schnelle Variante, um Zeilen in einer Textdatei zuzählen



Hi,

Hubert Partl schrieb:
bisher verwende ich einen BufferedReader und rufe so lange readLine

Die Datei blockweise in ein byte[] lesen und dort mit einem Mini-DFA
nach den Zeilenenden suchen.

Ich haette gedacht, dass BufferedReader und readLine() genau das machen
und er damit nur das Rad neu erfinden wuerde.

Wo ist mein Irrtum?

Vermutlich hast Du gar keinen.

Was in diesem Thread einfach noch nicht explizit gesagt (sondern nur angedeutet und vielleicht nicht klar genug heraus gestellt wurde), ist, dass das Laufzeitverhalten grundsätzlich linear mit der Dateigröße steigt, also O(n) beträgt, und sich die Komplexität Problem-bedingt nicht reduzieren lässt. Viele der Vorschläge (so auch dieser) versuchen, den "konstanten Faktor" durch Mikro-Optimierungen zu reduzieren, aber (und das wurde allerdings tatsächlich bereits gesagt) das ist natürlich nur Makulatur und wird vermutlich nicht viel bringen.

Kurz: Der von Chris verwendete "Algorithmus" ist quasi schon optimal. Nix zu machen.

Wenn die Dateigröße mehrfach abgefragt wird, kann man natürlich die Zeilenzahl irgendwie cachen o.ä., aber dass diese Voraussetzungen gegeben sind, davon würde ich erstmal nicht ausgehen.

Ciao,
Ingo

.