Программа поиска файловC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Программа поиска файлов

Сообщение Anonymous »

Пишу программу для поиска файлов на компьютере и столкнулся с проблемой, что поиск занимает очень много времени, на мой взгляд, как можно ускорить код?
Использую SSD, точное количество файлов не знаю, но из 465 ГБ занято 279 ГБ
В Visual Studio максимальная оптимизация ( приоритет скорости) (/O2)
void searchFiles(const std::string& searchQuery, const std::string& rootDir, std::vector& results) {
std::queue dirs;
dirs.push(rootDir);

while (!dirs.empty()) {
fs::path currentDir = dirs.front();
dirs.pop();

try {
for (const auto& entry : fs::directory_iterator(currentDir)) {
if (fs::is_directory(entry)) {
dirs.push(entry.path());
}
else {
if (entry.path().filename().string().find(searchQuery) != std::string::npos) {
results.push_back(entry.path().string());
}
}
}
}
catch (const std::exception& e) { }
}
}

Вот код, в котором вызывается функция
void ScannerFile::ScanningFile()
{

for (size_t i = 0; i < defaultPath.size(); i++)
{
searchFiles(defaultPath, "C:\\", ModuleManager::resultFile);
}
}

Пытался как-то переписать, но смысла не было, скорость все равно не изменилась
Например, искался видеофайл 94 секунды
C:\\Users\\mgrr\\Videos\\Desktop\\Desktop 2024.10.20 - 16.03.16.04.mp4
C:\\Users\\mgrr\\AppData\\Roaming\\Microsoft\\Windows\\Recent\\Desktop 2024.10.20 - 16.03.16.04.lnk
C:\\Users\\mgrr\\Videos\\Desktop\\Desktop 2024.10.20 - 16.03.16.04.mp4
C:\\Users\\mgrr\\AppData\\Roaming\\Microsoft\\Windows\\Recent\\Desktop 2024.10.20 - 16.03.16.04.lnk
C:\\Users\\mgrr\\Videos\\Desktop\\Desktop 2024.10.20 - 16.03.16.04.mp4
C:\\Users\\mgrr\\AppData\\Roaming\\Microsoft\\Windows\\Recent\\Desktop 2024.10.20 - 16.03.16.04.lnk

Execution time: 94.0131 seconds


Подробнее здесь: https://stackoverflow.com/questions/791 ... ch-program
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»