Inicio rápido: Un primer vistazo a las herramientas de generación de perfilesQuickstart: First look at profiling tools

Visual Studio proporciona una variedad de herramientas de generación de perfiles que le ayudarán a diagnosticar diferentes tipos de problemas de rendimiento según el tipo de aplicación.Visual Studio provides a variety of profiling tools to help you diagnose different kinds of performance issues depending on your app type.

Las herramientas de generación de perfiles a las que puede obtener acceso durante una sesión de depuración están disponibles en la ventana Herramientas de diagnóstico.The profiling tools that you can access during a debugging session are available in the Diagnostic Tools window. La ventana Herramientas de diagnóstico aparece automáticamente a menos que la desactive.The Diagnostic Tools window appears automatically unless you have turned it off. Para mostrar la ventana, haga clic en Depurar / Windows / Mostrar herramientas de diagnóstico.To bring up the window, click Debug / Windows / Show Diagnostic Tools. Con la ventana abierta, puede seleccionar las herramientas para las que se van a recopilar datos.With the window open, you can select tools for which you want to collect data.

Ventana Herramientas de diagnósticoDiagnostic Tools window

Durante la depuración, puede usar la ventana Herramientas de diagnóstico para analizar la CPU y el uso de memoria, y puede ver los eventos que muestran información relacionada con el rendimiento.While you are debugging, you can use the Diagnostic Tools window to analyze CPU and memory usage, and you can view events that show performance-related information.

Vista de Resumen de Herramientas de diagnósticoDiagnostic Tools Summary view

La ventana Herramientas de diagnóstico suele ser la mejor manera de generar perfiles de aplicaciones, pero en el caso de las compilaciones de versión, también puede hacer un análisis posterior de la aplicación.The Diagnostic Tools window is often the preferred way to profile apps, but for Release builds you can also do a post-mortem analysis of your app instead. Para obtener más información sobre los diferentes enfoques, vea Running Profiling Tools With or Without the Debugger (Ejecutar herramientas de generación de perfiles con o sin el depurador).If you want more information on different approaches, see Running Profiling Tools With or Without the Debugger. Para ver la compatibilidad de la herramienta de generación de perfiles con los diferentes tipos de aplicaciones, consulte ¿Qué herramienta debo usar?To see profiling tool support for different app types, see Which tool should I use?.

Analizar el uso de CPUAnalyze CPU Usage

La herramienta Uso de CPU es un buen lugar para empezar a analizar el rendimiento de la aplicación.The CPU Usage tool is a good place to start analyzing your app's performance. Le proporcionará más información sobre los recursos de CPU que consume la aplicación.It will tell you more about CPU resources that your app is consuming. Para obtener un tutorial más detallado de la herramienta Uso de CPU, vea Beginner's Guide to Performance Profiling (Guía básica para la generación de perfiles de rendimiento).For a more detailed walkthrough of the CPU Usage tool, see Beginner's Guide to Performance Profiling.

En la vista Resumen de Herramientas de diagnóstico, seleccione Habilitar generación de perfiles de CPU (debe estar en una sesión de depuración).From the Summary view of the Diagnostic Tools, choose Enable CPU Profiling (you must be in a debugging session).

Habilitar el uso de CPU en las Herramientas de diagnósticoEnable CPU usage in the Diagnostic Tools

Para usar la herramienta de la forma más eficaz posible, establezca dos puntos de interrupción en el código, uno al principio y otro al final de la función o la región de código que quiere analizar.To use the tool most effectively, set two breakpoints in your code, one at the beginning and one at the end of the function or the region of code you want to analyze. Examine los datos de generación de perfiles cuando se haya detenido en el segundo punto de interrupción.Examine the profiling data when you are paused at the second breakpoint.

La vista Uso de CPU muestra una lista de funciones ordenadas por la ejecución más larga, con la función más larga que se está ejecutando en la parte superior.The CPU Usage view shows you a list of functions ordered by longest running, with the longest running function at the top. Esto le ayudará a detectar las funciones en las que se producen cuellos de botella de rendimiento.This can help guide you to functions where performance bottlenecks are happening.

Vista de Uso de CPU de Herramientas de diagnósticoDiagnostic Tools CPU Usage view

