2017-08-19 2 views
1

Wir haben zwei Arten von DateienWie finden Sie die Unterschiede in großen Textdateien?

  1. einzige große Datei, die einige Datensätze mit einem Buchungscode hat - diese Dateigröße beträgt etwa 20 MB

    AMMA-08/17/2017 00.02: 06-EZZE20170819010101

    AMMA-08/17/2017 12: 02: 06-EZZE20170819020202

  2. Sets von mehreren Dateien, die wie unten Aufzeichnungen haben - Diese Datei wird um 20K-30K Aufzeichnungen

    000003 | EZZE20170819010101 | 16082017 | Hallo michael

    000003 | EZZE20170819070707 | 16082017 | Hallo Jackson

Ich habe die unerreichte Datensätze in den separaten Dateien (EZZE20170819020202 und EZZE20170819070707) aufzulisten.

Dateien haben eine riesige Größe und ich muss jeden Datensatz aufteilen, um den CODE zu erhalten, der mit dem CODE in einer anderen Datei abgeglichen wird. Ich mache mir Sorgen über Leistung und CPU-Auslastung.

Gibt es eine Strategie oder eine vorhandene Bibliothek (in Java oder einer anderen Technologie), die ähnliche Funktionen bietet?

+4

20 MB = riesig? Welches OS, wie viel RAM und welche CPU hast du, um die du dir Sorgen machst? Habe gerade versucht, es einfach umzusetzen? –

+1

Askig für Bibliotheken ist off-topic. –

+1

haben Sie Regex versucht? – techprat

Antwort

0

Es sollte kein Speicherproblem geben, wenn Sie einen anständig großen Puffer verwenden (ich würde mindestens 1-20 MB verwenden, um sicherzustellen, dass die HD hauptsächlich sequenziell liest und schreibt).

Wenn Sie mehr als 2 Dateien gleichzeitig haben, müssen Sie Threads verwenden, um die Zeit zu verringern.

Wenn die Geschwindigkeit ein Problem ist, können Sie sich auch die Pakete java.nio ansehen - es wird schneller sein als java.io library. Sie können die Website überprüfen https://dzone.com/articles/java-sequential-io-performance

+0

Warum lassen Sie den Betriebssystem Dateisystemtreiber die Datei nicht puffern? Die Site, mit der Sie verlinkt haben, zeigt deutlich, dass eine gepufferte Klasse nicht viel Leistung bringt. Auf der 400 MB-Datei ist die Leistung noch schlechter. –

+0

@ dr-geek: Danke, es ist fertig. hat meinen Kommentar in der obigen Antwort hinzugefügt. –

Verwandte Themen