Al hacer soporte técnico para los clientes, a menudo vemos las anormalidades de muchos clientes. Después de eliminar estas anormalidades, la velocidad de ejecución del código se ha mejorado considerablemente en comparación con antes. Esto nos permite tener una suposición de que el uso de anormalidades en el código traerá una sobrecarga de rendimiento significativa. Debido a que las anormalidades son una parte importante de la situación incorrecta, es imposible abandonar, por lo que debemos medir el impacto del tratamiento anormal en el rendimiento.
experimento
Mi experimento se basa en un código simple simple que lanza aleatoriamente. Desde una perspectiva científica, esta no es una medición completamente precisa, y al mismo tiempo, no sé cómo hacer el código operativo en el código de ejecución. Pero en cualquier caso, este código debería permitirnos comprender algunas situaciones básicas.
El resultado es muy interesante: el costo de lanzar y capturar anormalidades parece ser extremadamente bajo. En mi ejemplo, es de aproximadamente 0.02 milisegundos. A menos que realmente arroje demasiadas anormalidades (nos referimos a 100,000 o más), esto se ignora básicamente. Aunque estos resultados muestran que el procesamiento anormal en sí no afecta el rendimiento del código, no ha resuelto el siguiente problema: ¿quién es responsable del gran impacto en el rendimiento?
Obviamente me perdí cualquier problema importante.
Después de pensar en eso nuevamente, me di cuenta de que me perdí una parte importante del tratamiento anormal. No consideré lo que hiciste cuando ocurrieron anormalidades. ¡En la mayoría de los casos, es probable que no solo capture anormalidades! El problema está aquí: en general, intentará complementar el problema y dejar que la aplicación aún juegue con el usuario final. Entonces, lo que me perdí es: "" "" Código complementario "" para manejar las anormalidades. Dependiendo del código diferente, la pérdida de rendimiento puede ser bastante significativa. En algunos casos, esto puede significar centrarse en la conexión con el servidor, y en otros casos, puede significar usar la solución de reversión predeterminada, y la solución proporcionada por esta solución definitivamente traerá un rendimiento muy malo. Esto parece dar una buena explicación del comportamiento que vemos en muchos casos.
Sin embargo, no creo que el análisis sea todo aquí, pero siento que se ha perdido algo más aquí.
Rastro de pila
Todavía tengo curiosidad sobre este problema, y por esta razón, monitoreé cómo cambia el rendimiento al recopilar el rastro de Strack.
Este es el caso que ocurre a menudo: para escribir la trayectoria anormal y su pila, trate de averiguar dónde está el problema.
Por esta razón, modifiqué el código y recopilé el rastro de Strack anormal. Esto ha cambiado la situación significativamente. El efecto de rendimiento en la recolección de rastreo anormal de Strack es 10 veces mayor que simplemente capturar y arrojar anormalidad. Por lo tanto, aunque Strack Trace ayuda a comprender dónde ocurren los problemas (puede ayudar a comprender por qué ocurren los problemas), existen pérdidas de rendimiento. Como no estamos hablando de un rastro de Strack, el impacto aquí a menudo es muy grande. En la mayoría de los casos, debemos lanzar y capturar anormalidades en múltiples niveles. Veamos un ejemplo simple: el cliente de servicio web está conectado al servidor. En primer lugar, hay una anormalidad en el nivel de la biblioteca de Java. Desde entonces, habrá clientes anormales en el nivel de marco, y puede haber llamadas lógicas comerciales anormales en el nivel de aplicación en el futuro. Hasta ahora, se deben recolectar un total de tres rastros de Strack. En la mayoría de los casos, puede ver estos rastreos de Strack desde archivos de registro o salida de la aplicación, y escribir estos largos traza de Strack a menudo también también también tienen efectos de rendimiento.
en conclusión
En primer lugar, no es bueno descartar anormalidades anormales debido al impacto del rendimiento. Ayuda inusual a proporcionar una forma consistente de resolver los problemas operativos y ayudar a escribir código limpio. Pero debemos rastrear la cantidad anormal arrojada en el código, lo que puede causar efectos de rendimiento significativos. Por lo tanto, OnEPM tiene que rastrear las anormalidades lanzadas por defecto, en muchos casos, las personas se sorprenderán por las anormalidades en el código y la pérdida de rendimiento al resolver estas anormalidades. En segundo lugar, aunque es muy beneficioso de usar, también debe evitar capturar demasiado rastro de Strack. Las anormalidades deben diseñarse para condiciones anormales, y este principio debe tenerse en cuenta al usarlo. Por supuesto, en caso de que no quiera seguir buenos hábitos de programación, el lenguaje Java le informará que hacerlo puede hacer que su programa se ejecute más rápido y alentarlo a que lo haga.
Lo anterior es todo el contenido de este artículo.