Si hace doble clic en una función que le interese, verá una vista de "mariposa" de tres paneles más detallada, con la función seleccionada en el centro de la ventana, la función de llamada a la izquierda y las funciones llamadas a la derecha.Double-click on a function that you are interested in, and you will see a more detailed three-pane "butterfly" view, with the selected function in the middle of the window, the calling function on the left, and called functions on the right. En la sección Cuerpo de la función se muestra la cantidad total de tiempo (y el porcentaje de tiempo) empleado en el cuerpo de la función, excluido el tiempo invertido en las funciones de llamada y las funciones llamadas.The Function Body section shows the total amount of time (and the percentage of time) spent in the function body excluding time spent in calling and called functions. Estos datos pueden ayudarle a evaluar si la función en sí es un cuello de botella de rendimiento.This data can help you evaluate whether the function itself is a performance bottleneck.

Vista de "mariposa" de llamador y destinatario de Herramientas de diagnósticoDiagnostic Tools caller callee "butterfly" view

Analizar el uso de memoriaAnalyze Memory Usage

La ventana Herramientas de diagnóstico permite evaluar el uso de memoria en la aplicación.The Diagnostic Tools window also allows you to evaluate memory usage in your app. Por ejemplo, puede buscar el número y el tamaño de los objetos del montón.For example, you can look at the number and size of objects on the heap. Para instrucciones más detalladas sobre el análisis de la memoria, vea Analyze Memory Usage (Análisis del uso de memoria).For more detailed instructions to analyze memory, see Analyze Memory Usage.

Para analizar el uso de memoria, debe tomar al menos una instantánea de memoria durante la depuración.To analyze memory usage, you need to take at least one memory snapshot while you are debugging. A menudo, la mejor manera de analizar la memoria consiste en tomar dos instantáneas: la primera justo antes de que se produzca un problema que sospecha que existe en la memoria y la segunda después de que se produzca el problema en cuestión.Often, the best way to analyze memory is to take two snapshots; the first right before a suspected memory issue, and the second snapshot right after a suspected memory issue occurs. Después, puede ver las diferencias que existen entre las dos instantáneas y constatar qué es lo que ha cambiado exactamente.Then you can view a diff of the two snapshots and see exactly what changed.

Tomar una instantánea de las Herramientas de diagnósticoTake a snapshot in the Diagnostic Tools

Al seleccionar uno de los vínculos de flecha, aparece una vista diferencial del montón. Una flecha roja hacia arriba Aumento en el uso de memoria muestra un número de objetos creciente (izquierda) o un tamaño de montón creciente (derecha).When you select one of the arrow links, you are given a differential view of the heap (a red up arrow Memory Usage Increase shows an increasing object count (left) or an increasing heap size (right)). Si hace clic en el vínculo de la derecha, obtendrá una vista diferencial del montón ordenada por los objetos que más han aumentado en el tamaño del montón.If you click the right link, you get a differential heap view ordered by objects that increased the most in heap size. Esto puede ayudarle a identificar problemas de memoria.This can help you pinpoint memory problems. Por ejemplo, en la ilustración siguiente, los bytes usados por los objetos ClassHandlersStore han aumentado 3,492 bytes en la segunda instantánea.For example, in the illustration below, the bytes used by ClassHandlersStore objects increased by 3,492 bytes in the second snapshot.

Vista de diferencia de montón en Herramientas de diagnósticoDiagnostic Tools heap diff view

En cambio, si hace clic en el vínculo de la izquierda en la vista Uso de memoria, la vista del montón se organiza por número de objetos y se muestran los objetos de un tipo determinado que más han aumentado en número en la parte superior (ordenados por la columna Dif. de recuento).If you click the link on the left instead in the Memory Usage view, the heap view is organized by object count; the objects of a particular type that increased the most in number are shown at the top (sorted by Count Diff column).

Examinar eventos de rendimientoExamine Performance Events

La vista Eventos de Herramientas de diagnóstico muestra diversos eventos que se producen durante la depuración, como la configuración de un punto de interrupción o una operación de ejecución paso a paso de código.The Events view in the Diagnostic Tools shows you different events that occur while you are debugging, such as the setting of a breakpoint or a code stepping operation. Puede comprobar información como la duración del evento, medida desde el momento en que el depurador se ha detenido por última vez o desde que se ha iniciado la aplicación.You can check information such as the duration of the event (measured from when the debugger was last paused, or when the app started). Por ejemplo, si recorre paso a paso el código (F10, F11), en la vista Eventos se muestra la duración en tiempo de ejecución de la aplicación desde la operación del paso anterior hasta el paso actual.For example, if you step through code (F10, F11), the Events view shows you the app runtime duration from the previous step operation to the current step.

Ver eventos de Herramientas de diagnósticoDiagnostic Tools Events view

Nota

