Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Node.js (https://javascript.ru/forum/server/6992-node-js.html)

Riim 06.02.2010 19:46

Так он быстрей чем PHP или я что-то не так понял?

Kolyaj 06.02.2010 20:58

Ну я в V8 не сомневался, вопрос был насколько быстрей.

Gvozd 07.02.2010 01:03

Цитата:

Сообщение от Kolyaj
Ну я в V8 не сомневался, вопрос был насколько быстрей.

а теперь давайте проведем нормальные бенчмарки?)))
голый hello-world с задержкой-не показатель
основные направления:
1)вывод "голого" HTML
2)задача на парсинг кода(мегабайт кода с одинаковыми вычислениями)
3)голые циклы
4)задача на скорость простейших арифметических вычислений(цикл с небольшим количеством вычислений)

и оценивать надо не количеством запросов в секунду(это во многом зависит еще и от апача), а продолжительностью выполнения, и потраченными CPU

Kolyaj 07.02.2010 10:00

Цитата:

Сообщение от Gvozd
а теперь давайте проведем нормальные бенчмарки?)))

Никто не против.

moro 07.02.2010 10:39

sys = require('sys');
var start = Date.now();
for(var i = 0; i < 10000000; i++){
	a = 0;
	b = a + 100;
	c = b*b;
	d = c + 123456;
	e = d/987;
	f = e*e;
}
sys.puts((Date.now() - start)/1000);

list($usec, $seconds) = explode(" ", microtime());
$start = ((float)$usec + (float)$seconds);
for($i = 0; $i < 10000000; $i++){
	$a = 0;
	$b = $a + 100;
	$c = $b*$b;
	$d = $c + 123456;
	$e = $d/987;
	$f = $e*$e;
}
list($usec, $seconds) = explode(" ", microtime());
$end = ((float)$usec + (float)$seconds);
echo $end - $start;

Запускалось из командной
средний результат:
node.js - 0.57
php - 3.71
Не знаю как точно оценить использование cpu, но когда я увеличивал размер цикла, чтобы успеть посмотреть, монитор показывал примерно одинаковые проценты использования cpu.
Вместо a = 0, ставил a = i, результаты примерно такие же:
0.64
3.96

Gvozd 07.02.2010 14:19

Цитата:

Сообщение от moro
средний результат:
node.js - 0.57
php - 3.71

очень даже замечательно
Цитата:

Сообщение от moro
Не знаю как точно оценить использование cpu

я знаю как под *NIX оценить CPU для PHP
используется ф-ция getrusage(), являющаяся интерфейсом одноименной ф-ции. не знаю, есть ли такая фишка в node.js

moro,
могу я вас попросить провести также и первые три теста?
мне интересен их результат . особенно второго

Kolyaj 07.02.2010 14:27

Цитата:

Сообщение от Gvozd
2)задача на парсинг кода(мегабайт кода с одинаковыми вычислениями)

А вот это что имеется в виду? Парсинг js(php)-кода? Так для Node это не актуально, он единожды парсится, а не при каждом запросе.

moro 07.02.2010 14:31

тестовый код давайте, сделаю

Gvozd 07.02.2010 14:32

Цитата:

Сообщение от Kolyaj
он единожды парсится

это наверняка?
то есть он при старте парсится в байт-код, который уже дальше и выполняется?

Kolyaj 07.02.2010 14:38

Цитата:

Сообщение от Gvozd
то есть он при старте парсится в байт-код, который уже дальше и выполняется?

Не совсем. Скрипт на Node -- это приложение, отвечающее на запросы. Сам себе сервер. В случае PHP апач отвечает на запросы и при надобности загружает/запускает PHP, Node всё делает сам. Т.е. когда приходит запрос, ничего не парсится и не запускается, всё уже запущено.

Поэтому для удобной отдачи статики перед Node не помешает nginx, ну или придётся писать отдельный контроллер для статики, что лишнее, т.к. со статикой прекрасно справляется nginx.


Часовой пояс GMT +3, время: 18:47.