[Moscow.pm] Event and fork

Akzhan Abdulin akzhan.abdulin на gmail.com
Вт Окт 30 16:20:23 PDT 2012


Erlang однозначно более высокого уровня по сравнению с Node.

Разные абсолютно фишки.

А вот то, что Erlang-men сравнивают свой мир с мир Node, говорит не в их
пользу. Node-народу на них пофиг.

30 октября 2012 г., 15:43 пользователь ksvs <ksvs1996 на ymail.com> написал:

> Привет.
> Решил все таки посмотреть на AnyEvent::HTTP.
> Сделал скачивание страниц сайта perl.com по заранее приготовленному
> списку url (1123 ссылки).
>
>
> Однопоточный LWP справляется с этим за 7:53 минут
> HTTP::Async (33 одновременных соединения) - 1:55
> AnyEvent::HTTP (33 одновременных соединения) - 0:38
> Coro::LWP (33 одновременных соединения) - 0:21
>
> Наверно AnyEvent::HTTP медленней, чем Coro::LWP из-за того, что не
> кешируется DNS.
> А последние версии AnyEvent и AnyEvent::CacheDNS не совместимы друг с
> другом.
>
> А вот вариант с prefork в 10 дочерних процессов справился за 0:48.
> Каждому дочернему процессу передается по одному url, он возвращает
> результат и ему передается следующий url)
>
> На компьютере 4 ядра.
>
> А в 33 потока prefork справился быстрей всех - 0:17
>
>
> Чтобы тесты не были слишком искусственными, я добавил анализ страниц при
> помощи HTML::Parser (поиск внешний и внутренних ссылок).
>
> LWP -                 9:22
> AnyEvent::HTTP (33) - 1:12
> Coro::LWP (33) -      1:17
> prefork (10) -        0:54
> prefork (33) -        0:23
>
> затем все таки уговорил себя и сделал гибридный вариант:
> prefork (4 процесса) и в каждом 8 Coro - 0:24
> prefork (4 процесса) и в каждом 33 Coro - 0:24
> prefork (4 процесса) и в каждом 33 AnyEvent::HTTP - 0:22
>
> Кстати, когда снял нагрузку (анализ страниц), то заметил, что вариант
> prefork-Сoro иногда зависает, а вариант prefork-AnyEvent::HTTP - нет.
>
>
> Что я могу сказать по всему этому. Было интересно. Но наверное,
> использование Event оправдано лишь для узкого круга задач, где куча
> медленных соединений и задачи эти не нагружают CPU. Но для этого вероятно
> проще использовать тот-же Erlang и Haskell, которые сами все ядра использую.
>
> Хотя ведь при общении с дочерними процессами используется select или
> прочий event.
>
> А для каких задач вы используете AnyEvent?
>
> P.S.
>
> Кстати, об Erlang.
>
> Не смотря на фразу "Слава Богу, я не подписан на из списки рассылки", я
> решил посмотреть на Erlang.
> Больше меня удивило, что периодически пользователи Erlang доказывают, что
> Erlang круче, чем node.js.
>
> Но, ведь, если я правильно понял, Erlang на уровень выше, чем node.js и
> AnyEvent.
> Так почему они что-то пытаются доказать? Ведь слон на Моську не обращает
> внимания.
> Или в Erlang есть какой-то подводный камень, который скрывают?
>
> P.P.S
> А что еще есть интересного в Perl? Подскажите направление?
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20121031/57d71f2f/attachment.html>


Подробная информация о списке рассылки Moscow-pm