crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

RazrFalcon
  опции профиля:
сообщение 14.3.2012, 15:13
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Я нашел/знаю 2-а способа.
1-й:
    QDirIterator dirIt("/path",QDirIterator::Subdirectories);
    while (dirIt.hasNext()) {
        dirIt.next();
        if (QFileInfo(dirIt.filePath()).isFile() && !QFileInfo(dirIt.filePath()).isSymLink())
            if (QFileInfo(dirIt.filePath()).suffix().contains(filter)) // расширение файла
                fileList.append(dirIt.filePath()); // fileList это QFileInfoList
    }

2-й:
// найдено в доках Qt
QFileInfoList MainWindow::loadFiles(const QString &startDir, QStringList filters)
{
    QDir dir(startDir);
    QFileInfoList list;

    foreach (QString file, dir.entryList(filters, QDir::Files))
        list += QFileInfo(startDir + "/" + file);

    foreach (QString subdir, dir.entryList(QDir::AllDirs | QDir::NoDotAndDotDot))
        list += loadFiles(startDir + "/" + subdir, filters);
    return list;
}

Вопрос в том: какой быстрее, теоретически. Так как на практике замерить очень сложно. После первого раза ОС все это кеширует и уже в 100500 раз быстрее происходит поиск. И вот эти "быстрые" времена - почти идентичны. А вот сразу после перезагрузки выигрывает второй способ, как минимум у меня.
Задача понять какой быстрее - и его и использовать.

Сообщение отредактировал RazrFalcon - 14.3.2012, 15:16
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 12.7.2025, 4:00