2012-01-30 18 views
5

Tengo un proyecto en el que estoy trabajando para mi empresa y ahora necesito decidir qué motor JS debería utilizar. Actualmente las opciones que tengo son Spidermonkey o Rhino.Pruebas de rendimiento de Rhino VS Spidermonkey

Mi principal preocupación es el rendimiento y la escalabilidad. Quería saber si se realizaron pruebas de rendimiento para comparar los dos motores.

Encontré Google este problema más difícil de lo que esperaba.

Gracias de antemano por la ayuda, Ben.

+0

Yo votaría por V8, pero es difícil encontrar una buena comparación. Intenta hacer algunas pruebas básicas del navegador JavaScript. Reflejan más o menos el rendimiento del motor. – SoonDead

+0

Actualmente V8 no es una opción. Estoy buscando pruebas de perforación comparando los motores anteriores. Gracias. –

Respuesta

3

No conozco ningún punto de referencia que compare los dos, pero en mi experiencia SpiderMonkey ha sido más rápido. Si el rendimiento es la única consideración Me gustaría ir con eso ya que V8 no es una opción.

Uso Rhino (en realidad es RingoJS, que está basado en Rhino e incluye una implementación de CommonJS y bastantes bibliotecas útiles), ya que es suficientemente rápido y tiene (de nuevo, en mi experiencia) un conjunto más maduro de bibliotecas/marcos disponibles. También puede interactuar directamente con las bibliotecas de Java, por lo que hay una gran cantidad de código disponible.

También mencionó la escalabilidad, y Rhino podría tener una ventaja allí porque tiene soporte decente para multihilo. Ringo implementa una API de trabajador web ligeramente mejorada.

No conozco ninguna biblioteca multiproceso para SpiderMonkey, pero pueden existir.

+0

Examinaré el problema de subprocesos múltiples ya que podría ser lo que está causando la diferencia de rendimiento cuando se usa SpiderMonkey en comparación con Rhino. Gracias por la respuesta, Ben. –

10

Regularmente ejecuto los puntos de referencia V8 y Sunspider en ambos Rhino y Spidermonkey (descargo de responsabilidad: soy un committer en el proyecto Rhino). La versión actual de Rhino (1.7R3) sigue siendo bastante más lenta que Spidermonkey, pero las instantáneas de git recientes han mejorado bastante. (Tenga en cuenta que estoy hablando Spidermonkey interpretado sin JaegerMonkey u otros equipos conjuntos de investigación - JaegerMonkey es manera más rápida.)

En V8 puntos de referencia-V5 puntuaciones de Rhino 1.7R3 alrededor de 360 ​​en mi máquina, Rhino git amo 480, Rhino git rhino_1_8 branch 570, y una creación reciente de Spidermonkey alrededor de 540 (más alto es mejor).

Para Sunspider 0.9.1, los números son 8890 ms para Rhino 1.7R3, 2250 ms para Rhino master, 2180 ms para rhino_1_8 branch, y 1390 ms para Spidermonkey (esto es milisegundos así que es mejor menos).

Todos los puntos de referencia de Rhino están en Oracle JDK 1.7.0 con la máquina virtual del servidor y la configuración predeterminada, y después de algunas rondas de calentamiento. Con las instantáneas recientes de Rhino, puede ejecutar fácilmente los puntos de referencia utilizando los objetivos ant-benchmark- *. Mi versión de Spidermonkey es una instantánea de unos pocos meses construida con instrucciones estándar.

+0

Gracias por la información detallada sobre su experiencia con ambos. Definitivamente lo tomaré en consideración. Ben. –