> > > Локализуйтесь, с присвоением по значению, и в замыкание ее - никто > итератор не собьет, > > > локальная переменная ИМХО физически недоступна вне блока. > > > > присвоение хеша по значению пожалуй по расходам накладным хуже чем проход > по хешу по индексам. по памяти во всяком случае :) > > > > хотя я в итоге к этому примерно и пришел. только локализую не само > содержимое хеша, а массив ссылок на значения и ключи. > > > как бы фик знает, мерять надо и делать выбор в зависимости от того, на чем > экономим. > > Я рассуждал о том, что раз Ваше решение к 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
