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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Getter
2 / 2 / 0
Регистрация: 09.09.2010
Сообщений: 221
#1

Поиск слов в файлах - C++

29.02.2012, 20:28. Просмотров 908. Ответов 4
Метки нет (Все метки)

Здравствуйте, у меня такая задача:
в нескольких файлах (объем в совокупности от 10 до 15 гб) надо найти примерно 1000-1500 "слов" фиксированного размера (задаются в диапазоне от 6 до 15 байт). "Слова" задаются в отдельном файле.
Каким образом можно это реализовать? Просто перебором, я думаю, он лет 10 будет искать.
Может подскажите алгоритмы или поделитесь полезными ссылочками? Буду очень признателен.
ps. если на вскидку, то сколько оно может занять по времени?

Добавлено через 2 минуты
Файлы в основном *.exe
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.02.2012, 20:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск слов в файлах (C++):

Поиск одинаковых слов в текстовых файлах - C++
помогите пожалуйста...C++ написать прогу которая 2 txt файла сравнивает на одинаковые слова и выводит их в qlistwidget или хотябы в 3...

Cравнение слов в файлах. - C++
Здравствуйте! Такое дело: надо проверить наличие слова из одного txt файла("наречия.txt") в другом txt файле(словарь.txt). И, если есть,...

Вывод слов на экран, которые появляются в обоих файлах в отсортированном порядке - C++
Написать программу на С++, которая считывает два имени файла с клавиатуры и выводит на экран слова, которые появляются в обоих файлах в...

Поиск в файлах с различными форматами - C++
Добрый день, собственно появилась задача - в винде открывать файлы различных форматов и затем производить писк по ключевым словам в теле...

Строки. Поиск одинаковых слов в предложениях. Вывод вместо одинаковых слов "*" - C++
Ввести два предложения, если в них есть одинаковые слова то во втором предложении заменить эти слова на "*", причем количество "*" должно...

Поиск слов в строке - C++
Пытаюсь тут получить все слова в строке ориентируясь на пробелы, но что-то плохой у меня алгоритм получается, поправьте пожалуйста. Мой...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
NoMasters
Псевдослучайный
1754 / 1097 / 72
Регистрация: 13.09.2011
Сообщений: 3,134
29.02.2012, 21:10 #2
grep искал одно слово в двухгиговом файле 50 секунд, очевидным образом большая часть времени приходится на io, так что для 1.5к слов в 15 гигах будет... ну минут 20. При этом у меня довольно унылый конфиг. Тебе действительно нужно что-то оптимизировать? Можно отсортировать слова и объединить сравнения на одинаковых участках.
0
Getter
2 / 2 / 0
Регистрация: 09.09.2010
Сообщений: 221
29.02.2012, 22:36  [ТС] #3
Хм, 20 минут многовато будет, мне б минут 10 максимум для 1500.
Цитата Сообщение от NoMasters Посмотреть сообщение
большая часть времени приходится на io
Хм, а если выделить в оперативе, допустим, 256мб и программу саму разбить на два потока.
Те программа загрузила часть файла (256мб), один поток начал искать слово, как только 128мб было проверено, второй поток подгружает новый блок 128 мб вместо старого, как первый поток дошел до конца 256мб, то переходит в начало, где его ждет свежезагруженные 128мб и так далее. Или бред? (Чтоб с оперативой только работал, а не с винтом)

Добавлено через 4 минуты
Цитата Сообщение от NoMasters Посмотреть сообщение
Можно отсортировать слова и объединить сравнения на одинаковых участках.
Можно поподробнее об этом?

Добавлено через 38 минут
Возможно еще, что количество слов будет не <1500, а 21'000'000 < N < 178'000'000...
Так чтооо, искать будет лет 10.. а мне бы хоть в час уложиться
0
NoMasters
Псевдослучайный
1754 / 1097 / 72
Регистрация: 13.09.2011
Сообщений: 3,134
29.02.2012, 23:01 #4
Цитата Сообщение от Getter Посмотреть сообщение
разбить на два потока.
Цитата Сообщение от Getter Посмотреть сообщение
программа загрузила часть файла (256мб)
Упирается в скорость считывания с диска же. Такой большой буфер тоже смысла не имеет, только затык на заполнении будет.
Цитата Сообщение от Getter Посмотреть сообщение
слов будет не <1500, а 21'000'000 < N < 178'000'000...
Это по 15 байт-то? Дубли реж
Цитата Сообщение от Getter Посмотреть сообщение
Можно поподробнее об этом?
Построишь древо по совпадающим байтам, чтобы для не проверять по сто раз одно и тоже значение, а за один раз выбрать подходящее множество слов.

А что за задача вообще? Антивирус какой-то что ли?
0
Getter
2 / 2 / 0
Регистрация: 09.09.2010
Сообщений: 221
29.02.2012, 23:17  [ТС] #5
Ну типа того, анализ фалов.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.02.2012, 23:17
Привет! Вот еще темы с ответами:

Поиск слов в файле. - C++
Помогите чё-то не получается написать программу выполняющую поиск строки в файле ,содерж.заданное число ключевых слов... заранее...

Поиск слов в строке c++ - C++
Как в файле сделать проверку на одинаковые слова в строке

Поиск слов из текста. - C++
Помогите пожалуйста с программой. Нужно написать программу, которая считывает текст из файла и выводит на экран только предложения,...

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.02.2012, 23:17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru