Las vistas Gráfico de llamada de rendimiento y Detalles del método le ayudan a identificar las partes de la aplicación que consumen más tiempo. A continuación, puede investigar si se puede mejorar el tiempo de consumo de estas áreas. Cuando analiza el código de la aplicación, es útil conocer los errores de código más frecuentes que son resultado de un rendimiento ineficaz.
Cálculo innecesario: A medida que se desarrollan las aplicaciones y se refinan los algoritmos, o cambian los datos, partes del código que se necesitaban en versiones anteriores pueden caer en desuso, sin que jamás lleguen a eliminarse. Por este motivo, muchos programas grandes realizan cálculos cuyos resultados no se utilizan nunca. El tiempo que se utiliza en este código muerto causa cuellos de botella.
Otros cálculos innecesarios comunes son los que se realizan de modo automático o por omisión, aunque no se necesiten. Algunos ejemplos de este tipo de cuello de botella son aplicaciones que liberan estructuras de datos innecesariamente durante la conclusión de un programa o abren conexiones para estaciones de trabajo aunque no exista ningún usuario para las mismas. Puede perfilar el rendimiento para localizar el tiempo que se emplea en código muerto. Una vez que esté convencido de que los resultados del cálculo son innecesarios, puede eliminar el código.
Cálculo prematuro: Cualquier cálculo que se realice antes de que se necesiten sus resultados puede causar un cuello de botella. Por ejemplo, es posible que no haya ningún motivo para clasificar una lista de números si el usuario no ha solicitado que se lleve a cabo la clasificación. Los datos de rendimiento no pueden indicar si el cálculo se puede retardar; sin embargo, le puede indicar el coste del cálculo y, a partir de ahí, decidir si lo desea posponer.
Nuevo cálculo innecesario: En ocasiones, los programas vuelven a calcular valores que son necesarios, en lugar de colocarlos en antememoria para utilizarlos posteriormente. Por ejemplo, determinar la longitud de una cadena de caracteres constante puede resultar un cálculo innecesario si el cálculo está incorporado en un bucle; la longitud de la cadena de caracteres se vuelve a calcular varias veces, obteniendo en cada ocasión el mismo valor. Los datos de rendimiento le pueden indicar dónde se está produciendo el nuevo cálculo, lo que le permite decidir si desea almacenar el valor después de un cálculo.
Cálculo ineficaz: Una opción de diseño de estructura de datos o de algoritmo inadecuada puede ser causa de trabajo adicional para el programa. El rendimiento inicial puede parecer aceptable al proporcionar pequeños conjuntos de datos, pero no ajustarse correctamente al presentar conjuntos de datos más grandes o complejos. El perfilado de rendimiento le puede indicar el coste de cada cálculo a escalas diferentes, lo que le permite predecir si puede existir un problema con conjuntos de datos aún más grandes. A continuación, puede utilizar estructuras de datos y algoritmos alternativos que realicen el trabajo en menos tiempo.
Las fugas de memoria y los cuellos de botella de hebras también pueden afectar al rendimiento. Utilice los conjuntos de perfilado Detección de fugas y Análisis de hebras para recopilar datos que le permitan resolver estos problemas. Tenga en cuenta que no puede recopilar datos de detección de fugas al mismo tiempo que recopila otros datos de análisis de tiempo de ejecución.
Tema principal: Visualización y análisis de datos de rendimiento
Tareas relacionadas
Obtención de información de la vista Gráfico de llamada de rendimiento
Referencia relacionada
Vista Detalles del método
Vista Gráfico de llamada de rendimiento
Mandatos de datos del Gráfico de llamada de rendimiento