Si tiene Visual Studio Enterprise, también puede ver Eventos de IntelliTrace en esta pestaña.If you have Visual Studio Enterprise, you can also see IntelliTrace events in this tab.

En el editor de código también se muestran los mismos eventos, que puede ver como sugerencias de rendimiento.The same events also show up in the code editor, which you can view as PerfTips.

Sugerencias de rendimiento en la guía de generación de perfilesProfiling Tour PerfTips

Examinar el rendimiento de la interfaz de usuario y los eventos de accesibilidad (UWP)Examine UI Performance and Accessibility Events (UWP)

En las aplicaciones UWP, puede habilitar Análisis de UI en la ventana Herramientas de diagnóstico.In your UWP apps, you can enable UI Analysis in the Diagnostic Tools window. La herramienta busca problemas comunes de rendimiento o de accesibilidad y los muestra en la vista Eventos durante la depuración.The tool searches for common performance or accessibility issues and displays them in the Events view while you are debugging. Las descripciones de los eventos proporcionan información que puede ayudar a resolver problemas.The event descriptions provide information that can help resolve issues.

Ver eventos del Análisis de UI en las Herramientas de diagnósticoView UI Analysis events in the Diagnostic Tools

Generar perfiles de compilaciones de versión sin el depuradorProfile Release Builds without the Debugger

Las herramientas de generación de perfiles como Uso de CPU y Uso de memoria pueden usarse con el depurador (vea las secciones anteriores) o bien se pueden ejecutar mediante el Generador de perfiles de rendimiento, que está diseñado para proporcionar el análisis de compilaciones de Versión.Profiling tools like CPU Usage and Memory Usage can be used with the debugger (see earlier sections), or you can run profiling tools using the Performance Profiler, which is intended to provide analysis for Release builds. En el Generador de perfiles de rendimiento, puede recopilar información de diagnóstico mientras se ejecuta la aplicación y, después, examinar la información recopilada cuando la aplicación se haya detenido.In the Performance Profiler, you can collect diagnostic info while the app is running, and then examine the collected information after the app is stopped. Para obtener más información sobre los diferentes enfoques, vea Running Profiling Tools With or Without the Debugger (Ejecutar herramientas de generación de perfiles con o sin el depurador).For more information on these different approaches, see Running Profiling Tools With or Without the Debugger.

Generador de perfiles de rendimientoPerformance Profiler

Para abrir el Generador de perfiles de rendimiento, seleccione Depurar / Generador de perfiles de rendimiento.Open the Performance Profiler by choosing Debug / Performance Profiler.

La ventana le permitirá seleccionar varias herramientas de generación de perfiles en algunos escenarios.The window will allow you to select multiple profiling tools in some scenarios. Las herramientas como Uso de CPU proporcionan datos complementarios que le pueden ayudar en el análisis.Tools such as CPU Usage may provide complementary data that you can use to help in your analysis.

Análisis del consumo de recursos (XAML)Analyze Resource Consumption (XAML)

En las aplicaciones XAML (como las aplicaciones de WPF de escritorio de Windows y las aplicaciones para UWP), puede analizar el consumo de recursos mediante la herramienta Escala de tiempo de la aplicación.In XAML apps, such as Windows desktop WPF apps and UWP apps, you can analyze resource consumption using the Application Timeline tool. Por ejemplo, puede analizar el tiempo consumido por la aplicación en la preparación de marcos de la interfaz de usuario (diseño y presentación), la atención de solicitudes de red y de disco y escenarios como el inicio de la aplicación, carga de la página y cambio de tamaño de las ventanas.For example, you can analyze the time spent by your application preparing UI frames (layout and render), servicing network and disk requests, and in scenarios like application startup, page load, and Window resize. Para usar la herramienta, seleccione Escala de tiempo de la aplicación en el Generador de perfiles de rendimiento y, después, elija Iniciar.To use the tool, choose Application Timeline in the Performance Profiler, and then choose Start. En la aplicación, recorra el escenario en el que sospecha que se produce un problema de consumo de recursos y, después, seleccione Detener recolección para generar el informe.In your app, go through the scenario with a suspected resource consumption issue, and then choose Stop collection to generate the report.

