> > > Локализуйтесь, с присвоением по значению, и в замыкание ее - никто
> итератор не собьет,
> > >  локальная переменная ИМХО физически недоступна вне блока.
> >
> > присвоение хеша по значению пожалуй по расходам накладным хуже чем проход
> по хешу по индексам. по памяти во всяком случае :)
> >
> > хотя я в итоге к этому примерно и пришел. только локализую не само
> содержимое хеша, а массив ссылок на значения и ключи.
> >
> как бы фик знает, мерять надо и делать выбор в зависимости от того, на чем
> экономим.
>
> Я рассуждал о том, что раз Ваше решение к Event-машине привязывается, то
> можно пожертвовать памятью в угоду скорости. Да и ИМХО память дешевле
> циклов, ее можно напихать сейчас по самые 64 бита.
>
> а вот тут имхо Вы не правы.
как раз в EM память и надо в первую очередь экономить даже если ее напихано
куча. ибо вся выделенная память приатачивается к одному процессу, а
event-машина может обслужить гораздо больше клиентов и если каждый из
клиентов потребует +1Мб памяти, то сто клиентов это +100Мб :)
одна старушка - рупь ;)

кстати я тут как раз сейчас возявкаюсь над вопросом работы с памятью:
собрали серверок на EM, использовали несколько сторонних модулей. память
где-то "подтекает".

если в обычном сервере а-ля apache с утечкой бороться можно просто: взял и
ограничил число обработанных соединений на один pre-fork-процесс, то EM так
просто не перезапустишь.

ща пришли к такому варианту перезапуска:
 * пишем свой tcp_server (поскольку Марк в AE отказался подобавлять
каллбеки): нужно чтобы он мог пуститься с готовым сокетом, а так же
"спрашивал разрешения" на accept.
 * в определенный момент машина перестает делать accept'ы (клиенты копятся в
очереди)
 * как только все соединения обработаны делаем fcntl на сокет чтобы он мог
пережить exec
 * делаем exec на самого себя и запускаем tcp_server с открытым сокетом.

по идее клиенты должны "заметить" разве что некоторый простой на периоде
установления соединения.

как-то так.
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить