Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Optimizar rendimiento de javascript

Iniciado por alberizo, 29 de Agosto de 2007, 12:40:50 PM

« anterior - próximo »

alberizo

Me he encontrado esta página que está muy interesante para mejorar la velocidad de ejecución de javascript

http://dhtmlkitchen.com/learn/js/perf/

Además aprovecho este post para pedir una sección de programación web, ya se que este foro es más bien de videojuegos, pero muchos de aquí le damos a la web y no estaría mal tener un apartado, ¿votos a favor?

Kr0n

Un post mío relacionado, aunque más enfocado a la hora de servir los js en vez de metodología: Minify, sirviendo javascript
- Por un stratos menos tenso -

Orgulloso limpiador de www.fregocles.com
visualizeus - favoritos sociales para imágenes

Tei

Mas que ser lento javascript, que es lento. Lo lento es usar javascript[1]. Si siendo lento, metes unos calculos complejos, dentro de un bucle, y eso dura mas de dos segundos sin salir de la funcion. Esos segundos el navegador web parecera colgado. Y es posible que de tiempo a que el usuario pierda la paciencia y envie la señal de matar el navegador.
Otra manera en la que javascript puede ser lento es manipulando el arbol dom haciendo pequeños cambios cada vez, para terminar haciendo uno grande.  Si creamos una tabla grande, y lo hacemos por dom puro, sera lento.
Si lo hacemos con un innerHTML, sera instantaneo. Puede que esto sea porque durante cada modificion dispare eventos en cascada que tengan un procesamiento complejo antes de ser desechados. Ademas, en general, manejar cosas de forma "atomica" es lento en otros ambientes. Por ejemplo si haces un programa en C que lee un fichero byte a byte. Sera odiosamente lento para leer un fichero de 2 MB. Pero si lo modificas y consume un buffer de 8KB, sera instantaneo.   DOM es muy practico, pero es muy propenso a escribir esta clase de codigo lento.
Para evitar esto, hay features avanzadas.
Una busqueda de getElementById, puede partir de un elemento de subarbol, no desde la raiz.  Y tenemos una feature para clonar ramas enteras.
Posiblemente la forma mas XML de hacer grandes modificiaciones (prescindiendo de innerHTML) venga por aqui. Osea, hay mas a saber del tema de lo que hemos aprendido hasta hoy.

Extra:

Javascript puede parecer lento, ademas, cuando la pausa que se produce la genera la carga de datos. Como en el caso de una peticion ajax sincronica. En este caso se soluciona haciendo peticiones asincronicas, que no son bloqueantes.

En cosas como rollover y tal. Javascript puede parecer lento, cuando se hacen cosas que se podrian hacer con CSS.  La manera de hacer efectos en CSS es mas ligera para el navegador. Entre otras cosas porque probablemente javascript implique la creacion de un contexto, que son unos cuantos mallocs y muchas conversiones de tipos, quizas alguna llamada a recolectores de basura y cosas de estas.
r.

[1] Lo que esto quiere decir es que javascript debe usarse de herramienta de apoyo. De pegamento entre otras cosas. De esta manera no puede haber grandes problemas de rendimiento.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.