2010-12-08 7 views
0

Ich möchte Wörter Vorkommen in einer Reihe von Nur-Text-Dateien zählen. Genau wie hier http://doc.trolltech.com/4.5/qtconcurrent-wordcount-main-cpp.htmlC++ Qt WordCount und große Datensätze

Das Problem ist, dass ich sehr große Menge an einfachen Textdateien verarbeiten muss - so konnte mein Ergebnis in QMap nicht in den Speicher passen.

Ich googelte externen Speicher (dateibasiert) merge Sortieralgorithmus, aber ich bin zu faul, mich selbst zu implementieren. Also möchte ich die Ergebnismenge durch Teile teilen, um sie in den Speicher zu passen. Speichern Sie dann diese Teile in Dateien auf der Festplatte. Dann rufen Sie die magische Funktion mergeSort (QList, result_file) auf und haben das Endergebnis in result_file.

Kennt jemand Qt kompatible Umsetzung dieses Algo?

Kurz gesagt, ich suche nach Pythons heapq.merge (http://docs.python.org/library/heapq.html#heapq.merge) analog aber für Qt-Container.

Antwort

0

könnten Sie wollen diese ein Check-out: http://stxxl.sourceforge.net/

Es ist nicht genau das, was Sie suchen (nah genug obwohl), aber ich denke, Sie nicht genau das finden, was Sie wollen mit Qt-Listen arbeiten. Da Sie das Erstellen dieser Liste durch algoritm implementieren, sollte das Ändern des Typs kein Problem darstellen. Soweit ich mich an diese Liste erinnere, können Sie Standard-STL-Sortieralgorithmen verwenden. Das einzige Problem bleibt die Präformanz.

0

Ich nehme an, dass die Karte die Verbindung zwischen dem Wort und der Anzahl der Vorkommen enthält. Warum sagen Sie in diesem Fall, dass Sie so viel Speicher verbrauchen? Wie viele unterschiedliche Wörter und Formen könnten Sie haben und wie groß ist der durchschnittliche Speicherverbrauch für ein Wort?

Betrachtet man 1.000.000 Wörter, mit 1K Speicherverbrauch pro Wort (das enthält das Wort text, der QMap spezifische Speicher), würde das zu (ca.) 1GB Speicher führen, was ... nicht so viel erscheint mir.

Verwandte Themen