Contenido

RightJS es entre 6-8 veces más rápido que jQuery

13 dic

+ 15

Hace unos meses vimos que jQuery era el framework JS más lento de los probados con TaskSpeed (un test masivo sobre frameworks JS). Ahora la versión 1.5 de RightJS, deja al framework desarrollado por John Resig a la altura del betún demostrando que és hasta 8 veces más rápido que jQuery.

Google Chrome

chrome
(Ver Imagen)

Además vemos como la versión 1.4 alpha 1, recien anunciada, mejora el tiempo de respuesta algo pero no lo suficiente para competir con RightJS en alguna de las prueabas realizadas.

Mozilla Firefox 3.5.5

ff
(Ver Imagen)

También es interesante ver en las imágenes que sobre Google Chrome, RightJS llega a ser hasta un 740% más rápido (jQuery 1.3.2) frente a los resultados en Firefox 3.5 en el que vemos que la diferencia solo es de 333% con la misma versión de jQuery, será por que John Resig trabaja en Mozilla :D

Actualizo:

Grabriel en uno de los comentarios nos pasa la url de donde se ha realizado el test. Con la aparición de la versión 1.5.0 de RightJS se decidió enfrentear con la aplicación TaskSpeed (que se encarga de testear los aspecto más comunes de los frameworks JS) esta nueva versión con la de los principales frameworks, obteniendo unos tiempos como vemos en las imágenes anteriores.

Despues nos muestra un par de optimizaciones para conseguir un tiempo similar al ofrecido por RightJS (343ms jQuery vs 80ms RightJS).

"make": function(){
	for(var i = 0; i<250; i++){
 	document.body.appendChild(
 		$(
 		"<ul id='setid" + i + "' class='fromcode'>"+
 		"<li>one</li>"+
 		"<li>two</li>"+
 		"<li>three</li>"+
 		"</ul>"
 		)[0]
 	);
 	}
 	return $("ul.fromcode").length;
}

Como podemos ver el código que deberíamos usar para poder acercarnos a ese tiempo, debemos prescindir de todo el jQuery posible, basando nuestro Script en Javascript puro y duro.

"make": function(){
	var elements = '<div>';
 	for(var i = 0; i<250; i++){
 		elements = elements+
 			"<ul id='setid" + i + "' class='fromcode'>"+
 			"<li>one</li>"+
 			"<li>two</li>"+
 			"<li>three</li>"+
 			"</ul>";
 		}
 		$(elements+'</div>')
 		.children()
 		.each(function() {
 			document.body.appendChild(this);
 			});
 return $("ul.fromcode").length;
}

Aclaración

