Фибоначчи на Node.JS и Erlang, рак и мрак

Oct 04, 2011 04:42

Ted Dziuba - известный тролль.

Пару дней назад в интернетах пробежала статья «Node.JS is Cancer», (по-русски на Хабре: http://habrahabr.ru/blogs/nodejs/129640/) в которой он какой-то пурги набросал на Node.JS, даже не смешно. Не смешно это потому, что там лажа какая-то, наброс ( Read more... )

erlang

Leave a comment

Comments 118

rainman_rocks October 4 2011, 11:59:14 UTC
Никогда не понимал зачем бенчмаркить заведомо неэффективный алгоритм.
Оценка боевых характеристик оружия по тому, насколько удобно из него стрелять себе в ногу?

Reply

lionet October 4 2011, 12:01:29 UTC
Реперные точки ещё никогда никому не мешали. Потому что если сравнивать более сложные системы - там чёрт ногу сломит из-за огромного количества переменных и выбранных путей реализации. Спорить о тестировании сложных систем можно до бесконечности.

С другой стороны, Erlang VM имеет репутацию медленного рантайма, и данный тест её пошатывает. По крайней мере, на первый прикид не хуже, чем хвалёный V8.

Reply

tzirechnoy October 4 2011, 13:49:08 UTC
С этим фиббоначи есть такая проблема: регулярно появляется оптимизатор, который автоматически преобразует алгоритм в эффективный. (Ну, один кэш значений разгоняет его в дохрена раз.) И вот смотришь ты на результат, и думаешь: ну и что? Я так и вручную где надо могу, у меня оно всё равно не сработает.

Reply

lionet October 4 2011, 16:14:55 UTC
На результаты данного теста это наблюдение не влияет.

Reply


(The comment has been removed)

lionet October 4 2011, 12:05:17 UTC
Я ждал этого коммента. Я его дождался.

Вот чистое время выполнения fibonacci(0):
[vlm@nala:~]> time node fib0.js

real 0m0.122s
user 0m0.090s
sys 0m0.025s
[vlm@nala:~]>

Как видим, на выводы, сделанные в моём посте, вызов интерпретатора через `time node fib.js` не влияет. Оверхед от вызова time node сравним с ошибкой измерения времени выполнения вызова fibonacci(40).

Reply

ext_190889 October 4 2011, 12:18:46 UTC
Очень странная логика вырисовывается из этого "Я ждал этого коммента". Мол, "в данном конкретном случае нарушение методологии равных посторонних значений для разных наблюдений не приводит к ошибке, значит я это нарушение научного метода оставлю". При всём уважении, как-то странновато.

Reply

lionet October 4 2011, 12:23:44 UTC
Я не очень люблю абстрактных критиков, которые готовы подловить на формализмах или методологии, а не на сути. И периодически специально подставляюсь, чтобы добавить аргументов в костёр. Мои слова про "дождался" относятся как раз к такому роду ловильщиков от методологии. Опять же, при всём уважении к anatooly.

Reply


mr_aleph October 4 2011, 12:27:56 UTC
код в студию :-)

Reply

mr_aleph October 4 2011, 12:28:51 UTC
и конечно же: версию ноды и архитектуру.

Reply

lionet October 4 2011, 12:31:35 UTC
v0.5.0-pre; Core 2 Duo.

Reply

mr_aleph October 4 2011, 13:19:54 UTC
пардон за неточность вопроса: архитектура я имел ввиду архитектуру под которую собрана нода (важнее всего разрядность).

Reply


hmepas October 4 2011, 13:43:49 UTC
Не пользовал node.js но от Javascript уже не деться ведь никуда. Он есть и им пользуются. Если язык есть и он активно используется то почему б не иметь под него интерпретатор не завязанный на браузер?

И тем более не понятно при чем тут вообще Erlang? Вопрос не риторический, т.к. ни node.js ни erlang я не пользуюсь поэтому действительно интересно чем руководствовался при сравнении, языки то разные да и область применения у них разная?

И да, если выложены бенчмарки для питона и раби, то явно не хватает еще и перла:
$ time ./fib.pl

real 3m45.095s
user 3m42.778s
sys 0m0.240s

$ cat fib.pl
#!/usr/bin/perl -w
use strict;

fib(40);

sub fib {
my $n = shift;

return 1 if $n < 2;

return fib($n-2) + fib($n-1);
}

$ uname -a
Linux it-clever.ru 2.6.26-2-amd64 #1 SMP Tue Mar 9 22:29:32 UTC 2010 x86_64 GNU/Linux

$ cat /proc/cpuinfo | grep 'model name'
model name : Dual-Core AMD Opteron(tm) Processor 1218
model name : Dual-Core AMD Opteron(tm) Processor 1218

Хотя он погоды и не сделал.

Reply

lionet October 4 2011, 16:19:29 UTC
Вопрос не риторический. Потому что JS сам по себе - фиг с ним, без него никуда на клиенте. Но в виде Node.JS он залезает на вотчину Эрланга, часто пытаясь решать примерно те же задачи: написание систем массового обслуживания.

Reply

rainman_rocks October 4 2011, 18:29:29 UTC
Ruby произносится "руби".

Жабоскрипт - не очень хороший язык. При наличии питона и руби он нахрен не нужен на сервере.

Перл, к счастью, уже умер. Не трогайте бяку, незачем.

Reply

hmepas October 4 2011, 18:43:54 UTC
Умер это через чур категорично. Куча админских скриптов как писалась на перле так и будет писаться.
Да и среди ПО только того что уже на нем написано, одной поддержки хватит еще лет на 10 =)
Кстати по-прежнему можно встретить хостинги где питон и руби не поддерживаются, а перл есть. Я конечно не призываю ими пользоваться (при нынешних ценах на VPS то) но тем не менее.

Reply


grez_ua October 4 2011, 13:49:56 UTC
Я вот одного непойму - нод, этот, жс какимто боком конкурирует с ерлангом, или наоборот ?

Reply

david_m October 4 2011, 13:56:06 UTC
Эрлангеры считают, что да:)

Reply

levgem October 4 2011, 15:05:50 UTC
Да. Люди переходят на Node.js с руби, питона и php под давлением блогов вместо того, что бы воспользоваться erlang.

При этом Node.js _всем_ хуже Ruby и Питона. Правда, всем лучше чем php.

Reply

fixed thedeemon October 4 2011, 15:33:23 UTC
Люди переходят на Node.js с руби, питона и php под давлением блогов вместо того, что бы воспользоваться scala, haskell и ur/web. :)

Reply


Leave a comment

Up