Generador de perfiles de XamarinXamarin Profiler

Esta guía explora las características clave del generador de perfiles de Xamarin. Busca en los generadores de perfiles, generación de perfiles y cuándo debe utilizarse y en un flujo de trabajo estándar de generar perfiles de aplicaciones de Xamarin.This guide explores the key features of the Xamarin Profiler. It look at profilers, profiling and when they should be used, and at a standard workflow for profiling Xamarin applications.

Éxito de la aplicación depende de la experiencia del usuario final.An application’s success depends on the end user experience. Como desarrollador puede que haya implementado algunas características realmente maravillosa en su aplicación, pero si la aplicación es lenta o completa de bloqueos, el usuario probablemente se deshacerse de él.As a developer you might have implemented some really awesome features in your app, but if the app is sluggish or full of crashes, the user will likely get rid of it.

Históricamente, Mono ha incluido un generador de perfiles de línea de comandos eficaz para recopilar información sobre los programas que se ejecutan en el tiempo de ejecución Mono llama el el generador de perfiles de registro Mono.Historically, Mono has featured a powerful command-line profiler for gathering information about programs running in the Mono runtime called the Mono log profiler. El generador de perfiles de Xamarin una interfaz gráfica para el generador de perfiles de registro Mono y admite la generación de perfiles tvOS aplicaciones en Windows, iOS, tvOS y aplicaciones Mac en Mac y Android, iOS y Android.The Xamarin Profiler a graphical interface for the Mono log profiler, and supports profiling Android, iOS, tvOS, and Mac applications on Mac, and Android, iOS, and tvOS applications on Windows.

El generador de perfiles de Xamarin tiene un número de instrumentos disponibles para la generación de perfiles, las asignaciones y ciclos, el generador de perfiles de tiempo.The Xamarin Profiler has a number of instruments available for profiling — Allocations, Cycles, and Time Profiler. Esta guía explora lo que dichos instrumentos de medida y cómo analizar la aplicación y explica el significado de los datos presentados en cada pantalla.This guide explores what these instruments measure and how they analyze your application, and clarifies the meaning of the data presented on each screen.

Esta guía examina los escenarios comunes de generación de perfiles y el generador de perfiles presenta como una herramienta para ayudar a analizar y optimizar aplicaciones de iOS y Android.This guide examines common profiling scenarios and introduces the profiler as a tool to help analyze and optimize iOS and Android applications.

Descargue e instaleDownload and Install

Nota

Debe ser un Visual Studio Enterprise suscriptor para desbloquear esta característica en cualquier proyecto de Visual Studio Enterprise en Windows o Visual Studio para Mac en un equipo Mac.You will need to be a Visual Studio Enterprise subscriber to unlock this feature in either Visual Studio Enterprise on Windows or Visual Studio for Mac on a Mac.

El generador de perfiles de Xamarin es una aplicación independiente y se integra con Visual Studio para Mac y Visual Studio habilitar la generación de perfiles desde el IDE.The Xamarin Profiler is a standalone application, and is integrated with Visual Studio for Mac and Visual Studio to enable profiling from within the IDE.

Descargue el paquete de instalación para su plataforma:Download the install package for your platform:

Una vez descargado, inicie el instalador para agregar el generador de perfiles de Xamarin en el sistema.Once downloaded, launch the installer to add the Xamarin Profiler to your system.

Los generadores de perfiles y la generación de perfilesProfilers and Profiling

Generación de perfiles es un paso importante y a menudo se pasa por alto en el desarrollo de aplicaciones.Profiling is an important and often overlooked step in application development. Generación de perfiles es una forma de análisis dinámico programa -analiza el programa mientras está en ejecución y en uso.Profiling is a form of dynamic program analysis - it analyzes the program while it is running and in use. Un generador de perfiles es una herramienta de minería de datos que recopila información acerca de la complejidad del tiempo, el uso de determinados métodos y la memoria está asignada.A profiler is a data mining tool that collects information about time complexity, the usage of particular methods, and the memory being allocated. Un generador de perfiles le permite explorar en profundidad y analizar estas métricas para identificar áreas con problemas en el código.A profiler enables you to drill deep and analyze these metrics to pinpoint problem areas in code.

Al diseñar y desarrollar una aplicación, es importante que no optimice prematuramente; es decir, invierte más del tiempo desarrollando el código en áreas que rara vez tendrá acceso.When designing and developing an application, it is important to not optimize prematurely; that is, spending time developing your code in areas that will rarely be accessed. Se trata de la potencia de generación de perfiles.This is the power of profiling. Un generador de perfiles proporciona una visión general más frecuente partes del código base, y le ayuda a localizar las áreas donde se deben emplear en mejoras de realización de hora.A profiler provides insight into the most commonly used parts of your code base , and helps locate areas where you should spend time making improvements. Los desarrolladores deberían tener cuidado para entender donde la mayoría de las veces se invirtió en la aplicación y uso de memoria por la aplicación.Developers should take care to understand where most of the time is spent in your application, and how memory is used by your application.

