Вышел (http://nodejs.org/v0.4_announcement.html) второй стабильный релиз платформы node.js 0.4 (http://nodejs.org/) (нечетные ветки - экспериментальные, а четные (0.2, 0.4) - стабильные), позволяющей создавать высокопроизводительные сетевые приложение на языке JavaScript. Для обеспечения обработки большого числа параллельных запросов node.js использует для запуска кода асинхронную модель, основанную на обработке событий в неблокирующем режиме и определении callback-обработчиков. По своей сути node.js похож на фреймворки Ruby Event Machine (http://rubyeventmachine.com/) и Python Twisted (http://twistedmatrix.com/), но цикл обработки событий (event loop) в node.js скрыт от разработчика и напоминает обработку событий работающим в браузере web-приложением, при этом функции платформы не ограничены web и поддерживают создание обычных сетевых клиентских и серверных программ.
В качестве способов мультиплексирования соединений поддерживается epoll, kqueue, /dev/poll и select. Для обеспечени...URL: http://nodejs.org/v0.4_announcement.html
Новость: http://www.opennet.me/opennews/art.shtml?num=29616
кажись жаббер сервер вконтакте на этом написан.
Да
Все хорошо, но событийная модель может тихо взорвать мозг. Уж лучше эрланго-функциональная.
Судя по графику, nginx kicks an ass :))). Правда он не сервер приложений, но все-таки :)
Судя по графику, при количестве подключений больше 300 у ноды проблемы, поэтому авторы постеснялись сделать шкалу пошире.
Ага, на экспоненту смахивает
на графике нода 0.1
а статья уже про ноду 0.4
> на графике нода 0.1
> а статья уже про ноду 0.4Хренасе! А это так и надо - написать про 0.4, снабдив статью графиком от 0.1? oO
>> на графике нода 0.1
>> а статья уже про ноду 0.4
> Хренасе! А это так и надо - написать про 0.4, снабдив статью
> графиком от 0.1? oOТам все завязано на libevent, поэтому график в основном её производительность показывает. Скорее всего для 0.4 будет примерно такой-же график, там в плане скорости обработки Hello Word мало что изменилось. Если более сложные программы тестировать различия действительно будут заметны, но тогда некорректно будет с nginx сравнивать.
> Судя по графику, nginx kicks an ass :))). Правда он не сервер
> приложений, но все-таки :)Всегда интересно смотреть на сравнение мягкого с пушистым ... :-)))
> Судя по графику, nginx kicks an ass :))). Правда он не сервер
> приложений, но все-таки :)294, nginx же не под GPL, да, впрочем, и node.js тоже. Как ты можешь их юзать?..
Кто бы научил встроенным отладчиком пользоваться?
Результат теста производительности для выражения
for(i=0;;i++)
print(i);
и его аналогов за 2 секундыbash 30.000
node 33.000
php5 215.000
js 1.091.000 (http://www.ngs.fi/js/)
gcc(с) 2.885.000
Код в студию, чем печатали в ноде.
А на результаты perl можно посмотреть?
> print(i);Годный вброс.
Дорогие ребята. Сравнивая производителность принтов в различных языках вы не сравниваете языки. Вы сравниваете только принты. Ну и распечатка приведённого листинга заменяет направление на приём к психиатру.
> bash 30.000
> node 33.000
> php5 215.000
> js 1.091.000 (http://www.ngs.fi/js/)
> gcc(с) 2.885.000Вы имхо проверили в основном скорость вывода текста в различных языках нежели что-то еще :). Это конечно тоже показатель, но достаточно странный, особенно если вы хотели проверить скорость выражений а не скорость того или иного I/O :)
Да мне без разницы как функция принт парсит аргумент, результат работы выражения, тоже не цель работы программы, по факту замера скорости получен результат, на основе которого я сделал вывод.Мне очень нравится JavaScript, он в максимальной степени предоставляет свободу действий, которую я могу сравнить только с С, в купе с легковесностью. - С радостью заменил бы им и
стандартные инициализационные системные скрипты и php под httpd, но с такой производительностью это не имеет смысла.ngs/js показал себя с лучшей стороны, размер исполняемого файла - 300кб, по-этому на нагруженной машине инициализация программы почти не заметна, (по сравнению с тем же php, где размер "ехешника" 10М). Единственная проблема, в том, что проект уже года 3 не развивается, зато эти монстоподобные аналоги питонов плодятся как на дрожжах.
>Файл test-r.sh#!/bin/bash
function zzz() {
setsid ./killcat 2 > /dev/null 2>&1 &
cat > /dev/null 2>&1
cat | grep -m 1 -E '[0-9]....*[0-9]'
}t1='node test.js'
t2='php -f test.php'
t3='./test.sh'
t4='js ./test2.js'
t5='./test.bin'for x in 0 1 2 3 4 5 6 7 8 9; do
$t1 2>/dev/null | zzz 2>/dev/null
done
>файл test.jsfor(var i = 0;; i++)
console.log(i);>файл test.php
<?php
for($i = 0;; $i++)
echo $i."\n";
?>>файл test.sh
#!/bin/bash
i=0
while true; do
echo $i
i=$((i+1))
done>файл test2.js
for(var i = 0;; i++)
print(i);>файл test.c, для gcc -O2 test.c -o test.bin
#include <stdio.h>
int main(void)
{
unsigned long long i = 0;
while(1)
printf("%lld\n", i);
return 0;
}
>файл killcat#!/bin/bash
sleep $1
killall cat> ========================================
> Сравнивая производителность принтов в различных языках вы не сравниваете языки. Вы сравниваете только принты.1) Принт часть языка, значит сравнивается, как Вы правильно заметили, не весь язык, но часть очень часто используемая, и если ее производительность хромает, то это !повод думать, что и другие части не идеальны.
2) Проведите свой тест, более "чистый", уверен, что результат будет аналогичным, потому что разница НЕ в процентах а в порядках.
Даже с учетом тестирования вывода, тест совсем косячный.Замените для начала console.log() на util.puts()
ReferenceError: util is not definedНа роль бета-тестера не претендую, однако для самых лютых 'анонимусов', для
for(y=0;y<100;y++)
for(x=0;x<300;x++)
;time node test.js -- real 0m0.106s
time js test.js -- real 0m0.012s
time php -f test.php -- real 0m0.270sbash по понятным причинам с теста снят, впрочем только у меня возникает чувство, что эти циферки описывающие сферических цыплят подозрительно коррелируют с размером исполняемых файлов и кол-м подгружаемых библиотек?
util через require подключить надо, функция там. Посмотрите по документации. Либо код напрямую стырить:process.stdout.write(...)
Консольный логер, который вы вызывали, сначала форматирует результат. В других языках вы дергали нативный вывод сразу, а у ноды вызвали намного больше жабаскрипта перед записью.
> js 1.091.000 (http://www.ngs.fi/js/)404 :(
@автор_новости: udns уже давно заменили на c-ares
джава скрипт как аналог php - извращенцы...
извращенство - это ПХП.
> ...передают результат своей работы обратно через неименованный канал (pipe).даже на венде? :-)
так и представил: \\.\pipe\tA8hZcYw... :-)
>> ...передают результат своей работы обратно через неименованный канал (pipe).
> даже на венде? :-)
> так и представил: \\.\pipe\tA8hZcYw... :-)речь про _неименованный_ канал
...приоткрою завесу "великой" тайны -- неименовынные каналы -- в кривопридуманной венде это именовынные каналы но со случайным именем :-)а иначе небыло бы такого "удовольствия" писать под венду программульки.. еслибы не её извращённое API :-) :-D
> ...приоткрою завесу "великой" тайны -- неименовынные каналы -- в кривопридуманной венде
> это именовынные каналы но со случайным именем :-)
> а иначе небыло бы такого "удовольствия" писать под венду программульки.. еслибы не
> её извращённое API :-) :-DНебудет оно под венду работать так же хорошо как под никс ...