HI,
ich bin auf der suche nach einer performanten (im sinne von geschwindigkeit) Suchmoeglichkeit in grossen dateien.
Ich habe folgendes:
Eine 1.5Gb grosse tab-delimited text datei in der einfache Strings stehen ala
nun will ich eine suche implementieren die eine beliebige ID bekommt und die entsprechende Zeile der Datei ausgibt.
Die simpelste Loesung ist zeilenweise die datei einzulesen und ueber contains abzufragen, was aber schon 2min dauern kann.
Eine idee die ich hatte war das file in x files zu splitten (nach z.b. 100000 zeilen) und fuer jede dieser datei einen eigenen Thread zu starten, der auch wiederum zeilenweise seine datei durchliest. Findet ein Thread den Suchbegriff, so stoppen alle anderen und die zeile wird zurueckgegeben.
Nun ist es aber so, je mehr threads ich starte, desto laenger braucht er a) das ganze System zu starten (bis alle threads laufen) und b) die einzelenen leseoperationen scheinen laenger zu dauern. Je weniger Threads ich habe desto groesser sind die dateien und ich komme wieder an loesung 1 ran.
und auch hier ist es so, dass wenn der suchbegriff weit unten in irgendeiner datei steckt das suchen 20-30 sekunden dauern kann.
Nun meine Frage - muss ich damit leben oder hat jemand eine tolle Idee, wie ich eine performantere suche implementieren kann ? bin fuer jeden vorschlag offen
Ich kann ohne probleme das file vorher prozessieren, die suche selber sollte nur so schnell wie moeglich sein.
Eine DB zu nutzen waere der letzte ausweg ....
danke euch vielmals !
Gras
ich bin auf der suche nach einer performanten (im sinne von geschwindigkeit) Suchmoeglichkeit in grossen dateien.
Ich habe folgendes:
Eine 1.5Gb grosse tab-delimited text datei in der einfache Strings stehen ala
Code:
ID1_1 ID1_2 ID1_3 ID1_4 ....
ID2_1 ID2_2 ID2_3 ID2_4 ....
ID3_1 ID3_2 ID3_3 ID3_4 ....
nun will ich eine suche implementieren die eine beliebige ID bekommt und die entsprechende Zeile der Datei ausgibt.
Die simpelste Loesung ist zeilenweise die datei einzulesen und ueber contains abzufragen, was aber schon 2min dauern kann.
Eine idee die ich hatte war das file in x files zu splitten (nach z.b. 100000 zeilen) und fuer jede dieser datei einen eigenen Thread zu starten, der auch wiederum zeilenweise seine datei durchliest. Findet ein Thread den Suchbegriff, so stoppen alle anderen und die zeile wird zurueckgegeben.
Nun ist es aber so, je mehr threads ich starte, desto laenger braucht er a) das ganze System zu starten (bis alle threads laufen) und b) die einzelenen leseoperationen scheinen laenger zu dauern. Je weniger Threads ich habe desto groesser sind die dateien und ich komme wieder an loesung 1 ran.
und auch hier ist es so, dass wenn der suchbegriff weit unten in irgendeiner datei steckt das suchen 20-30 sekunden dauern kann.
Nun meine Frage - muss ich damit leben oder hat jemand eine tolle Idee, wie ich eine performantere suche implementieren kann ? bin fuer jeden vorschlag offen
Ich kann ohne probleme das file vorher prozessieren, die suche selber sollte nur so schnell wie moeglich sein.
Eine DB zu nutzen waere der letzte ausweg ....
danke euch vielmals !
Gras