Generación de perfiles es útil para todos los tipos de desarrollo, pero resulta especialmente fundamental en el desarrollo de aplicaciones móvil.Profiling is helpful in all types of development, but it is especially crucial in mobile development. Código no optimizado es mucho más evidente en plataformas móviles que en equipos de escritorio y el éxito de la aplicación depende de código maravillosa y optimizado que se ejecuta de forma eficaz.Unoptimized code is much more noticeable on mobile platforms than on desktop computers, and the success of your app depends on beautiful and optimized code that runs efficiently.

Generador de perfiles de XamarinXamarin Profiler

El generador de perfiles de Xamarin proporciona a los desarrolladores una manera de generar perfiles de aplicaciones desde dentro de Visual Studio para Mac o en Visual Studio.The Xamarin Profiler provides developers with a way to profile applications from inside Visual Studio for Mac or Visual Studio. El generador de perfiles recopila y muestra información acerca de la aplicación, que, a continuación, se puede usar el programador para analizar el comportamiento de la aplicación.The profiler collects and displays information about the app, which can then be used by the developer to analyze an application’s behavior. Hay varias maneras de generar perfiles de una aplicación con el generador de perfiles de Xamarin, es decir, la generación de perfiles de memoria y muestreo estadístico.There are a number of different ways to profile an application with the Xamarin Profiler, namely memory profiling and statistical sampling. Estos se llevan a cabo a través de las asignaciones y el generador de perfiles de tiempo instrumenta respectivamente.These are carried out through the Allocations and Time Profiler instruments respectively.

Actualmente, el generador de perfiles de Xamarin puede utilizarse para probar aplicaciones de Xamarin.iOS y Xamarin.Android, Xamarin.Mac en Mac (a través de Visual Studio para Mac).Currently, the Xamarin Profiler can be used to test Xamarin.iOS, Xamarin.Android, and Xamarin.Mac applications on Mac (Via Visual Studio for Mac). El generador de perfiles es un proceso independiente desde el IDE y, por lo tanto, además de poder iniciar desde Visual Studio para Mac, se puede utilizar como una aplicación independiente para examinar .exe y .mlpd archivos que se han producido desde la generador de perfiles de registro mono.The profiler is a separate process from the IDE, and so, in addition to launching from Visual Studio for Mac, it can be used as a standalone application to examine .exe and .mlpd files which have been produced from the mono log profiler.

Compatibilidad del generador de perfilesProfiler Support

Compatibilidad con el generador de perfiles de Xamarin está disponible en las siguientes plataformas:Support for the Xamarin Profiler is available on the following platforms:

  • Visual Studio para Mac (macOS, con una licencia Enterprise)Visual Studio for Mac (macOS, with Enterprise License)

    • AndroidAndroid
      • Dispositivo y el emuladorDevice and Emulator
    • iOSiOS
      • Dispositivo y del simuladorDevice and Simulator
    • tvOS (no se admite la instrumentación de tiempo)tvOS (Time Instrument is not supported)
      • Dispositivo y del simuladorDevice and Simulator
    • MacMac
  • Visual Studio (solo Enterprise versión)Visual Studio (Only Enterprise Version)

    • AndroidAndroid
      • Dispositivo y el emuladorDevice and Emulator
    • iOS [Experimental]iOS [Experimental]
      • Dispositivo y del simuladorDevice and Simulator
    • tvOStvOS
      • Dispositivo y del simuladorDevice and Simulator

Tenga en cuenta que también puede sólo perfil depurar configuraciones.Note that you can only profile Debug configurations.

Conceptos básicos del generador de perfilesProfiler Basics

Esta sección presenta las partes del generador de perfiles de Xamarin y tours sus características.This section introduces the parts of the Xamarin Profiler and tours its features.

Permitir la generación de perfiles de la aplicaciónAllow Profiling in your App

Antes de correctamente puede generar perfiles de la aplicación, debe permitir la generación de perfiles en las opciones de proyecto de la aplicación.Before you can successfully Profile your app, you will need to allow Profiling in the app's Project Options.

  • iOS:iOS:

Compilar > iOS depuración > Habilitar generación de perfilesBuild > iOS Debug > Enable Profiling

  • Android:Android:

