kann es sein, dass QRegExp sehr langsam ist? Ich habe eine TextDatei zeilenweise einzulesen und diverse Informationen daraus zu ziehen. Funktioniert eigentlich auch einwandfrei!
Die Datei hat gute 60.000 Zeilen und ist ca. 6 MB groß. Das einlesen der Datei geht sehr schnell! Die Werte ziehe ich mit dem langen Regulären Ausdruck raus und speichere diese in einer doppelt verketteten Datenstruktur ab. Also, die Struktur hat dann auch ca. 60.000 Elemente, da der Reguläre Ausdruck eigentlich auf jede Zeile matcht.
Die Schleife in der der Reguläre Ausdruck auf jede Zeile ausgeführt wird braucht ewig, ca. 3 Minuten. Das ist der Flaschenhals. Das einlesen der Datei geht in ms. Ebenso das komplette durchlaufen der Datenstruktur.
Hier mal den Code-Ausschnitt, der so lange braucht (bzw. wie ich den QRegExp verwende):
Code: Alles auswählen
QRegExp rx(".*\\d+,(-?\\d{1,3}),(-?\\d{1,3}),\\d+,\\d+,'([^']*)',(\\d+),'([^']*'),(\\d+),'([^']*'),(\\d+)");
QTextStream stream;
QFile file(fileName);
QPoint koord;
if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
qWarning() << "Fehler beim öffnen der Datei!";
return;
}
while(stream.atEnd() == false) {
line = stream.readLine();
if(rx.indexIn(line) != -1) {
koord.setX(rx.cap(1).toInt());
koord.setY(rx.cap(2).toInt());
...
...
...
}
}Vielen Dank für jeden Hinweis!
LG john