Re: Schnelle Variante, um Zeilen in einer Textdatei zuzählen
- From: "Ingo R. Homann" <ihomann_spam@xxxxxx>
- Date: Fri, 09 Nov 2007 15:39:25 +0100
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
.
- Follow-Ups:
- Re: Schnelle Variante, um Zeilen in einer Textdatei zuzählen
- From: Florian Weimer
- Re: Schnelle Variante, um Zeilen in einer Textdatei zuzählen
- From: Bernd Eckenfels
- Re: Schnelle Variante, um Zeilen in einer Textdatei zuzählen
- References:
- Re: Schnelle Variante, um Zeilen in einer Textdatei zuzählen
- From: Hubert Partl
- Re: Schnelle Variante, um Zeilen in einer Textdatei zuzählen
- Prev by Date: Re: Schnelle Variante, um Zeilen in einer Textdatei zuzählen
- Next by Date: Anpassen eines Knotens im JTree
- Previous by thread: Re: Schnelle Variante, um Zeilen in einer Textdatei zuzählen
- Next by thread: Re: Schnelle Variante, um Zeilen in einer Textdatei zuzählen
- Index(es):