Taglib: Performance und Absturzprobleme

Ich verwende die Taglib-Bibliothek (1.7.2) in meiner Qt-Anwendung, um einige Metadaten von MP3-Dateien aus einem Musikordner zu lesen. Das Problem ist, dass ich es sehr langsam finde.

Dies ist beispielsweise der Code:

QString path = "C:/Music/";
QDir d(path);
QStringList fileTypes;
fileTypes << "*.mp3" ;
d.setNameFilters(fileTypes);
QStringList pathList = d.entryList( QDir::NoDotAndDotDot | QDir::Files);

QTime t;
t.start();
foreach (QString fileName, pathList) {
    fileName = path + fileName;
    TagLib::FileRef *f = new TagLib::FileRef(fileName.toStdWString().c_str());
}
qDebug()<<t.elapsed();

Das Laden eines Ordners mit 400 Titeln dauert ca. 11 Sekunden, dh ca. 28 ms für jede Datei. Dies ist die Linie sehr langsam:

TagLib::FileRef *f = new TagLib::FileRef(pathFile.toStdWString().c_str());

Ist es normal, dass es so lang ist? Ich habe versucht, Multi-Threading zu verwenden, aber es ändert nichts und kommt nicht von meinem PC, da es leistungsfähig genug ist. Das Seltsame ist, dass sobald alle Dateien geladen wurden, das nächste Mal, wenn der Ordner erneut geladen wird, dies sofort geschieht (bis ich das Betriebssystem neu starte).

Ich habe auch ein anderes Problem.

Wenn ein Tag nicht gesetzt ist, stürzt die App manchmal ab und gibt Folgendes aus:

HEAP[myapp.exe]: 
Invalid address specified to RtlFreeHeap( 0ED90000, 0ED92CC0 )

In der folgenden Zeile zum Beispiel:

if (!f->tag()->genre().isNull())

Ich benutze Windows 7.

Vielen Dank.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage