Пишу, по большей части, про историю, свою жизнь и немного про программирование.

Синтетический JS-тест

Есть у меня такой любимый синтетический тест браузеров — запускать на своём древнем интерпретаторе языка Brainfuck вычисление числа Пи (программа есть на том же сайте).

Для интереса запустил его на браузерах, которые нашлись у меня на машине. Итог:

FireFox 3.1b1pre — 693 + JIT (410) = 1103 Opera 9.60 — 1141 + JIT (828) = 1969 Safari 3.1 — 1719 + JIT (547) = 2266 IE8 beta 2  — 2422 + JIT (843) = 3265 Chrome 0.2.149.30 — 7731 + JIT (950) = 8681

«1719 + JIT (547) = 2266» означает, что браузер проработал чуть больше двух секунд, из них полсекунды заняла внутренняя оптимизация кода на Brainfuck, которую делает мой интерпретатор, а 1.7 секунды выполнялся код на Brainfuck.

Как видно у Chrome не всё хорошо с JavaScript.

18 комментариев
jimidini (jimidini.ya.ru) 2008

не понял я как провести этот тест у себя ;)

можешь сделать тест в свежем webkit? очень интересно как он себя покажет

Евгений Степанищев (bolknote.ru) 2008

Комментарий для jimidini.ya.ru:

Давай лучше расскажу что делать, попробуешь. Я домой скоро ухожу.

1) открываешь интерпретатор bf ( http://bf.kzn.ru/bfi.htm )
2) пишешь там «e pi.b», Enter
3) появляется текстовое поле, копируешь туда программу вычисления Пи ( http://bf.kzn.ru/program/pi.b ), жмёшь «Shift+[»
4) пишешь «r pi.b v», через несколько секунд видишь результат

Естественно, сравнивать браузеры надо на одной и той же машине

jimidini (jimidini.ya.ru) 2008

Webkit: 780 + JIT (428) = 1208
Firefox 3.1b2pre: 993 + JIT (358) = 1351
Safari 3.1: 1563 + JIT (378) = 1941
Opera 9.6: 2210 + JIT (1160) = 3370

Евгений Степанищев (bolknote.ru) 2008

Комментарий для jimidini.ya.ru:

В FF3.1 JIT в JavaScript включен?

aru.livejournal.com 2008

в хром проблемы с Математиков в ДжСк, а не с самим ДжаваСкрипт.

Евгений Степанищев (bolknote.ru) 2008

Комментарий для aru.livejournal.com:

А в чём, собственно, разница. Что значит «сам JS», без «математики»?

lapinmax.ya.ru 2008

Хм.
Opera 9.23b8808: 3625 + JIT (7281) = 10906.
FireFox 2.0.016: 19625 + JIT (750) = 20375.
Обе версии Windows, на одной машине, несколько запусков подряд (результаты повторяемые)
Абсолютные величины не важны (пусть комп тормозной), но онлайн приложения типа Google.Reader, Mail.Yahoo, GMail субъективно на  Opere тормозят от жить невозможно (Yahoo) до сильно торомозит (GMail). Тогда как на FireFox никаких отрицательных впечатлений.

Евгений Степанищев (bolknote.ru) 2008

Комментарий для lapinmax.ya.ru:

Там обращения к DOM, а тут математика. Кстати, а с чем связано использование таких древних браузеров?

lapinmax.ya.ru 2008

Комментарий для Евгения Степанищева:

Ну вот видимо об этом и говорил “aru”. Что математика быстрая, но  на скорость работы реальных скриптов оказывают влияние другие факторы.

Принцип «Работает — не трожь» :-) Тем более на рабочем месте.

zverik.livejournal.com 2008

В опере 9.50 сильно ускорили JS, так что 9.23 — не показатель :)

jimidini (jimidini.ya.ru) 2008

Комментарий для Евгения Степанищева:

включен
в новом webkit просто тоже jit ;)

Евгений Степанищев (bolknote.ru) 2008

Комментарий для lapinmax.ya.ru:

Тем не менее, FF3.1 бьёт Chrome и по математике и по взаимодействию с DOM.

jahson.livejournal.com 2008

А Chrome бьёт FF3.1 (точнее, V8 бьёт TraceMonkey) в вопросе рекурсии. Хотя, это, конечно, спорное преимущество.

По теме: http://ejohn.org/blog/javascript-performance-rundown/

Евгений Степанищев (bolknote.ru) 2008

Комментарий для jahson.livejournal.com:

Что-то я не понял. Автор JIT-то включал?

leotsarev.livejournal.com 2008

Первое. JIT от Tracemonkey вообще рекурсию не оптимизирует никак. Это его слабое место пока, соответствующий кусок в процессе разрабоки.
Второе. Boris Zbarsky пишет в комментариях, что тоже самое и с DOM — кусок вокруг вызова DOMa не JIT’ итися, но  «This situation is not planned to persist for long.»

Евгений Степанищев (bolknote.ru) 2008

Комментарий для leotsarev.livejournal.com:

Второе — большая жаль.

leotsarev.livejournal.com 2008

Комментарий для Евгения Степанищева:

Вроде обещают поправить к релизу 3.1

jahson.livejournal.com 2008

Я думаю, так как автор непосредственно замешан в js мозиллы, то наверное включал :)
Ну и естественно, про рекурсию в трэйсманки там сказано.