2010-01-17 39 views
8

He estado buscando el código JavaScript de otras personas, y me he dado cuenta de que muchos programadores tienden a crear funciones que podrían combinarse con las funciones que los están llamando. Un ejemplo es this; la función 'initWebGL' podría combinarse con la función 'inicio' y funcionaría de la misma manera. Otro ejemplo está en la fuente de this, donde la función 'tick', que se llama cada 15 milisegundos, hace llamadas a otras dos funciones que pueden combinarse con 'tick'. Entiendo las cualidades organizativas de esto, pero tengo curiosidad sobre el efecto en el rendimiento. ¿Está haciendo esta buena práctica, especialmente teniendo en cuenta que JavaScript es un lenguaje interpretado?¿Qué tan caras son las llamadas a funciones en JavaScript?

+1

¿Esto no depende de qué intérprete utilizas? – kennytm

+1

Si un lenguaje de programación requiere que pierda organización para ser lo suficientemente eficiente, ese lenguaje debe ser activado. – seanmonstar

+4

Las llamadas a funciones en Javascript son menos costosas que la pesadilla de mantenimiento causada por un código mal organizado. – friedo

Respuesta

9

La mejor práctica para cualquier idioma es escribir código que sea legible y mantenible primero, y luego para optimizar si necesario.

Si su programa se ejecuta lo suficientemente rápido dividido en trozos fáciles de digerir, entonces déjelo así. Si se está ejecutando lentamente, entonces como hobodave mencionado, perfil para encontrar la causa de la lentitud.

Las posibilidades son, que va a ser causado por algo más que llamar a funciones, pero si es causado por eso, entonces comienza a combinar funciones juntas, una vez que lo haya rastreado hasta eso.

4

La mejor manera de aprender "llamadas a funciones caros son", una métrica específica completamente vago y contexto, es al perfil usted mismo:

8

http://www.slideshare.net/madrobby/extreme-javascript-performance diapositivas 10..19

10 000 llamadas hace una diferencia en el IE y Firefox. 1 llamada no.

+0

Whoa, esto es muy interesante! ¡Gracias una tonelada! – Skofo

+0

Lo que tomo de la prueba (con los niveles de rendimiento del motor de 2010) es aproximadamente un costo mínimo de 1ms por cada mil llamadas. Solo para cuantificar tu respuesta. – hexalys

Cuestiones relacionadas