[Moscow.pm] Twiggy
Dmitry Karpich
meettya на gmail.com
Вт Июл 31 05:02:12 PDT 2012
Всем привет!
Не холливар, просто для размышлений. Долгих :)
Перевел пример на nodejs - https://github.com/Meettya/node-url-shortener
старался по возможности ближе к исходному делать, дабы сравнение было валидно более-менее.
Если кратко:
-----
по скорости -
perl - Requests per second: 423.34
Transfer rate: 42.17
node - Requests per second: 1323.04
Transfer rate: 267.45
----
по стабильности - при попытке сделать на моем маке
./ab -n 10000 -c 130 -k http://192.168.1.2:8080/?url=$RANDOM
получаю
Can't locate URI/http.pm: Too many open files at (eval 45) line 2, <> line 6.
AnyEvent::Handle uncaught error: Broken pipe at /Users/meettya/perl5/perlbrew/perls/perl-5.16.0/lib/site_perl/5.16.0/Twiggy/Server.pm line 601.
Если перегрузить ноду она просто делает отлуп ab, ничего не падает
(хз как его настраивать, не силен я в ab и во всем что с ним связано)
----
по расширяемости - для ноды это + 10 строк копипастного кода - и у вас кластер. та-даам!!
---
по читаемости - имхо паритет, в любом случае асинхронный код лапшеват выходит, можно отрефакторить, но пока лениво
все результаты здесь https://gist.github.com/3216375
+ можете погонять на своей машине, постарался облегчить процесс установки
Короче, если кто-то еще считает, что нода "сыро и медленно" - у вас устаревшие сведения. Сильно устаревшие.
PS. вот описание системы -
perl - v5.16.0
node - v0.8.1
uname -a
Darwin TravelMate.local 11.4.0 Darwin Kernel Version 11.4.0: Mon Apr 9 19:33:05 PDT 2012; root:xnu-1699.26.8~1/RELEASE_I386 i386
PPS. Пошел бы на удаленке на node-powered проект :)
On Jul 30, 2012, at 10:04 PM, Alexey Shrub wrote:
> Всем привет,
>
> набросал для эксперимента простенький сокращатель ссылок на Twiggy
> https://github.com/worldmind/perl-url-shortener
> работает, но у меня пока нет полного понимания всё ли правильно сделано, документации по твигги что-то совсем не нашёл, есть пример
> https://github.com/miyagawa/Twiggy/blob/master/eg/chat-websocket/chat.psgi
> но мне это мало помогло (видимо из-за коллбеков) и где-то откопал немного иной стиль с возвратом анонимной сабы и
> $w->write( "Short for $url is $server$short_url" );
> undef $w;
> но не понятно какой способ рекомендуемый и чем отличается. Есть хоть какие-то ещё доки и примеры?
>
> Ещё думаю как его отрефакторить чтобы почитаемее было.
>
> И падает он периодически, видимо поэтому
> https://rt.cpan.org/Public/Bug/Display.html?id=78177
> у кого-то стабильно работает?
>
> --
> Alexey Shrub
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20120731/3d9abd79/attachment-0001.html>
Подробная информация о списке рассылки Moscow-pm