Форум программистов, компьютерный форум CyberForum.ru

Поиск экстремально быстрой техники поиска последовательности байт в файле! - C++

Восстановить пароль Регистрация
 
TheCore
Заблокирован
18.02.2016, 12:05     Поиск экстремально быстрой техники поиска последовательности байт в файле! #1
Привет форумчане!
Интересно ваше мнение, есть какой - то хитрый и быстрый способ поиска последовательности байт в файле?
Тип файла (exe, rar, wav, bmp) и тд заранее не известен.
1. Я предполагаю, что для поиска, допустим, последовательности байт "AD FD FF CD" в файле мне нужно просто открыть файл и с самого начала и проверить, не та ли комбинация находится у старта, если нет - тупо сдвигать на один байт вправо и проверить опять, пока не дойду до конца. Так вот, единственный ли этот метод или есть какие - то супер крутые и алгоритмично продвинутые? Ну не знаю, может заимствованные из архивирования?

2. И второй вопрос. Как быстрее это сделать, если учесть, что размер оперативной памяти достаточно велик по сравнению с вероятными размерами файлов.
а) Загрузить файл целиком в память одним куском?
б) Чисто работать с файловым потоком без явной загрузки всего файла в память?

3. Есть ли профит от кучи потоков для одновременной проверки сразу многих файлов? Допустим в папке 10 файлов, если я запущу 10 потоков и буду в каждом потоке буду по одному отдельному файлу проверять, будет ли от этого профит с учётом (ОС - Windows 8.1)
a) HDD + вариант из предыдущего вопроса 2.а
б) HDD + вариант из предыдущего вопроса 2.б
в) SSD + вариант из предыдущего вопроса 2.а
г) SSD + вариант из предыдущего вопроса 2.б

3.1.Правильно ли я понимаю, что если файл мелкие, то в потоках нет смыла, т.к. на старт потока уйдёт больше времени, чем просто прочитать этот файл
3.2 Если файлы большие, то в потоках есть резон я так полагаю?
3.3 А если размер файла заранее не известен и скорее всего файлы в папке смешанного размера, то есть и большие и маленькие, тогда смыл в потоках есть?

Добавлено через 2 часа 5 минут
Ладно, в общем - то разобрался, кому интересно, лучший метод всё таки наверное - КМП, так же можно использовать strstr
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2016, 12:05     Поиск экстремально быстрой техники поиска последовательности байт в файле!
Посмотрите здесь:

Посчитать в файле количество нулевых байт и различных байт C++
Поиска в записанном ранее файле по фамилии или по группе с выбором параметра поиска C++
C++ Поиск в файле заданной последовательности символов
Поиск заданной последовательности символов в бинарном файле C++
Отображение файла в память, поиск и замена последовательности байт C++
C++ Поиск строк в файле методами бинарного поиска и перебора
C++ Сортировка последовательности методом быстрой сортировки
Поиск наибольшей последовательности цифр в файле C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 01:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru