Тесты производительности Rhino VS Spidermonkey - PullRequest
5 голосов
/ 30 января 2012

У меня есть проект, над которым я работаю для моей компании, и сейчас мне нужно решить, какой JS Engine мне следует использовать. В настоящее время у меня есть выбор Spidermonkey или Rhino.

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

Я нашел, что поискать эту проблему сложнее, чем я ожидал.

Заранее спасибо за помощь, Бен.

Ответы [ 2 ]

10 голосов
/ 31 января 2012

Я регулярно запускаю тесты V8 и Sunspider как для Rhino, так и для Spidermonkey (отказ от ответственности: я являюсь коммиттером проекта Rhino).Текущая версия Rhino (1.7R3) все еще немного медленнее, чем Spidermonkey, но недавние git-снимки приятно удивили.(Обратите внимание, что я имею в виду интерпретированный Spidermonkey без Jaegermonkey или других JIT - Jaegermonkey работает на way быстрее.)

На V8-benchmarks-v5 Rhino 1.7R3 набирает около 360 на моей машине,Rhino git master 480, Rhino git rhino_1_8 ветка 570 и недавняя сборка Spidermonkey около 540 (чем выше, тем лучше).

Для Sunspider 0.9.1 числа равны 8890 мс для Rhino 1.7R3, 2250 мс для Rhinomaster, 2180 мс для ветви rhino_1_8 и 1390 мс для Spidermonkey (это миллисекунды, поэтому чем меньше, тем лучше).

Все тесты Rhino выполняются в Oracle JDK 1.7.0 с виртуальной машиной сервера и настройками по умолчанию, а также через несколькораунды разминки.С недавними снимками Rhino вы можете легко запускать тесты самостоятельно, используя цели ant benchmark- *.Моя сборка Spidermonkey - это снимок, сделанный несколько месяцев назад со стандартными инструкциями.

3 голосов
/ 30 января 2012

Я не знаю каких-либо тестов, сравнивающих два, но по моему опыту SpiderMonkey был быстрее. Если производительность является единственным фактором Я бы согласился с этим, поскольку V8 не вариант.

Я использую Rhino, хотя (на самом деле RingoJS , который основан на Rhino и включает реализацию CommonJS и довольно много полезных библиотек), поскольку он достаточно быстр и имеет (опять же, по моему опыту) более зрелый набор доступных библиотек / фреймворков. Он также может напрямую взаимодействовать с библиотеками Java, поэтому доступно огромное количество кода.

Вы также упомянули масштабируемость, и Rhino мог бы на самом деле иметь преимущество, потому что он имеет приличную поддержку многопоточности. В Ringo реализован слегка улучшенный API для веб-работников.

Я не знаю ни одной многопоточной библиотеки для SpiderMonkey, но они могут существовать.

...