[Moscow.pm] Perl AnyEvent vs Python Twisted (via HTTP)

Mons Anderson mons на rambler-co.ru
Ср Ноя 23 03:52:08 PST 2011


+ к тому, что сказал und3f:

как минимум use EV; EV::loop() вместо httpd->run;
Но как я посмотрел - особого выигрыша это не даст (~ +10%).

Погонял свой (AnyEvent::HTTP::Server @ gthub) - производительность несколько больше ( даже с учетом включеной отладки ), но все равно значительно хуже, чем у twisted.
Думаю мой можно затюнить где-то до 1k (против 1.5k у twisted)
Проблемы судя по профайлеру в AE::Handle.
Вообще по хорошему к базовым вещам AE (таким как Handle, Socket, ...) нужно писать XS версии.

PS: спасибо за наводку: подумаю на тему отказаться от AE::Handle в своей реализации.

On 23.11.2011, at 14:18, Alexey Shrub wrote:

> Всем привет,
> 
> Взял примеры http демонов с
> http://twistedmatrix.com/trac/
> и
> http://search.cpan.org/perldoc?AnyEvent::HTTPD
> 
> чуть допилил до похожего на реальность - они сериализуют запрос в json и
> кладут в редис, алгоритм вроде идентичный, однако судя по тестам
> ab -c 100 -n 10000
> 'http://localhost:8080/?param=value1&param2=value2&tid=6666'
> 
> twisted чуть больше чем в три раза быстрее (~1500 req/sec против ~500
> req/sec), пробовал убрать json и редис в перловом демоне - разницы нет,
> он такой же медленный
> 
> Что не так - нужно выбросить AnyEvent::HTTPD ? тюнить AnyEvent или юзать
> Twisted ?
> 
> исходники в аттаче, тестил на обычном писюке с Ubuntu
> 
> <twisted-web.py><anyevent-http.pl>-- 
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org



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