![]() |
Модераторы: powerfox, ZeeLax |
![]() ![]() ![]() |
|
Dmi |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 13.5.2007 Репутация: нет Всего: нет |
Вообщем такая вот задача:
Есть текстовый файл. В нем в столбик находятся слова или словосочетания. Слова повторяются. Задача: Нужно найти все словосочетания которые повторяются больше 100 раз и вывести в порядке возврастания. word1 : 2342 раз ... word 2 : 1014 раз Есть готовый скрипт на перле, который быстро обрабатывает файлы по 100- 200 метров Проблема, в том что файл размером ~ 3gb. Перл естественно не справляется Так как вот, можно как то это средствами оси сделать? Разбивать файл нельзя, требуется статистика по всему файлу. Конфиг сервака: P4 2.4|512 ram|Fedora В какую сторону капать ? ![]() Это сообщение отредактировал(а) Dmi - 13.5.2007, 14:59 |
|||
|
||||
ZeeLax |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4388 Регистрация: 20.8.2006 Где: Алма-Ата Репутация: 7 Всего: 88 |
Что значит средствами оси? ;) А копать надо в сторону алгоритмов и не в этом разделе. -------------------- Utility is when you have one telephone, luxury is when you have two, opulence is when you have three — and paradise is when you have none. — Doug Larson |
|||
|
||||
bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 34 Всего: 317 |
можно даже сказать, что копать нужно в сторону параллельных и распределенных алгоритмов.
есссно при ограниченной скорости доступа к памяти/диску
вполне возможно, что писан этот перл ногами... если задача заставляет обрабатывать весь файл в памяти, вам нужно добавить памяти и свопу. 0.5ГБ - очень мало. -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
ToshaCh |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 555 Регистрация: 10.11.2005 Где: Москва, РФ Репутация: 2 Всего: 26 |
Вообще интерестная задача - (меня зацепило
![]() -------------------- Slackware 12.2 | Linux 2.6.27 | Fluxbox 1.1.1 | Wmii 3 | Opera 9.63 -- Oracle это не только способ отмывания денег, но и вполне себе преличная база данных. |
|||
|
||||
Dmi |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 13.5.2007 Репутация: нет Всего: нет |
Да вы правы, Перл скрипт может не очень грамотный (много памяти ест).
Тут конечно нужен алгоритм хороший. А пока, так как мне было нужно срочно, решил с помощью sort, uniq (вот почему в этот раздел запостил)
Не быстро конечно, но дело свое скрипт сделал, может кому пригодится. |
|||
|
||||
Ch0bits |
|
|||
![]() Python Dev. ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2124 Регистрация: 21.2.2005 Где: Казань Репутация: нет Всего: 62 |
Надо загонять все слова из файла в B-tree со счётчиком наложений, если комбинаций не очень много и памяти хватает, то можно в обычное AVL-tree. Счётчик тоже индексировать деревом, а потом использовать как очередь с приоритетами. Из этой очереди вытаскиваем слова в порядке возрастания количества наложений. (я не спец в алгоритмах, но поступил бы так)
Только как это написать на perl'е? ![]() Добавлено через 3 минуты и 26 секунд Dmi, гы-гы, а про сортировку то я не подумал! ![]() Ещё есть один извращенский способ! Загнать все слова в БД и вытаскивать через SQL. ![]() |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: нет Всего: 207 |
Dmi,
а что, каналы запрещено использовать? ![]()
это уж точно быстрее записи на диск, даже если 50% кэшируется Это сообщение отредактировал(а) MAKCim - 14.5.2007, 09:35 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Linux/UNIX: Администрирование" | |
|
Этот форум предназначен для решения вопросов по администрации *n?x-систем, в частности по настройке сложных сетей и обслуживанию серверного оборудования.
За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу). В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим. Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Администрирование *NIX систем | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |