<html>
<head>
<meta content="text/html; charset=KOI8-R" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">1. Покажите мне пожалуйста ваш код на
AnyEvent.<br>
<br>
2. Перед <use AnyEvent> ведь правда написано <use EV>?
и в конце программы написано EV::loop(), а не AE::cv->recv?<br>
<br>
3. Если сравнивать время 1 запроса AnyEvent'ом и 1 запроса LWP
(или Curl), то это время будет зависеть во многом от внешнего
ресурса.<br>
вы сделали параллель по 33 коннекта. т.е. в принципе вы выполняете
последовательность из ~34 запросов. (1123/33)<br>
и неважно чем, LWP или AnyEvent'ом, вы замерили максимальное время
последовательных 34 запросов.<br>
<br>
Сила AnyEvent'а в том, что в одном процессе вы пожете
"параллельно" выполнять пару сотен таких задач.<br>
если-бы у вас урлы были не на одном домене (perl.com), а на
разных, то можно было-бы отправить их всех одновременно.<br>
<br>
PS: в AnyEvent::HTTP есть ограничение на одновременное подключение
к одному домену.<br>
попробуй еще добавить<br>
$AnyEvent::HTTP::
<meta http-equiv="content-type" content="text/html;
charset=KOI8-R">
MAX_PER_HOST = 33;<br>
<br>
On 10/30/2012 03:43 PM, ksvs wrote:<br>
</div>
<blockquote
cite="mid:1351597434.43348.YahooMailNeo@web171503.mail.ir2.yahoo.com"
type="cite">
<div style="color:#000; background-color:#fff; font-family:times
new roman, new york, times, serif;font-size:12pt">
<div id="yiv1811700490">
<div>
<div
style="color:#000;background-color:#fff;font-family:times
new roman, new york, times, serif;font-size:12pt;">
<div id="yiv1811700490yui_3_7_2_19_1351579858106_39">Привет.<br>
Решил все таки посмотреть на AnyEvent::HTTP.<br>
Сделал скачивание страниц сайта perl.com по заранее
приготовленному списку url (1123 ссылки).<br>
<br>
<br>
Однопоточный LWP справляется с этим за 7:53 минут<br>
HTTP::Async (33 одновременных соединения) - 1:55<br>
AnyEvent::HTTP (33 одновременных соединения) - 0:38<br>
Coro::LWP (33 одновременных соединения) - 0:21<br>
<br>
Наверно AnyEvent::HTTP медленней, чем Coro::LWP из-за
того, что не кешируется DNS.<br>
А последние версии AnyEvent и AnyEvent::CacheDNS не
совместимы друг с другом.<br>
<br>
А вот вариант с prefork в 10 дочерних процессов
справился за 0:48.<br>
Каждому дочернему процессу передается по одному url, он
возвращает результат и ему передается следующий url)<br>
<br>
На компьютере 4 ядра.<br>
<br>
А в 33 потока prefork справился быстрей всех - 0:17<br>
<br>
<br>
Чтобы тесты не были слишком искусственными, я добавил
анализ страниц при помощи HTML::Parser (поиск внешний и
внутренних ссылок).<br>
<br>
LWP - 9:22<br>
AnyEvent::HTTP (33) - 1:12<br>
Coro::LWP (33) - 1:17<br>
prefork (10) - 0:54<br>
prefork (33) - 0:23<br>
<br>
затем все таки уговорил себя и сделал гибридный вариант:
<br>
prefork (4 процесса) и в каждом 8 Coro - 0:24<br>
prefork (4 процесса) и в каждом 33 Coro - 0:24<br>
prefork (4 процесса) и в каждом 33 AnyEvent::HTTP - 0:22<br>
<br>
Кстати, когда снял нагрузку (анализ страниц), то
заметил, что вариант prefork-Сoro иногда зависает, а
вариант prefork-AnyEvent::HTTP - нет.<br>
<br>
<br>
Что я могу сказать по всему этому. Было интересно. Но
наверное, использование Event оправдано лишь для узкого
круга задач, где куча медленных соединений и задачи эти
не нагружают CPU. Но для этого вероятно проще
использовать тот-же Erlang и Haskell, которые сами все
ядра использую.<br>
<br>
Хотя ведь при общении с дочерними процессами
используется select или прочий event.<br>
<br>
А для каких задач вы используете AnyEvent?<br>
<br>
P.S.<br>
<br>
Кстати, об Erlang.<br>
<br>
Не смотря на фразу "Слава Богу, я не подписан на из
списки рассылки", я решил посмотреть на Erlang.<br>
Больше меня удивило, что периодически пользователи
Erlang доказывают, что Erlang круче, чем node.js.<br>
<br>
Но, ведь, если я правильно понял, Erlang на уровень
выше, чем node.js и AnyEvent.<br>
Так почему они что-то пытаются доказать? Ведь слон на
Моську не обращает внимания.<br>
Или в Erlang есть какой-то подводный камень, который
скрывают?<br>
<br>
P.P.S<br>
А что еще есть интересного в Perl? Подскажите
направление?</div>
</div>
</div>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
</blockquote>
<br>
</body>
</html>