Compilar > depuración Android > habilitar la instrumentación de desarrolladorBuild > Android Debug > Enable Developer Instrumentation

Cuadro de diálogo de opciones de Android en Visual Studio para Mac

Iniciar el generador de perfilesLaunching the Profiler

El generador de perfiles de Xamarin se puede iniciar desde el IDE cuando está creando perfiles de su aplicación Android o iOS, o como una aplicación independiente.The Xamarin Profiler can be launched from your IDE when you are profiling your iOS or Android application, or as a standalone application.

Iniciar desde Visual Studio para MacLaunching from Visual Studio for Mac

  1. En primer lugar, asegúrese de que tiene la aplicación cargada en Visual Studio para Mac y seleccione la configuración de depuración (valor predeterminado).First, make sure you have your application loaded in Visual Studio for Mac, and select the (default) Debug configuration.
  2. Vaya a ejecutar > Iniciar generación de perfilesen Visual Studio para Mac, o analizar > Xamarin Profiler en Visual Studio, para abrir el generador de perfiles, como se muestra en el diagrama siguiente:Browse to Run > Start Profilingin Visual Studio for Mac, or Analyze > Xamarin Profiler in Visual Studio, to open the Profiler, as demonstrated in the diagram below:

Si no aparecen los elementos de menú, consulte la Guía de solución de problemas.If the menu items do not appear, refer to the troubleshooting guide.

Esto inicia el generador de perfiles e inicia automáticamente la generación de perfiles de la aplicación.This launches the Profiler and automatically starts profiling the application.

El generador de perfiles puede utilizarse para medir el rendimiento y memoria.The Profiler can be used to measure memory and performance. Esto consigue a través de las asignaciones y el generador de perfiles de tiempo de instrumentos, que a continuación se explican con detalle en la sección siguiente.It achieves this through the Allocations and Time Profiler instruments, which we will explore in detail in the next section.

Guardar y cargar las sesiones del generador de perfilesSaving and Loading Profiler Sessions

Para guardar una sesión de generación de perfiles en cualquier momento, elija archivo > Guardar como... desde la barra de menús del generador de perfiles.To save a profiling session at any time, choose File > Save As... from the Profiler Menu bar. Esta opción guarda el archivo en mlpd formato, un formato muy comprimido especial para generar perfiles de datos.This saves the file in mlpd format, a special, highly compressed format for profiling data.

Después de que se ha instalado el generador de perfiles de Xamarin puede encontrarse en la carpeta de aplicaciones, como se muestra en la captura de pantalla siguiente:After it has been installed the Xamarin Profiler can be found in your Applications folder as illustrated in the screenshot below:

Puede cargar .mlpd archivos en el generador de perfiles, abra la aplicación independiente, seleccione elegir destino y cargar el archivo.You can load .mlpd files into the Profiler by opening the standalone application, selecting Choose Target and loading the file.

Para obtener más información, consulte generar archivos de .mlpd .For more information, see Generating .mlpd Files .

Características del generador de perfilesProfiler Features

El generador de perfiles de Xamarin se compone de cinco secciones, como se muestra a continuación:The Xamarin Profiler is composed of five sections as illustrated below:

  • Barra de herramientas – situado en la parte superior del generador de perfiles, esto ofrece opciones para iniciar o detener la generación de perfiles, seleccione un proceso de destino, ver el tiempo de ejecución de la aplicación y seleccione las vistas de división que componen la aplicación del generador de perfiles.Toolbar – Located at the top of the profiler, this offers options to start/stop profiling, select a target process, view the running time of the app, and select the split views that compose the profiler application.
  • Instrumentar lista : enumera todos los instrumentos cargados para la sesión de generación de perfiles.Instrument List – This lists all instruments loaded for the profiling session.
  • Trazar gráfico : estos gráficos se relacionan con horizontalmente los instrumentos pertinentes en la lista de instrumentación.Plot Chart – These charts relate horizontally to the relevant instruments in the instrument list. Un control deslizante (se muestra debajo de generador de perfiles de tiempo) puede utilizarse para cambiar la escala.A slider (shown beneath Time Profiler) can be used to change the scale.
  • Área de detalle de instrumentar -contiene datos que se muestran la vista seleccionada del instrumento actual.Instrument Detail area - Contains data being displayed by the selected view of the current Instrument. Veremos estas vistas con más detalle en la sección siguiente.We will look at these views in more detail in the section below.
  • Vista de inspector – contiene secciones que se pueden seleccionar el control segmentados.Inspector View – This contains sections that can be selected by the segmented control. Las secciones son dependientes de los instrumentos seleccionada e incluye: opciones de configuración, estadísticas, información de seguimiento de la pila y la ruta de acceso a las raíces.The sections are dependent on the instrument selected, and includes: Configuration Settings, Statistics, Stack Trace information, and Path to roots.