Los valores de framerate bajos en el gráfico Rendimiento visual podrían corresponderse con los problemas visuales que ve cuando se ejecuta la aplicación.Low framerates in the Visual throughput graph may correspond to visual problems that you see when running your app. De forma similar, los números elevados en el gráfico Uso del subproceso de UI podrían corresponderse con problemas en la capacidad de respuesta de la interfaz de usuario.Similarly, high numbers in the UI thread utilization graph may also correspond to UI responsiveness issues. En el informe, puede seleccionar un período de tiempo en el que sospecha que se produce un problema de rendimiento y, después, examinar las actividades detalladas del subproceso de interfaz de usuario en la vista Detalles de la escala de tiempo (panel inferior).In the report, you can select a time period with a suspected performance issue, and then examine the detailed UI thread activities in the Timeline details view (lower pane).

Herramienta de generación de perfiles en la Escala de tiempo de la aplicaciónApplication Timeline profiling tool

En la vista Detalles de la escala de tiempo, encontrará información como el tipo de actividad (o el elemento de la interfaz de usuario implicado) junto con la duración de la actividad.In the Timeline details view, you can find information such as the type of activitiy (or the UI element involved) along with the duration of the activity. Por ejemplo, en la ilustración, un evento de Diseño para un control de cuadrícula tarda 57,53 ms.For example, in the illustration, a Layout event for a Grid control takes 57.53 ms.

Para obtener más información, vea Application Timeline (Escala de tiempo de la aplicación).For more information, see Application Timeline.

Análisis del uso de la GPU (Direct3D)Analyze GPU Usage (Direct3D)

En las aplicaciones Direct3D (los componentes Direct3D deben estar en C++), puede examinar la actividad de la GPU y analizar problemas de rendimiento.In Direct3D apps (Direct3D components must be in C++), you can examine activity on the GPU and analyze performance issues. Para obtener más información, vea GPU Usage (Uso de GPU).For more information, see GPU Usage. Para usar la herramienta, seleccione Uso de GPU en el Generador de perfiles de rendimiento y, después, elija Iniciar.To use the tool, choose GPU Usage in the Performance Profiler, and then choose Start. En la aplicación, recorra el escenario del que le interesa generar un perfil y, después, seleccione Detener recolección para generar un informe.In your app, go through the scenario that you're interested in profiling, and then choose Stop collection to generate a report.

Si elige un período de tiempo en los gráficos y selecciona Ver detalles, aparece una vista detallada en el panel inferior.When you select a time period in the graphs and choose view details, a detailed view appears in the lower pane. En la vista detallada, puede examinar cuántas actividades se producen en cada CPU y GPU.In the detailed view, you can examine how much activity is happening on each CPU and GPU. Seleccione los eventos en el panel inferior para que aparezcan elementos emergentes en la escala de tiempo.Select events in the lowest pane to get popups in the timeline. Por ejemplo, seleccione el evento Presente para ver elementos emergentes de llamada Presente.For example, select the Present event to view Present call popups. (Las líneas de sincronización vertical de color gris claro se pueden usar como referencia para entender si alguna llamada Presente se ha perdido la sincronización vertical.(The light gray vertical Vsync lines can be used as a reference to understand whether certain Present calls missed Vsync. Debe haber una llamada Presente entre cada dos sincronizaciones verticales para que la aplicación alcance constantemente los 60 FPS).There must be one Present call between every two Vsyncs in order for the app to steadily hit 60 FPS.)

Herramienta de generación de perfiles de uso de GPUGPU Usage profiling tool

También puede usar los gráficos para determinar si hay cuellos de botella de rendimiento relacionados con la CPU o con la GPU.You can also use the graphs to determine whether there are CPU bound or GPU bound performance bottlenecks.

Análisis del rendimiento (JavaScript)Analyze Performance (JavaScript)

En el caso de las aplicaciones UWP, puede usar la herramienta Memoria de JavaScript y la herramienta Capacidad de respuesta de la IU HTML.For UWP apps, you can use the JavaScript Memory tool and the HTML UI Responsiveness tool.

La herramienta Memoria de JavaScript es similar a la herramienta Uso de memoria disponible para otros tipos de aplicaciones.The JavaScript Memory tool is similar to the Memory Usage tool available for other app types. Puede usar esta herramienta para entender el uso de memoria y buscar fugas de memoria en la aplicación.You can use this tool to understand memory usage and find memory leaks in your app. Para obtener más información sobre la herramienta, vea JavaScript Memory (Memoria de JavaScript).For more details about the tool, see JavaScript Memory.

Herramienta de generación de perfiles de Memoria de JavaScriptJavaScript Memory profiling tool

