Taglib: проблемы с производительностью и сбоями

Я использую библиотеку taglib (1.7.2) в своем приложении Qt для чтения некоторых метаданных mp3-файлов из музыкальной папки. Проблема в том, что я нахожу это очень медленно.

Например, это код:

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();

Этот код занимает около 11 секунд, чтобы загрузить папку, содержащую 400 песен, то есть около 28 мс для каждого файла. Эта строка очень медленная:

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

Это нормально, это так долго? Я пытался использовать многопоточность, но это ничего не меняет, и оно не исходит от моего ПК, поскольку оно достаточно мощное. Странно то, что после загрузки всех файлов при следующей загрузке папки это происходит мгновенно (пока я не перезагружаю ОС).

У меня есть и другая проблема.

Иногда, когда тег не установлен, приложение вылетает и выдает:

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

Например, в следующей строке:

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

Я использую Windows 7.

Благодарю.

Ответы на вопрос(1)

Ваш ответ на вопрос