AsignacionesAllocations

El instrumento de asignaciones proporciona información detallada acerca de los objetos de la aplicación tal y como se crea y se recolectan.The allocations instrument provides detailed information about objects in the application as they are being created and garbage collected.

En la parte superior del generador de perfiles es el gráfico de asignaciones, que muestra la cantidad de memoria asignada a intervalos regulares durante la generación de perfiles.At the top of the profiler is the allocations chart, which displays the amount of memory allocated at regular intervals during the profiling. Actualmente el gráfico de las asignaciones es el número total de asignaciones y no el tamaño del montón en ese momento en el tiempo.Currently the allocations graph is the total number of allocations and NOT the size of the heap at that point in time. En un sentido, nunca irá hacia abajo, siempre aumentará.In a sense, it will never go down, it will only ever increase. Esto incluye los objetos asignados en la pila.This includes objects allocated on the stack. Según la versión de tiempo de ejecución que se usa, el gráfico puede parecer diferente, incluso para la misma aplicación.Depending on the runtime version used, the chart can look different – even for the same app.

Hay diferentes vistas de datos en el acto de asignaciones, que permiten a los desarrolladores a analizar cómo su aplicación está utilizando y liberar memoria.There are different data views in the Allocations instrument, which allow developers to analyze how their application is using and freeing memory. A continuación se describen estas vistas:These views are described below:

  • Las asignaciones de : se muestra una lista de todas las asignaciones y los agrupa por nombre de clase.Allocations – This displays a list of all allocations and groups them by class name. Esto ofrece una excelente introducción de las clases y métodos que se va a utilizar, con qué frecuencia se utilizan y el tamaño colectivo de las clases utilizadas.This provides a great overview of classes and methods being used, how often they are used, and the collective size of the classes used. Doble clic en una clase mostrará el la memoria asignada:Double clicking on a class will show the the memory allocated :

La vista de Inspector para las asignaciones proporciona opciones de filtrado y agrupación de objetos, lo que proporciona las estadísticas en la memoria asignada y las asignaciones superiores, así como vistas de seguimiento de la pila y la ruta de acceso al nodo raíz.The Inspector view for Allocations provides options for filtering and grouping objects, providing statistics on memory allocated, and the top allocations, as well as views for Stack Trace and Path to Root.

  • Árbol de llamadas de : Esto muestra el árbol de llamadas completa de todos los subprocesos en la aplicación e incluye información sobre la memoria asignada en cada nodo.Call Tree – This displays the entire call tree of all threads in the application and includes information about the memory allocated on each node. Cuando se selecciona un elemento en la lista, aparecerán todos los nodos del mismo nivel gris.When an element is selected in the list, all sibling nodes will appear grey. Puede expandir el árbol o haga doble clic en el elemento que se va a profundizar en él. Cuando se muestra esta vista de datos, la vista de inspector de configuración de presentación se puede utilizar para cambiar la manera en que se presentan.You can expand the tree or double-click the element to drill down into it.When displaying this data view, the display settings inspector view can be used to change the way it is presented. Actualmente hay dos opciones:There are currently two options:
  1. Invierte el árbol de llamadas : se considera que el seguimiento de pila de arriba a abajo.Inverted Call Tree – This considers the stack trace from top to bottom. Esta es una vista cómoda opción tal y como indican a los métodos más profundo donde gastos a la CPU el tiempo.This is a convenient view option as it indicates the deepest methods where the CPU has been spending its time.
  2. Independiente por subproceso : esta opción organiza el árbol de llamadas por subproceso.Separate by thread – This option organizes the call tree by thread.
  • Las instantáneas – este panel muestra información acerca de las instantáneas de memoria.Snapshots – This pane displays information about memory snapshots. Para generar estos durante la generación de perfiles de una aplicación en directo, haga clic en el cámara botón en la barra de herramientas en todos los puntos que le gustaría que la memoria se conservan y se liberan.To generate these while profiling a live application, click the Camera button in the toolbar at each point that you'd like to see what memory is retained and released. A continuación, hacer clic en cada instantánea para explorar lo que sucede en segundo plano.You can then click each snapshot to explore what is happening under the hood. Tenga en cuenta que las instantáneas se pueden realizar cuando se activa una aplicación de generación de perfiles.Note that snapshots can only be taken when live profiling an app.

Generador de perfiles de tiempoTime Profiler

