Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Actualización: noviembre 2007
En este tutorial se muestra cómo generar perfiles de una aplicación para identificar problemas de rendimiento.
En este tutorial, recorreremos paso a paso el proceso de generación de perfiles de una aplicación, así como la utilización del muestreo y la instrumentación para aislar e identificar los problemas de rendimiento de la aplicación.
En este tutorial realizará los siguientes pasos:
Generar perfiles de una aplicación utilizando el método de muestreo.
Analizar los resultados de generación de perfiles mediante muestreo para buscar y corregir un problema de rendimiento.
Generar perfiles de una aplicación utilizando el método de instrumentación.
Analizar los resultados de generación de perfiles mediante instrumentación para buscar y corregir un problema de rendimiento.
Requisitos previos
Microsoft Visual Studio 2005 Team System.
Nivel intermedio de comprensión de C#.
Una copia de Ejemplo PeopleTrax (Herramientas de generación de perfiles).
Para trabajar con la información proporcionada por la generación de perfiles, es preferible disponer de la información de símbolos de depuración.
Generar perfiles utilizando el método de muestreo
El muestreo es un método de generación de perfiles mediante el cual el proceso en cuestión se sondea periódicamente para determinar la función activa. Los datos resultantes proporcionan un recuento de la frecuencia con que esa función ha estado en la parte superior de la pila de llamadas al muestrear el proceso.
Para generar perfiles de una aplicación utilizando el método de muestreo
Abra la solución PeopleTrax en Microsoft Visual Studio 2005.
La solución PeopleTrax rellenará el Explorador de soluciones.
En el menú Analizar, haga clic en Iniciar Asistente de rendimiento.
Aparece el Asistente de rendimiento.
En la lista desplegable Destinos disponibles, seleccione PeopleTrax y, a continuación, haga clic en Siguiente.
Haga clic en Muestreo y, a continuación, en Siguiente.
Haga clic en Finalizar.
Establezca la opción de configuración del proyecto en Lanzamiento.
Se recomienda usar la versión de lanzamiento para detectar los problemas de rendimiento en una aplicación.
Se recomienda una versión de lanzamiento para la generación de perfiles porque una versión de depuración tiene información adicional compilada internamente, lo que puede afectar negativamente al rendimiento e impedir que se muestren con precisión los problemas de rendimiento.
Una versión de lanzamiento no proporciona automáticamente información de símbolos. Para configurar la versión de forma que la información de símbolos aparezca en los informes de rendimiento del generador de perfiles, vea /Z7, /Zi, /ZI (Formato de la información de depuración) y Cómo: Hacer referencia a información de símbolos de Windows.
En la barra de herramientas del Explorador de rendimiento, haga clic en Iniciar.
Visual Studio 2005 genera el proyecto y empieza a generar los perfiles de la aplicación. Aparecerá la ventana de la aplicación PeopleTrax.
Haga clic en Get People.
Haga clic en Exportardatos.
Se abrirá el Bloc de notas con un nuevo archivo que contiene los datos exportados de PeopleTrax.
Cierre el Bloc de notas y, a continuación, cierre la aplicación PeopleTrax.
Visual Studio 2005 genera un informe de sesión de rendimiento (*.vsp) y lo carga automáticamente.
Para analizar los resultados de la generación de perfiles mediante muestreo
En la barra de herramientas de la ventana del generador de perfiles, abra el cuadro desplegable de la vista de informe y seleccione la vista Funciones del informe.
Haga clic con el botón secundario del mouse en la cuadrícula de datos y, a continuación, haga clic en Agregar o quitar columnas.
Aparecerá el cuadro de diálogo Agregar o quitar columnas.
En la lista de columnas, seleccione Nombre de archivo de código fuente y, a continuación, haga clic en Aceptar.
En la cuadrícula de datos, haga clic en la columna Nombre de archivo de código fuente para ordenar la cuadrícula de datos.
Al ordenar por esta columna, se agrupan todas las filas aplicables a la solución PeopleTrax.
Busque las filas que muestran datos correspondientes a la solución PeopleTrax.
Después de examinar estas filas, observará que las funciones siguientes se han muestreado con más frecuencia que otras partes de la solución PeopleTrax:
PeopleTrax.Form1.GetPeopleButton_Click
Fíjese en el evento GetPeopleButton_Click.
Haga clic con el botón secundario del mouse en la fila PeopleTrax.Form1.GetPeople_Click reman y, a continuación, hacen clic en Ver código fuente.
Se abrirá Form1.cs en el editor de código y aparecerá el puntero en el evento GetPeopleButton_Click.
Revise el código fuente del evento GetPeopleButton_Click.
Después de revisar este código, puede identificar las áreas que requieren optimización:
Si desea agregar de uno en uno los elementos utilizando el método Add de la clase ListView.ListViewItemCollection, puede utilizar el método BeginUpdate para impedir que el control vuelva a dibujar la vista de lista cada vez que agregue un elemento. Una vez completada la tarea de agregar elementos al control, llame al método EndUpdate para permitir que se vuelva a dibujar la vista de lista. Con este modo de agregar elementos, podrá evitar el parpadeo que se produce al dibujar la vista de lista cuando se agrega un lote de elementos al control y reducirá también el tiempo invertido para rellenar la vista de lista.
La configuración predeterminada en App.Config es de 1.500 nombres.
Si utiliza la enumeración KnownColor en lugar de especificar el color en una cadena y llamar al método Color.FromName, podrá mejorar el rendimiento al establecer el color de primer plano del elemento de la vista de lista.
Este evento llama a una función denominada People.GetPeople para recuperar una matriz de nombres que se van a agregar a la vista de lista.
Haga clic con el botón secundario del mouse en la llamada a GetPeople y, a continuación, haga clic en Ir a definición.
Después de revisar este código, puede identificar las áreas que requieren optimización:
Se obtiene acceso en repetidas ocasiones al código para recuperar una nueva matriz de nombres completos y nombres de compañías; estas matrices deberían crearse una sola vez y utilizarse varias veces.
Para reemplazar estas áreas problemáticas con código optimizado, agregue OPTIMIZED_GETPEOPLE como símbolo de compilación condicional a los proyectos PeopleTrax y People.
En el Explorador de soluciones, haga clic con el botón secundario del mouse en el proyecto PeopleTrax y, a continuación, haga clic en Propiedades.
Aparece el formulario de propiedades del proyecto PeopleTrax.
Haga clic en la ficha Generar.
En el cuadro de texto Símbolos de compilación condicional, agregue OPTIMIZED_GETPEOPLE.
Repita los pasos del 18 al 20 para el proyecto People.
Cierre el formulario de propiedades del proyecto y guarde todo cuando se le pregunte.
Se recomienda que ejecute de nuevo la sesión de generación de perfiles, aunque haya mejoras de rendimiento visibles para el usuario. Revise los datos después de corregir un problema por si el primer problema ocultaba algún otro.
Ahora, genere los perfiles de la aplicación utilizando el método de instrumentación.
Generar perfiles utilizando el método de instrumentación
La instrumentación es un método de generación de perfiles en el que se generan especialmente versiones los binarios cuyos perfiles se generan. Estas versiones contienen funciones de análisis que recopilan información de control de tiempos en los puntos de entrada y salida de las funciones del módulo instrumentado. Dado que este método de generación de perfiles es más invasor que el muestreo, provoca una sobrecarga mayor. Los binarios instrumentados también son más grandes que los binarios de depuración o lanzamiento, y no están pensados para su implementación.
Para generar perfiles de una aplicación existente utilizando el método de instrumentación
En el Explorador de rendimiento, haga clic en Instrumentación en la lista desplegable.
En la barra de herramientas del Explorador de rendimiento, haga clic en el botón Iniciar.
Microsoft Visual Studio 2005 genera el proyecto y empieza a generar los perfiles de la aplicación. Aparecerá la ventana de la aplicación PeopleTrax.
Haga clic en Get People.
La cuadrícula de datos de PeopleTrax se rellena con datos.
Haga clic en Exportar datos.
Se iniciará el Bloc de notas con un nuevo archivo que contiene una lista de personas de PeopleTrax.
Cierre el Bloc de notas y, a continuación, cierre la aplicación PeopleTrax.
Microsoft Visual Studio 2005 genera un informe de sesión de rendimiento (*.vsp).
Par analizar los resultados de la generación de perfiles mediante instrumentación
En la vista Resumen del informe, revise las tablas del resumen para identificar a qué función se ha llamado más veces y dónde se ha producido la mayor parte de la ejecución de la aplicación.
De acuerdo con esta información, se observa que la aplicación invierte una cantidad considerable de tiempo en ejecutar las operaciones System.String.Concat.
Haga doble clic en System.String.Concat en cualquiera de las tablas de resumen.
El informe cambia a la vista Función y resalta System.String.Concat.
Haga clic con el botón secundario del mouse en la fila System.String.Concat y, a continuación, haga clic en Mostrar en la vista Llamador y destinatario.
El informe cambia a la vista Llamador y destinatario y muestra que PeopleTrax.Form1.ExportData llama a esta función.
Haga clic con el botón secundario en la fila PeopleTrax.Form1.ExportData y, a continuación, haga clic en Ver código fuente.
Se abre Form1.cs en el editor de código y el puntero aparece en la función ExportData.
Revise el código fuente de la función ExportData.
Después de revisar este código, es posible que observe que no hay ninguna llamada literal a System.String.Concat. En su lugar, se utiliza varias veces el operando += , que se reemplaza con llamadas a System.String.Concat en IL. Cualquier modificación de una cadena en .NET Framework provoca la asignación de una nueva cadena. .NET Framework incluye una clase StringBuilder que está optimizada para la concatenación de cadenas.
Para reemplazar esta área de problema con código optimizado, agregue OPTIMIZED_EXPORTDATA como símbolo de compilación condicional al proyecto PeopleTrax.
En el Explorador de soluciones, haga clic con el botón secundario del mouse en el proyecto PeopleTrax y, a continuación, haga clic en Propiedades.
Aparece el formulario de propiedades del proyecto PeopleTrax.
Haga clic en la ficha Generar.
En el cuadro de texto Símbolos de compilación condicional, agregue OPTIMIZED_EXPORTDATA.
Cierre el formulario de propiedades del proyecto y elija Guardar todo cuando se le pregunte.
Cuando vuelva a ejecutar la aplicación, observará que el rendimiento ha mejorado de manera clara. Se recomienda que ejecute de nuevo la sesión de generación de perfiles, aunque haya mejoras de rendimiento visibles para el usuario. Revise los datos después de corregir un problema por si el primer problema ocultaba algún otro.
Vea también
Referencia
/Z7, /Zi, /ZI (Formato de la información de depuración)
Otros recursos
Introducción a las herramientas de generación de perfiles
Información general (Herramientas de generación de perfiles)