Para diagnosticar la capacidad de respuesta de la interfaz de usuario, el tiempo de carga lento y las actualizaciones visuales lentas en aplicaciones UWP, use la herramienta Capacidad de respuesta de la IU HTML.To diagnose UI responsiveness, slow loading time, and slow visual updates in UWP apps, use the HTML UI Responsiveness tool. El uso es similar al de la herramienta Escala de tiempo de la aplicación para otros tipos de aplicaciones.Usage is similar to the Application Timeline tool for other app types. Para obtener más información, vea HTML UI responsiveness (Capacidad de respuesta de IU HTML).For more information, see HTML UI responsiveness.

Herramienta de generación de perfiles de respuesta de UI de HTMLHTML UI Responsiveness profiling tool

Análisis del uso de la red (UWP)Analyze Network Usage (UWP)

En las aplicaciones UWP, puede analizar las operaciones de red realizadas mediante la API Windows.Web.Http. Esta herramienta puede ayudarle a resolver cuestiones como problemas de acceso y autenticación, uso incorrecto de la caché y rendimiento deficiente de visualización y descarga.In UWP apps, you can analyze network operations performed using the Windows.Web.Http API.This tool may help you to resolve issues like access and authentication problems, incorrect cache-use, and poor display and download performance. Para usar la herramienta, seleccione Red en el Generador de perfiles de rendimiento y, después, elija Iniciar.To use the tool, choose Network in the Performance Profiler, and then choose Start. En la aplicación, recorra el escenario que use Windows.Web.Http y, después, seleccione Detener recolección para generar el informe.In your app, go through the scenario that uses Windows.Web.Http, and then choose Stop collection to generate the report.

Herramienta de generación de perfiles de Uso de redNetwork Usage profiling tool

Seleccione una operación en la vista de resumen para ver más detalles.Select an operation in the summary view to view more details.

Información detallada en la herramienta de Uso de redDetailed information in the Network Usage tool

Para obtener más información, vea Network Usage (Uso de red).For more information, see Network Usage.

Análisis de rendimiento (herramientas heredadas)Analyze Performance (Legacy Tools)

Si necesita características que no están actualmente presentes en las herramientas Uso de CPU o Uso de memoria, como la instrumentación, y ejecuta aplicaciones ASP.NET o de escritorio, puede usar el Explorador de rendimiento para la generación de perfiles.If you need features such as instrumentation that are not currently present in CPU Usage or Memory Usage tools, and you are running desktop or ASP.NET apps, you can use the Performance Explorer for profiling. (No se admite en aplicaciones UWP).(Not supported in UWP apps). Para más información, vea Explorador de rendimiento.For more info, see Performance Explorer.

Herramienta de Explorador de rendimientoPerformance Explorer tool

¿Qué herramienta debo usar?Which Tool Should I Use?

En esta tabla se muestra una lista de las distintas herramientas que ofrece Visual Studio y los tipos de proyecto con los que las puede usar:Here is a table that lists the different tools Visual Studio offers and the different project types you can use them with:

Herramienta de rendimientoPerformance Tool Escritorio de WindowsWindows desktop UWPUWP ASP.NET/ASP.NET CoreASP.NET/ASP.NET Core
Uso de memoriaMemory Usage yes yes yes
Uso de CPUCPU Usage sí (vea la nota)yes (see note) yes sí (vea la nota)yes (see note)
Uso de GPUGPU Usage yes yes nono
Escala de tiempo de la aplicaciónApplication Timeline yes yes Nono
Sugerencias de rendimientoPerfTips yes sí para XAML, no para HTMLyes for XAML, no for HTML yes
Explorador de rendimientoPerformance Explorer yes Nono yes
IntelliTraceIntelliTrace Solo .NET con Visual Studio Enterprise.NET with Visual Studio Enterprise only Solo .NET con Visual Studio Enterprise.NET with Visual Studio Enterprise only Solo .NET con Visual Studio Enterprise.NET with Visual Studio Enterprise only
Uso de redNetwork Usage Nono yes Nono
HTML UI responsivenessHTML UI responsiveness Nono sí para HTML, no para XAMLyes for HTML, no for XAML Nono
Memoria de JavaScriptJavaScript Memory Nono sí para HTML, no para XAMLyes for HTML, no for XAML Nono

Nota

Para .NET Core y ASP.NET Core, la herramienta Uso de CPU actualmente no proporciona resultados precisos con PBD portátiles.For .NET Core and ASP.NET Core, the CPU Usage tool currently does not provide accurate results with portable PBDs. Use PBD completos en su lugar.Use full PDBs instead.

Vea tambiénSee Also

Depurar en Visual StudioDebugging in Visual Studio