The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"хэш/массив в памяти"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"хэш/массив в памяти"  
Сообщение от Cyrus_user on 10-Окт-07, 10:27 
привет. есть несколько скриптов пока не объединённые в одну систему обработки данных (что будет потом). все скрипты используют одни и те же источники данных. есть источник данных файл размером в 30 мегов. Пока каждый скрипт возьмёт из него нужное (регекспы), много времени проходит. Для ускорения работы хочу сделать такое:
некий скрипт1 создаёт хэш с данными и хэш лежит/доступен в памяти (30Mb), а  все  остальные скрипты берут данные из этого хэша.

вопрос такого плана, как "положить" хэш в память чтобы он был доступен любому из системы и как его оттуда "взять"? вопрос безопасности не рассматриваем.
или я что-то невозможного хочу? вопрос про ramfs уже продумал.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "хэш/массив в памяти"  
Сообщение от Аноним on 10-Окт-07, 11:54 
>привет. есть несколько скриптов пока не объединённые в одну систему обработки данных
>(что будет потом). все скрипты используют одни и те же источники
>данных. есть источник данных файл размером в 30 мегов. Пока каждый
>скрипт возьмёт из него нужное (регекспы), много времени проходит. Для ускорения
>работы хочу сделать такое:
>некий скрипт1 создаёт хэш с данными и хэш лежит/доступен в памяти (30Mb),
>а  все  остальные скрипты берут данные из этого хэша.

Ты не получишь ускорения ;) Медленно не с диска читается (на современном диске это пара секунд) Медленно работают сами фильтры отбирающие нужные данные.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "хэш/массив в памяти"  
Сообщение от Alex (??) on 10-Окт-07, 13:19 
>[оверквотинг удален]
>скрипт возьмёт из него нужное (регекспы), много времени проходит. Для ускорения
>работы хочу сделать такое:
>некий скрипт1 создаёт хэш с данными и хэш лежит/доступен в памяти (30Mb),
>а  все  остальные скрипты берут данные из этого хэша.
>
>
>вопрос такого плана, как "положить" хэш в память чтобы он был доступен
>любому из системы и как его оттуда "взять"? вопрос безопасности не
>рассматриваем.
>или я что-то невозможного хочу? вопрос про ramfs уже продумал.

Очень похожую штуку я делал на тредах, но с этим надо поосторожней...
Думаю, что вам можно поступить проще. Во-первых, переложить сами данные
на виртуальный диск (в памяти). Это поможет, если вы по многу раз читате
из разных мест ваши файлы. Ну и второй шаг: использовать какой-нибудь
DBM и хранить его тоже на виртуальном диске. Будет чуть медленней, чем
то, что вы предлагаете, но за-то программировать будет проще тысячекратно.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "хэш/массив в памяти"  
Сообщение от angra (ok) on 10-Окт-07, 20:06 
Есть несколько способов, так что man perlipc

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "хэш/массив в памяти"  
Сообщение от andy email(??) on 11-Окт-07, 05:07 
как-то сумбурно первая часть написана.
что лежит в файлах, регекспы (или регекспами из файла выбирается нужное)?
если регекспы, то в каком объеме они требуются - все до одного или некое их подмножество?
Может, что-то еще недоговорили?

варианты на вскидку:
1. единожды подготовить массив откомпилированных регекспов ( qr() ) и сохранить его в файл (модуль Storable). Эту готовую структуру подгружать в каждой программе

2. использовать базы данных

3. потоки (use threads) и разделяемые переменные (use threads::shared; my @re:shared). Ну и вообще perldoc perlthrtut

4. there is more then onе way to do it. Все зависит от задачи, нужна информация

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "хэш/массив в памяти"  
Сообщение от Cyrus_user on 11-Окт-07, 06:03 
>[оверквотинг удален]
>в файл (модуль Storable). Эту готовую структуру подгружать в каждой программе
>
>
>2. использовать базы данных
>
>3. потоки (use threads) и разделяемые переменные (use threads::shared; my @re:shared). Ну
>и вообще perldoc perlthrtut
>
>4. there is more then onе way to do it. Все зависит
>от задачи, нужна информация

Всем спасибо за ответы. Возможно описание сумбурное, но цель преследовалась изучить теорию и пути для оптимизации своих скриптов. Нахожусь на стадии творческого поиска и описать целиком всю структуру пока нет возможности, потому что у меня нет чёткого представления чего же я хочу получить в конечном итоге :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру