<br><br><div class="gmail_quote">17 октября 2012 г., 10:38 пользователь ksvs <span dir="ltr"><<a href="mailto:ksvs1996@ymail.com" target="_blank">ksvs1996@ymail.com</a>></span> написал:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div style="font-size:12pt;font-family:times new roman,new york,times,serif"><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman,new york,times,serif"><span>То есть оптимальный вариант - это запускать столько процессов, сколько ядер.<br>
</span></div></div></div></blockquote><div><br>Оптимальный вариант -- решать конкретную задачу. Парсишь Moscsow.pm -- замечательно. Медленно? Оптимизируй. Всё равно медленно? Распараллель. Упёрся в ограничение памяти? Оптимизируй использование памяти. И т.д.<br>
<br>Но не решай проблему, с которой ещё не столкнулся. Помни, некоторые задачи горазо быстрее, дешевле и проще решаются апгрейдом железа, а не ковырянием кода. Так же следует иметь в виду, что "хороший" код не гарантирует хорошее приложение. Код в первую очередь должен решать твою задачу, код не пишется на века, он всего лишь расходный материал.<br>
<br><br>Распараллеливание твоего парсинга решается простым fork'ом. Сделай сначала так, поймёшь потроха параллельного выполнения процессов. Потом можно попробовать использовать сторонние модули. Но начинать с модулей без понимания внутренностей -- это дот-нет-вэй: рискуешь стать кодобабуином.<br>
<br>ИМХО, конечно.<br> </div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div style="font-size:12pt;font-family:times new roman,new york,times,serif">
<div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman,new york,times,serif"><span>Делать общение между ними при помощи AnyEvent::MP, а внутри каждого использовать асинхронные штучки на основе AnyEvent (например тот-же AnyEvent::HTTP).<br>
<br>Кстати, обнаружил у того-же автора модуль Coro::MP. Выглядит проще.<br><br>Ой, что я увидел!<br><a href="http://cpanratings.perl.org/dist/AnyEvent-MP" target="_blank">http://cpanratings.perl.org/dist/AnyEvent-MP</a><br>
Там говориться: "Don't use any modules by Marc Lehmann..."<br>Что
 это?! Авторы AnyEvent и IO::Async ругаются между собой?<br>Как-то такие явления не радуют...<br></span></div><div><br></div>  <div style="font-family:times new roman,new york,times,serif;font-size:12pt"> <div style="font-family:times new roman,new york,times,serif;font-size:12pt">
 <div dir="ltr"> <font face="Arial"> <hr size="1">  <b><span style="font-weight:bold">From:</span></b> Daniel Podolsky <<a href="mailto:onokonem@gmail.com" target="_blank">onokonem@gmail.com</a>><div class="im"><br>
 <b><span style="font-weight:bold">To:</span></b> Moscow.pm group <<a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a>> <br> <b><span style="font-weight:bold">Sent:</span></b> Tuesday, 16 October 2012, 21:32<br>
 <b><span style="font-weight:bold">Subject:</span></b> Re: [Moscow.pm] Распараллелить<br> </div></font> </div><div class="im"> <br>> Про асинхронные либы сказали уже много, но либ для работы с форком<br>> вроде не
 было.<br>Чет не могу больше молчать :)<br><br>Смотрите. На сегодняшнем железе многопроцессная модель требует больших<br>процессорных ресурсов, чем многотредная или событийная, в связи с<br>высокими расходами на переключение контекста.<br>
<br>Расходы эти низкими не были никогда, но сейчас все остальное железо<br>подтянулось настолько, что сохранение-восттановление регистров и<br>очистка-загрузка процессорного кеша стала занимать заметное время в<br>общем зачете.<br>
<br> </div></div> </div>  </div></div><br>--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>Andrei Protasovitski<br>< andrei[dot]protasovitski[at]gmail[dot]com ><br>Diemen, Netherlands<br>