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

Статистика вхождения слов в массиве файлов (~50Gb) - C++

Войти
Регистрация
Восстановить пароль
 
pixx
0 / 0 / 0
Регистрация: 05.05.2010
Сообщений: 6
06.08.2010, 20:33     Статистика вхождения слов в массиве файлов (~50Gb) #1
Есть задача: собрать статистику вхождения слов в массиве файлов (~50Gb) с использованием библиотеки X (синтаксический анализатор). Библиотека X написана не идеально, но доступных её аналогов нет. Библиотека X может выкидывать segmentation fault в зависимости от обрабатываемого файла, т.е. её код не стабилен в 100% случаев.
Напрашивается решение: написать менеджер процессов, запускающий обработку каждого файла в отдельном процессе для изоляции от segmentation fault и складывающий результат в shared memory.
Главный процесс, он же менеджер рабочих процессов, по окончании обработки файлов сохраняет результаты на диск.

Вопрос: Есть ли какие-то готовые решения для данной задачи. Может быть библиотека или фреймворк?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.08.2010, 20:33     Статистика вхождения слов в массиве файлов (~50Gb)
Посмотрите здесь:

В массиве слов найти пару слов, из которых одно является обращением другого C++
C++ Обработка текста, удаление повторного вхождения слов
Удалить из последовательности все повторные вхождения слов C++
Подсчитать частоту вхождения слов в текстовом файле C++
В данном одномерном массиве исключите все вхождения заданного числа. Массив уплотните и напечатайте результат C++
Найти номер первого вхождения заданного числа в массиве C++
Определить в символьном массиве номер вхождения символа вводимого пользователем с клавиатуры C++
Сортировка слов в массиве C++
C++ Удалить повторные вхождения слов в предложение
C++ Написать функцию, которая ищет число в одноименном массиве и возвращает индекс каждого вхождения этого числа
C++ Программа для подсчета частоты вхождения слов
Программа для подсчета частоты вхождения слов C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nikkka
07.08.2010, 12:35
  #2

Не по теме:

нииииичего не понял...

pixx
0 / 0 / 0
Регистрация: 05.05.2010
Сообщений: 6
07.08.2010, 16:37  [ТС]     Статистика вхождения слов в массиве файлов (~50Gb) #3
Цитата Сообщение от nikkka Посмотреть сообщение

Не по теме:

нииииичего не понял...

Попробую иначе:
Существуют ли какие-то готовые решения на с++ (фреймворки, библиотеки) для параллельного запуска определяемой пользователем функции в виде изолированных процессов?
Т.е. программист определяет список задач, назначает функцию для обработки каждой задачи и далее это дело передает фреймворку, который каждую задачу обрабатывает с помощью заданной функции в изолированном процессе (proccess, не thread).
odip
Эксперт C++
 Аватар для odip
7226 / 3288 / 59
Регистрация: 17.06.2009
Сообщений: 14,165
07.08.2010, 20:59     Статистика вхождения слов в массиве файлов (~50Gb) #4
То есть ты думаешь если библиотека не упала в segfault, то она и считает правильно ?
Я бы не полагался на кривой код.
pixx
0 / 0 / 0
Регистрация: 05.05.2010
Сообщений: 6
07.08.2010, 21:12  [ТС]     Статистика вхождения слов в массиве файлов (~50Gb) #5
Цитата Сообщение от odip Посмотреть сообщение
То есть ты думаешь если библиотека не упала в segfault, то она и считает правильно ?
Я бы не полагался на кривой код.
А альтернатив нет. Синтаксический парсер русского языка на дороге не валяется. А разбираться в его кишках никакого желания и сил нет.

И библиотека как раз таки вылетает на segfault в зависимости от набора входных данных. Благо что бывает это довольно редко. На моем самопальном решении задачи из сабжа количество segfault ~2%, что лично меня устраивает.
Но т.к. segfalut возникает внезапно, то хочется как-то застраховаться - чтобы приложение не валилось все целиком из-за одного файла а продолжало обработку. Оставил комп на несколько суток работать - и ушел, не думаю о том что там где-то сегфолт вылетит на одном файле. Для сбора статистики этого подхода более чем достаточно

Добавлено через 7 минут
Вообще, решение данной задачи подходит под два паттерна: MapReduce и Fork/Join - но то ли я гуглить не умею, то ли доступных решений для С++ не нашел. Да, надо сказать что MapReduce фреймворки в основном рассчитаны на кластер машин, а не на одну.
Yandex
Объявления
07.08.2010, 21:12     Статистика вхождения слов в массиве файлов (~50Gb)
Ответ Создать тему
Опции темы

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