Синтетический 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.
9 октября 2008 18:46

jimidini (jimidini.ya.ru)
9 октября 2008, 19:59

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

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

bolk (bolknote.ru)
9 октября 2008, 20:13, ответ предназначен jimidini (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)
9 октября 2008, 21:43

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

bolk (bolknote.ru)
9 октября 2008, 22:16, ответ предназначен jimidini (jimidini.ya.ru):

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

aru.livejournal.com (aru.livejournal.com)
9 октября 2008, 23:26

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

bolk (bolknote.ru)
9 октября 2008, 23:42, ответ предназначен aru.livejournal.com:

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

lapinmax.ya.ru (lapinmax.ya.ru)
10 октября 2008, 09:22

Хм.
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 никаких отрицательных впечатлений.

bolk (bolknote.ru)
10 октября 2008, 10:17, ответ предназначен lapinmax.ya.ru:

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

lapinmax.ya.ru (lapinmax.ya.ru)
10 октября 2008, 10:24, ответ предназначен bolk (bolknote.ru):

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

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

zverik.livejournal.com (zverik.livejournal.com)
10 октября 2008, 10:39

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

jimidini (jimidini.ya.ru)
10 октября 2008, 13:11, ответ предназначен bolk (bolknote.ru):

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

bolk (bolknote.ru)
10 октября 2008, 14:42, ответ предназначен lapinmax.ya.ru:

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

jahson.livejournal.com (jahson.livejournal.com)
15 октября 2008, 05:19

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

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

bolk (bolknote.ru)
15 октября 2008, 10:43, ответ предназначен jahson.livejournal.com:

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

leotsarev.livejournal.com (leotsarev.livejournal.com)
15 октября 2008, 14:25

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

bolk (bolknote.ru)
15 октября 2008, 18:24, ответ предназначен leotsarev.livejournal.com:

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

leotsarev.livejournal.com (leotsarev.livejournal.com)
15 октября 2008, 20:27, ответ предназначен bolk (bolknote.ru):

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

jahson.livejournal.com (jahson.livejournal.com)
16 октября 2008, 05:43

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

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)