LINUX.ORG.RU
ФорумTalks

Парсим json в опере по хардкору

 ,


0

1

Не спрашивайте зачем, но взбрело мне в голову написать на jsPerf тест следующего плана: есть пять методов парсинга json, это нативный парсер JSON.parse, простая реализация парсинга через eval, чуть-чуть оптимизированная через google closure реализация через eval, и две огромные функции парсинга без eval, соответственно, чуть оптимизированная и оптимизированная максимально тем же closure (да, я просто как макака поставил галочки и скопировал код чтобы посмотреть как оно будет, лол). В качестве строки для парсинга я сериализовал рандомно набитый мусором объект с несколькими уровнями вложенности. Ссылка на тест: http://jsperf.com/jessey-t4 (ну и запускайте тесты что ли, любопытно, однако. Отрабатывают в районе минуты вся пачка)

Суть такова: казалось бы, нативная функция должна быть самой быстрой, остальные - как повезет (кложур оптимизирует объем и мне попадалась функция, которая тормозила после его «оптимизации» раза в 4 сильнее чем исходная). В общем-то, так и есть, но смотрим на график оперы внизу страницы, лол. Жаль, больше похожей на браузер это ее не делает :3

Для тех, кто в танкеЪ: интерпретируемому парсеру на eval в опере проигрывает даже нативный JSON.parse, причём, почти в 3(!) раза

з.ы: топик не технический ни разу, я просто привел факт, потому в толксах


Ответ на: комментарий от Deleted

Ты так говоришь, словно там не JIT.

Ты так говоришь, будто в других браузерах яваскрипт-машина написана кое-как студентами на коленке.

Дырень.

Мы про сферический случай в вакууме говорим вне контекста безопасности.

jessey
() автор топика
Ответ на: комментарий от jessey

>Ты так говоришь, будто в других браузерах яваскрипт-машина написана кое-как студентами на коленке.
При чём тут другие браузеры, няша? Ты про них вообще ничего не сказал.

>Мы про сферический случай в вакууме говорим вне контекста безопасности.
В вебе такого не бывает.

Deleted
()

Also, JSON не нужен. XML наше всё!

Deleted
()
Ответ на: комментарий от Deleted

При чём тут другие браузеры, няша? Ты про них вообще ничего не сказал.

Я думал, это очевидно, раз нативный парсинг быстрее (обычно¸ лол) скриптового, а опера быстрее нативного хромого.

В вебе такого не бывает.

Согласен. Но факт остается фактом.

Also, JSON не нужен. XML наше всё!

Ну худей же, ну.

jessey
() автор топика

мысли позитивно
это не parse тормозит, а eval настолько быстрый, что уделывает нативный парсер

wxw ★★★★★
()
Ответ на: комментарий от wxw

мысли позитивно
это не parse тормозит, а eval настолько быстрый, что уделывает нативный парсер

Это ничего не меняет же

jessey
() автор топика

А FF выдаёт такое:

Testing in Firefox 14.0.1 on Linux 64-bit
native JSON.parse(myObjStr); 70,533 ±9.62% fastest
hand window.parse(myObjStr); 26,259 ±5.20%61% slower
opt window.parseOpt(myObjStr); 26,314 ±5.14%61% slower
v2 soft jsonParseSoft(myObjStr); 7,198 ±0.43%89% slower
v2 hard jsonParseHard(myObjStr); 7,213 ±0.46%89% slower

т.е. eval в FF всё-таки тормознутее.

WatchCat ★★★★★
()

В общем-то, так и есть, но смотрим на график оперы внизу страницы

Дык, в плане скорости Опера всегда была вне конкуренции. Ты разве не знал?

AX ★★★★★
()

Нужны ещё тесты ! Компилируй сишный парсер жсона с помощью https://github.com/kripken/emscripten/wiki и запихни его туда. Потом компилируй в жаваскрипт интерпретаторы питона и пхп и запихни их в браузер и попробуй парсить через их питон/пхп джсон модули.

Bad_ptr ★★★★★
()

FF 15.0


native JSON.parse(myObjStr);
114,505 ±5.49%fastest

hand window.parse(myObjStr);
28,984 ±5.67%75% slower

opt window.parseOpt(myObjStr);
29,657 ±5.51%74% slower

v2 softjsonParseSoft(myObjStr);
12,918 ±0.57%88% slower

v2 hard jsonParseHard(myObjStr);
13,111 ±0.54%88% slower
Bad_ptr ★★★★★
()
Ответ на: комментарий от anonymfus

А чем обусловлена ТАКАЯ-ТО шустрость интерпретируемого?

jessey
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.