IO::Lambda версии 0.41 -- нет слов, просто супер: асинхронный DBI, очередь задач, форки и треды, самое интересное в eg/*.
mcfist, очень круто, респект тебе :)
Бенчмарк tcp:
Lambda using select
0.688 sec
real 0m0.736s
user 0m0.696s
sys 0m0.036s
Lambda using AnyEvent
0.685 sec
real 0m0.737s
user 0m0.676s
sys 0m0.060s
Raw sockets using select
0.145 sec
real 0m0.181s
user 0m0.144s
sys 0m0.036s
POE using select
5.748 sec
real 0m5.863s
user 0m4.988s
sys 0m0.440s
DBI:
sub usage
{
print <
Test implementation of non-blocking DBI. This script can work in several modes,
run with one of the parameters to switch:
$0 thread - use DBI calls in a separate thread
$0 fork - use DBI calls in a separate process
$0 remote HOST - connect to host to port $port and request DBI there
$0 listen - listen on port $port, execute incoming connections
USAGE
exit;
}
Скажу честно, на
YAPC::Russia 2008 "May Perl"; я узнал про IO::Lambda, но тогда лямбда не впечатлила меня.
Затем пошла цепная реакция -- я услышал, что Алекс Капранов (
quappa) использует IO::Lambda для отправки почты, и решил более внимательно посмотреть на лямбду. Как раз подвернулась подходящая задача -- сбор данных с алексы. Я сравнил POE, AnyEvent и IO::Lambda по удобству и красоте написания, написал 3 варианта. Мне понравился AnyEvent (
тогда я нашел маленький баг в дистрибутиве). Хотя на чистом аниевенте невозможно расписать некоторые задачи (спасибо за наводку Павлу Кудинову
pavel_kudinov), как я сейчас понимаю AnyEvent + Coro это может решить (см.
презентацию Евгения Торопова с
South Perl). И вот сегодня я обнаружил новую мощную версию IO::Lambda, опубликованную в мой день рождения -- 17 ноября. Теперь я не только на IO::Lambda буду смотреть, но и использовать (и рекламировать :).
Что нужно еще IO::Lambda для полного счастья? Доступ к BDB или Memcached или
асинхронный клиент MySQL ? :)
Original post
http://sharifulin.livejournal.com/39174.html