2011-03-10 11 views
14

¿Cuánto tiempo requiere el uso de try/catch en JavaScript? Tengo una aplicación y la estoy usando en una función que se llama unos cientos de veces. Ahora me temo que la declaración try/catch está tomando demasiado tiempo y la aplicación tardará mucho más que sin ella.Uso de try-catch en JavaScript

+5

¿Has medido algo? – Kangkan

Respuesta

10

Hay algunas pruebas agradables en jsPref:

Conclusión: en el principal navegador, nula a diferencias mínimas.

+0

Sin diferencia SI el bloque catch nunca se ingresa. Si lo hace puede causar grandes problemas de rendimiento b/c catch blocks son alcance dinámico. Nunca los use para lógica de programa, solo para errores inevitables reales. http://yuiblog.com/assets/High_Perf_JavaScr_Ch2.pdf – sym3tri

+0

Las funciones que contienen sentencias try y catch son inlined si no se lanza un error, de lo contrario, si es el método/función se des-optimiza. – simonrichardson

2

La cláusula try/catch crea un nuevo ámbito en javascript, por lo que cada variable que provenga del ámbito principal será un poco más lenta.

La sobrecarga no es que grande pero demasiado grande para ignorar por completo los circuitos internos.

Tome un vistazo a este vídeo para una explicación más en profundidad: http://www.youtube.com/watch?v=mHtdZgou0qU

+4

No es correcto decir que un bloque 'try' presenta un nuevo alcance. – Pointy

+0

@Pointy: cierto, pero no puedo pensar en una mejor descripción en este momento. ¿Tienes alguna sugerencia? – Wolph

+0

Sé lo que está aprendiendo, pero no conozco la sofisticada terminología de "abogado de idiomas" :-) – Pointy

1

En general, código que se ejecuta dentro de un bloque try es caro. Pero si está invocando un bloque try del orden de unos cientos de veces, probablemente no sea un problema. Si se tratara de unos pocos cientos de miles, es posible que desee volver a pensar en su diseño.

7

Usted debe tomar nota de lo siguiente:

“La primera regla de la optimización del programa: no lo hacen. La Segunda Regla de la Optimización del Programa (solo para expertos): No lo hagas aún. "- Michael A. Jackson

He perdido tiempo optimizando secciones de código que tuvieron poco impacto en el rendimiento. Asegúrate de saber qué es lento ejecutando algunos experimentos de sincronización.

Cuestiones relacionadas