[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