Evidentemente un Framework Javascript no se evalua únicamente por la velocidad de ejecución, sinó que hay factores igual o más importantes, como la documentación, comunidad y compatibilidad con navegadores. Este estudio, únicamente debe servir para detectar este problema y conocerlo para poder encontrarle solución en caso de toparnos con este problema.

  • Es todo un descubrimiento este framework, al que le queda mucho camino aún, pero que supera ya en rendimiento a los demás.

    No he podido aguantarme y echarle una ojeada al código, jeje.

    Creo que es la ruta a seguir, pues se encarga de implementar las funciones del standard que no existen en ese navegador para, después, incrementar las posibilidades.

    Es curiosa la diferencia de velocidad en Firefox, sin duda Resig lo ha optimizado al máximo para su navegador. En fin, quién mejor que él para conocer sus entresijos, jeje.

    Un saludo!

  • Tendrán morro los tíos. Utilizan los métodos nativos del navegador ofreciendo una compatibilidad muy pobre con IE y navegadores antiguos (esta claro que no es casualidad que no hallan puesto las pruebas en IE, sino las de los navegadores que si que tienen soporte para estas cosas). Y no digamos todos esos selectores especiales que tiene jQuery que no podrás usar en esto.

    Ademas, jQuery tiene ¡¡¡Su propia implementación de los eventos!!! no usan la de el navegador por que hay muchos bugs en IE.

    Es normal que valla mas lento, pero también soluciona muchos mas problemas que esto no puede.

    Y vamos, ya no hablo de la comunidad, plugins, y pésima documentación que tiene esto.

  • Hola! Muy bueno el blog, lo sigo a diario.
    Justo hace unos días lei una nota sobre el mismo tema:

    http://www.debuggable.com/posts/rightjs-1-5-6-8-times-faster-than-jquery:4b1fc009-1940-4d26-bdc6-0af2cbdd56cb

    Donde hay un interesante intercambio de opiniones con el creador de RightJS en los comentarios. Al parecer no es tan asi que sea 6 u 8 veces más rápido y de hecho el creador no lo menciona en ningún lado en su stitio.

    Ssludos.

  • Buen dato de esta nueva librería, pero me parece exagerada la comparación ya que no se puede evaluar uno u otro solo por la velocidad, hay que ver comunidad, pluggins, soporte, etc. Esperemos como se desarrolla este framework para poder calificarlo mejor.

  • Es posible que sea más rápido que jQuery, pero jQuery es más rápido que el ojo humano, y eso lo único que vale.

    Lo demás son cuestiones futiles que sólo tienen sentido a un altísimo nivel, no en el día a día del diseño web.

  • Personalmente, contra más utilizo jQuery, más enamorado estoy … incluso estoy pensando en hacer una donación, con todo mi espíritu Navideño :D
    Me encanta su concepto, su planteamiento, la ‘chainability’ …
    Con jQuery he hecho cosas flipantes en pocas líneas y he hecho cosas que me hubieran parecido imposibles (recientemente, he hecho una especie de Netvibes para una intranet).

  • Menudo palizón. Muy a tener en cuenta este RightJS, que además también incluye RightJS UI.

    De todos modos, yo de momento seguiré siendo fiel a jQuery, que será más lento pero ahorra código cosa fina; y su documentación es maravillosa. Si jQuery forma parte del núcleo de los desarrollos de Nokia y el MS Visual Studio (entre otros), es por algo…

  • El mejor no es el más rápido (sin despreciar el paradigma “Apollo XI” de llevar dos hombres a la luna con un computador de 60KB de memoria).

    El mejor es el más documentado y que además, funcione!

  • Supongo que con poner “Update: Información sobre el test” ya queda todo clarísimo.

    Pero por si acaso, para aquellos que pasen por aquí en el futuro: “Información sobre el test” significa “Ojito. Leed esta explicación para ver que eso de “6-8 veces más rápido que XXX” es una patraña.

    • @Venkman: Cierto, debería explicarlo un poco más. Me pongo a ello.

      Sobre lo de que es una patraña, no estoy de acuerdo. Si te fijas, la forma de hacer que jQuery sea más rápido que RightJS es no usando nada de lo que jQuery ofrece para generar DOM. Básicamente el ejemplo usa la especificación DOM de Javascript puro y duro.

      A todos los demás, no intento desmerecer jQuery ya que no creo que haya nadie más fanático de él que yo, pero hay que ser crítico y aunque estas milésimas no signifiquen nada en el código del día a día, es primordial conocerlas para que tengamos un abanico más grande posibilidades entre las que elegir.

    • @aNieto2k:

      Yo creo que sí es una patraña, aNieto, porque la conclusión de la aclaración no es “puedo hacerlo igual o más rápido con jQuery” (*) sino “puedo hacer una comparativa que diga exactamente lo que yo quiera que diga y soporte cualquier conclusión que yo quiera exponer”.

      O como dice literalmente: “jQuery is NOT faster in this example. Don’t believe the numbers you see. They have been meaningless all along.”

      Por otra parte, aclaro que tampoco estoy intentando defender jQuery. Ya me gustaría que mejorara su rendimiento. Es el hecho de hacer una comparativa sesgada lo que señalo.

      (*) Y no es “prescindir de usar jQuery” sino “usar menos”. Porque de todos modos es lo que hace con RightJS: usar appendChild y createElement.

    • @Venkman: Evidentemente estos resultados se tienen que coger con pinzas (como casi todas las estadísticas).

      jQuery no es rápido en ese ejemplo, pero no es la primera vez que lo vemos “lento” en temas de manejo de DOM. Básicamente, es lento por que ofrece una seguridad extra que RightJS (o Javascript puro y duro) no ofrece. El resultado es lógico y el que creo que RightJS es más rápido que jQuery en igual de condiciones está equivocado.

      Pero tampoco hay que negar las evidencias, jQuery es lento, y las pruebas de TaskSpeed lo demuestran frente a MooTools, Prototype o Dojo que ofrecen las mismas posibilidades que él.

      Quizás sea por le planteamiento general del framework y es ahí donde jQuery ha de trabajar (en mi opinión). O en su defecto, nosotros conocer los puntos flacos y saber como solucionarlos.

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.