![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
RazrFalcon |
![]()
Сообщение
#1
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Я нашел/знаю 2-а способа.
1-й:
2-й:
Вопрос в том: какой быстрее, теоретически. Так как на практике замерить очень сложно. После первого раза ОС все это кеширует и уже в 100500 раз быстрее происходит поиск. И вот эти "быстрые" времена - почти идентичны. А вот сразу после перезагрузки выигрывает второй способ, как минимум у меня. Задача понять какой быстрее - и его и использовать. Сообщение отредактировал RazrFalcon - 14.3.2012, 15:16 |
|
|
![]() |
Авварон |
![]()
Сообщение
#2
|
![]() Студент ![]() Группа: Участник Сообщений: 99 Регистрация: 26.4.2009 Пользователь №: 709 Спасибо сказали: 14 раз(а) Репутация: ![]() ![]() ![]() |
Цитата QStringList QDir::entryList(const QStringList &nameFilters, Filters filters, SortFlags sort) const { const QDirPrivate* d = d_ptr.constData(); if (filters == NoFilter) filters = d->filters; #ifdef QT3_SUPPORT if (d->matchAllDirs) filters |= AllDirs; #endif if (sort == NoSort) sort = d->sort; if (filters == d->filters && sort == d->sort && nameFilters == d->nameFilters) { d->initFileLists(*this); return d->files; } QFileInfoList l; QDirIterator it(d->dirEntry.filePath(), nameFilters, filters); while (it.hasNext()) { it.next(); l.append(it.fileInfo()); } QStringList ret; d->sortFileList(sort, l, &ret, 0); return ret; } Я ответил на вопрос? А первый способ у вас тормозит потому что в сто раз создаете файл инфо для одного объекта |
|
|
RazrFalcon |
![]()
Сообщение
#3
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
То есть второй способ в любом случае будет быстрее?
|
|
|
RazrFalcon |
![]()
Сообщение
#4
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Ну и в тему.
Поиск все равно довольно долгий - решил вынести в отдельный поток через QtConcurrent. Делаю:
А гуи все равно зависает на время поиска, но не должен же! ![]() |
|
|
ernie |
![]()
Сообщение
#5
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 130 Регистрация: 13.5.2010 Из: Irkutsk Пользователь №: 1712 Спасибо сказали: 11 раз(а) Репутация: ![]() ![]() ![]() |
Ну и в тему. Поиск все равно довольно долгий - решил вынести в отдельный поток через QtConcurrent. Делаю:
А гуи все равно зависает на время поиска, но не должен же! ![]() Похоже из-за waitForFinished() и замораживается гуй |
|
|
RazrFalcon |
![]()
Сообщение
#6
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Та не. Без него так же.
Походу проще через moveToThread уже сделать ![]() |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 20.6.2025, 17:59 |