El instrumento de generador de perfiles de tiempo mide exactamente cuánto tiempo se dedica a cada método de una aplicación.The Time Profiler instrument measures exactly how much time is spent in each method of an application. La aplicación está en pausa a intervalos regulares y se ejecuta un seguimiento de pila en cada subproceso activo.The application is paused at regular intervals and a stack trace is run on each active thread. Cada fila del área de detalle de instrumento muestra la ruta de acceso de ejecución que se ha seguido.Each row in the Instrument Detail area shows the execution path that has been followed.

El diagrama de caja, tal y como se muestra en la captura de pantalla siguiente, muestra el número de muestras recibidas por la aplicación mientras se ejecuta:The plot chart, as shown in the screenshot below, displays the number of samples received by the app as it runs:

  • Árbol de llamadas de – muestra de tiempo empleado en cada método:Call Tree – Shows amount of time spent in each method:

CiclosCycles

Mediante el uso de código C# y F # administrado, puede ser bastante habitual y Lamentablemente muy fácil crear referencias a objetos que nunca se eliminará.Through the use of C# and F# managed code, it can be quite common, and unfortunately quite easy to create references to objects which will never be disposed. Esta intrument permite identificar los objetos y mostrar los ciclos que se hace referencia en la aplicación.This intrument allows you to pinpoint those objects, and display the cycles referenced in your application.

Generar perfiles de aplicacionesProfiling Applications

Actualmente, se pueden generar perfiles solo las configuraciones de depuración predeterminado.Currently, only the default Debug configurations can be profiled.

Si se generan perfiles de una aplicación con cualquier otra configuración, aparecerá el cuadro de diálogo de mensaje siguiente:If you profile an app with any other configuration, you will be presented with the following message dialog:

Seleccione actualización para continuar.Select Update to continue.

El recolector de elementos no utilizados de SGen y generación de perfilesSGen Garbage Collector and Profiling

El SGen recolector de elementos no utilizados se utiliza para todas las plataformas de Xamarin.The SGen garbage collector is used for all Xamarin platforms.

SGen es un GC de generaciones, que asigna los objetos de una aplicación en tres montones: guardería, principales montón y el espacio de objeto grande.SGen is a generational GC, which allocates objects of an application into three heaps — Nursery, Major Heap and the Large Object Space. Esto permite la ejecución más rápida de recolección de elementos.This allows for speedier execution of garbage collection. SGen es actualmente el GC de forma predeterminada para Xamarin.Android y aplicaciones Xamarin.iOS unificado.SGen is currently the default GC for Xamarin.Android, and Xamarin.iOS Unified applications.

Aplicación de Xamarin.iOS mediante la API clásico usa el GC Boehm – un recolector de elementos no generaciones, conservador.Xamarin.iOS application using the Classic API used the Boehm GC – a conservative, non-generational garbage collector. Como es conservador, es menos probable que libera la memoria disponible, lo que puede provocar resultados incorrectos cuando se utiliza el generador de perfiles.As it is conservative, it is less likely to free up available memory, which can lead to inaccurate results when using the profiler. Por este motivo, el instrumento de las asignaciones no se puede usar con el recolector de elementos no utilizados Boehm.For this reason, the Allocations instrument cannot be used with the Boehm garbage collector.

Mientras se le pedirá un cuadro de diálogo de mensaje si la aplicación usa el GC Boehm, Xamarin no recomienda cambiar las aplicaciones existentes de iOS que utilice Boehm a SGen sin investigación cuidado y realizar pruebas minuciosas.While you will be prompted with a message dialog if your app uses the Boehm GC, Xamarin does not recommend switching existing iOS application that use Boehm to SGen without careful research and thorough testing. Xamarin también no recomienda volver a SGen para generación de perfiles y, a continuación, cambiar, como estos resultados no proporcionarán pruebas comparativas precisas del uso de memoria.Xamarin also does not recommend switching to SGen for profiling and then switching back, as these results will not provide accurate benchmarks of memory usage.

Para obtener más información sobre la administración de memoria, consulte el memoria y prácticas recomendadas de rendimiento guía.For more information on memory management, refer to the Memory and Performance Best Practices guide.

ResumenSummary

En esta guía se examinando la generación de perfiles es y cómo esto supone una mejora para el desarrollador.In this guide we looked at what profiling is and how it is advantageous to the developer. A continuación, presentamos el generador de perfiles de Xamarin, proporciona algunas historial y la información en su funcionamiento.We then introduced the Xamarin Profiler, providing some history and information into how it works. Por último se viajado por las características del generador de perfiles de Xamarin y se han explorado instrumentos de generador de perfiles de tiempo y asignaciones.Finally we toured the features of the Xamarin Profiler, and explored the Allocations and Time Profiler Instruments.