V8 JSON parse

Oct 11, 2011 15:42

Benchmark
~~~~~~~~~

$ perl parse-json.pl
json.read: 3ms
json.parse: 9ms
json.transform: 6ms
all: 18ms

$ php parse-json.php
json.read: 2ms
json.parse: 28ms
json.transform: 11ms
all: 44ms

$ node parse-json.js
json.read: 4ms
json.parse: 40ms
json.transform: 11ms
all: 68mshttps://github.com

nodejs

Leave a comment

Comments 19

elephantum October 11 2011, 11:48:24 UTC
хм, я ожидал результатов лучше. а если повторить 1000 раз? может быть JIT не успел все откомпилировать.

Reply

andrewsumin October 11 2011, 11:50:01 UTC
Не веришь, там ссылка на исходники

Reply

elephantum October 11 2011, 11:55:28 UTC
да-да. я ткнул на нее после того как отправил комментарий :)

не впечатляет :)

Reply


kuroi_kaze_85 October 11 2011, 12:41:14 UTC
Любопытно.

Reply


mabrek October 11 2011, 14:21:59 UTC
http://people.apache.org/~shade/talks/j1-April2011-benchmarking.pdf
про бенчмарки хорошая презентация.
Вкратце, нужно вначале греть свою VM, потом делать много повторов (100 - это мало), и таки смотреть разброс значений, чтобы отсечь случайные флуктуации

Reply

+1, тест пока ни о чем nordicdyno October 11 2011, 15:03:48 UTC
в json.read, например, вообще никакого смысла нет, если нет цели тестить IO, но его надо тестить совсем не так
all - тоже непонятно для чего измеряемая величина

Какие версии perl/php/node+v8?

Reply

Re: +1, тест пока ни о чем nordicdyno October 11 2011, 15:18:20 UTC
а по теме, похоже в JSON::XS для Perl написан наиболее более быстрый C-парзер (почему, это надо смотреть код) и js-конструкция messages.map(function (msg){ не очень эффективная (или не такая эффективная, как map в Perl - предположу, что из-за отсутствия каллбеков в Perl в этом месте теста)

Reply

Re: +1, тест пока ни о чем andrewsumin October 11 2011, 15:24:07 UTC
Пока, больше всего расстраивает JSON.parse();

Reply


rudnyh October 11 2011, 18:33:33 UTC
$ perl --version
This is perl 5, version 12, subversion 3 (v5.12.3) built for darwin-thread-multi-2level

$ php --version
PHP 5.3.6 with Suhosin-Patch (cli) (built: Jun 16 2011 22:26:57)

$ node --version
v0.4.11

Reply

rudnyh October 11 2011, 18:36:23 UTC
Ещё интересно потребление памяти:

perl: 4,9 Мб
php: 11,9 Мб
node: 17,1 Мб

Всё запускалось на MacBook Air 1,4 GHz Intel Core 2 Duo

Reply

thebits October 11 2011, 19:28:56 UTC
Это что за потребление? Размер интерпретатора в памяти или обрабатываемых данных?

Reply

rudnyh October 11 2011, 19:36:36 UTC
Размер процесса

Reply


thebits October 11 2011, 19:26:55 UTC
Ещё обнаружилось что Node странно работает с массивами.
Такой код выделяет для своей работы около 100Мб, а всего лишь используется одноэлементный массив.

function fibonacci(n) {
if (n[0] < 2)
return [1];
else
return fibonacci([n[0]-2]) + fibonacci([n[0]-1]);
}

var start = +new Date();
fibonacci([35])
var end = +new Date();
var diff = end - start;
console.log(diff);

Reply

andrewsumin October 12 2011, 11:03:09 UTC
> console.log(typeof ([1] + [2]) )
string

Reply


Leave a comment

Up