Cuando busco el rendimiento de las bibliotecas Javascript, obtengo muchos sitios que muestran la comparación del rendimiento entre las siguientes bibliotecas populares

  • JQuery (bastante lenta)
  • Prototipo (muy lenta en IE)
  • Dojo (más rápida cuando se trata de DOM)
  • ExtJs (promedio)
  • Micro JS (lenta pero bien)

Pero en cualquiera de los puntos de referencia, Google Closure Library está NO incluido. ¿No es como cualquier otra biblioteca estándar porque se dice que es una biblioteca de estilo de procedimiento?

Necesito algunos puntos de referencia sobre el rendimiento de la biblioteca Closure. Y quisiera un consejo sobre "¿Es bueno cambiar a la biblioteca Closure cuando se usa dojo en la etapa de principiante y jQuery en alguna etapa intermedia"?

Google publica que utiliza la biblioteca de cierre en todas sus aplicaciones como Gmail, etc. El rendimiento es muy bueno. ¿Esto es por la biblioteca? ¿Puede un codificador javaScript intermedio que puede escribir código OO en JS usar la biblioteca Closure a un nivel muy alto, o es aconsejable continuar usando DOJO?

6
Boopathi Rajaa 20 jun. 2011 a las 23:41

3 respuestas

La mejor respuesta

En la biblioteca de cierre

La biblioteca de cierre tiene un estilo bastante cercano al Dojo; en realidad, cuando se desarrolló por primera vez, los autores se inspiraron en Dojo.

Sin embargo, la velocidad y el poder de la Biblioteca de cierre provienen del Compilador de cierre, que optimiza en gran medida un programa JavaScript para eliminar todos los cuellos de botella (como navegar por cadenas de espacios de nombres).

Personalmente, no me gusta ni un poco, ya que resta valor a la belleza de las construcciones basadas en clases de Dojo (simplemente para satisfacer al compilador) y todos esos espacios de nombres largos goog.kitchen.sink.getMeACupOfTeaSoICanRelax() hacen que escribir (y leer) programas JavaScript sea un verdadero dolor - el hecho de que el compilador optimice todos los espacios de nombres largos no hace que sea lindo (para mí) usarlos en exceso porque usted puede .

Además, su obsesión por tratar de hacer que los programas de JavaScript se vean tanto OOP como sea posible (tal vez porque hay toneladas de programadores Java en Google) significa una excesiva dependencia de conceptos OOP como captadores y establecedores de propiedades y evitar muchos útiles (y únicos ) Características de JavaScript como mixin's. Si eres un programador de Java que está aprendiendo a programar en JavaScript, estarás en casa utilizando la Biblioteca de cierre. Eso no lo hace nada elegante.

Sin embargo, ofrece un entorno de resistencia industrial que es sólido como una roca , ya que Google ha creado sitios ENORMES con él. Es algo que (en mi opinión personal) es sólido y funciona bien, pero se ve feo.

Sin embargo, Dojo también es sólido como una roca, pero más volátil ya que es un proyecto de desarrollo de código abierto. Tú decides si te gustaría cambiar.

Sobre el compilador de cierre y el dojo

En realidad, también puedes usar Dojo con el compilador de cierre en modo avanzado. Consulte este enlace para obtener una descripción de cómo hacerlo eso. Basado en mis propias pruebas, un programa compilado por el Compilador de cierre es típicamente alrededor de un 25% más pequeño que las versiones minimizadas (debido a la eliminación de código muerto) y se ejecuta entre un 20 y un 30% más rápido para páginas simples y más para páginas grandes.

Sobre la velocidad de las bibliotecas en general

Todas las bibliotecas tienen sus propias características y peculiaridades, y cada una equilibra la facilidad de uso, la flexibilidad y la potencia con el rendimiento. Por ejemplo, jQuery crea muchos objetos jQuery en el camino y tiene una penalización de rendimiento, especialmente en navegadores más antiguos. Sin embargo, los navegadores modernos, especialmente. Google Chrome, en realidad, hace optimizaciones para que los resultados de uso de jQuery sean mínimos.

En realidad, debe preguntarse por qué necesita JavaScript para ejecutarse rápidamente. La mayoría de los navegadores modernos ya son bastante rápidos, por lo que realmente no es una consideración muy importante con respecto a la elección de la biblioteca. Elija mejor su biblioteca en función de si le conviene o no (y la tarea que tiene entre manos) en lugar de si se ejecuta 10 ms más rápido en un navegador.

Si está escribiendo un sitio web para dispositivos móviles, o está escribiendo un juego HTML5, por ejemplo, es posible que necesite exprimir la última caída de rendimiento (en los juegos) y / o guardar la mayor cantidad de recursos posible (en los dispositivos móviles). En tales casos, encuentro que usar Dojo y luego compilar con el Compilador de cierre produce una de las mejores combinaciones para tales escenarios.

7
Stephen Chung 21 jun. 2011 a las 10:11

usando dojo en la etapa de principiante y jQuery en alguna etapa intermedia

Lo has entendido mal. Dojo es mucho más avanzado que jQuery. jQuery en sí es para principiantes.

¿Puede un codificador javaScript intermedio que puede escribir código OO en JS usar la biblioteca Closure a un nivel muy alto, o es aconsejable continuar usando DOJO?

Cualquiera de las bibliotecas funcionará. Pase unas horas jugando con el cierre de Google y vea cómo lo encuentra. Dudo que haya tanta diferencia aparte de la fácil integración general con las bibliotecas de Google como Google Chart.

1
pimvdb 21 jun. 2011 a las 12:44

Sería bueno respaldar esto con algunos datos. Hay mentiras, estadísticas y puntos de referencia. Por ejemplo, puede preguntarse por qué el marco x es más lento que el marco y. Sin embargo, en general, los puntos de referencia no reflejan los escenarios del mundo real y terminan siendo divertidos, pero inútiles. He trabajado con jQuery durante algunos años y no he encontrado situaciones en las que sea lento o que haya tenido algún efecto en la usabilidad.

Si su código es demasiado lento y necesita optimizarlo. Entonces puede comparar, perfilar y depurar al dulce Jesús de ese código. Es probable que cosas como Gmail hayan recibido ese tipo de tratamiento. Entonces, gmail probablemente no sea rápido debido al cierre, pero sí rápido debido a la programación inteligente.

Si tiene miedo al código lento, es posible que desee aprender métodos genéricos de optimización de JavaScript, y será un campista feliz con cualquier marco.

editar: al cierre Elegir el cierre puede tener varias ventajas cuando se construye en grande y complejo: hay algunas buenas herramientas de optimización de ancho de banda, herramientas para administrar aplicaciones más complejas. Hay una buena guía sobre cómo escribir el código adecuado y herramientas para verificar que siguió estas pautas (linter de cierre, bastante interesante). Hay un buen sistema de plantillas (probablemente no mejorará su rendimiento per se) y cosas de administración de dependencias. Si desea integrar estas herramientas, o construir sobre ellas, le diría que lo haga, de lo contrario, puede estar tranquilo y contento con su elección para el dojo.

1
Arend 20 jun. 2011 a las 21:24