Xamarin Profiler - Профайлер

Обзор

Успех приложения зависит от конечного пользователя. Как разработчик вы могли бы реализовать некоторые действительно удивительные функции в своем приложении, но если приложение вяло или полно аварий, пользователь, скорее всего, избавится от него.

Исторически сложилось так, что Mono имеет мощный профилировщик командной строки для сбора информации о программах, запущенных во время выполнения Mono, называемом профилировщиком журнала Mono . Xamarin Profiler - графический интерфейс для профилировщика Mono, а также поддерживает профилирование приложений Android, iOS, tvOS и Mac на Mac и Android, iOS и tvOS-приложениях в Windows.

В Xamarin Profiler имеется ряд инструментов для профилирования - распределения, циклы и тайм-профилер. В этом руководстве описывается, что измеряют эти инструменты и как они анализируют ваше приложение, и разъясняет смысл данных, представленных на каждом экране.

В этом руководстве рассматриваются общие сценарии профилирования и вводится профилировщик в качестве инструмента для анализа и оптимизации приложений для iOS и Android.

Содержание

  • Загрузить и установить
  • Профили и профилирование
  • Профайлер Xamarin
  • Поддержка профилировщика
  • Основы профилировщика
    • Разрешение профилирования в вашем приложении
    • Запуск профилировщика
      • Запуск из Visual Studio для Mac
      • Запуск из Visual Studio
      • Сохранение и загрузка сеансов профилировщика
      • Характеристики и инструменты профилировщика
    • Распределение
    • Профайлер времени
    • Циклы
  • Профилирование приложений
  • Вывод

Загрузить и установить

ПРИМЕЧАНИЕ. Вам необходимо быть подписчиком Visual Studio Enterprise, чтобы разблокировать эту функцию в Visual Studio Enterprise в Windows или Visual Studio для Mac на Mac.

Xamarin Profiler является автономным приложением и интегрирован с Visual Studio для Mac и Visual Studio, чтобы включить профилирование из среды IDE.

Скачать

Загрузите установочный пакет для своей платформы:
После загрузки запустите программу установки, чтобы добавить Xamarin Profiler в вашу систему.

Интеграция IDE доступна во всех версиях Xamarin. Однако для профилирования требуется Visual Studio Enterprise .

Профили и профилирование

Профилирование - важный и часто упускаемый шаг в разработке приложений. Профилирование - это форма динамического анализа программ - он анализирует программу во время ее работы и использования. Профайлер - это инструмент интеллектуального анализа данных, который собирает информацию о временной сложности, использовании конкретных методов и выделенной памяти. Профилировщик позволяет вам исследовать и проанализировать эти показатели, чтобы выявить проблемные области в коде.

При разработке и разработке приложения важно не досрочно оптимизировать; то есть потратить время на разработку кода в областях, к которым редко можно получить доступ. Это основа профилирования. Профилировщик дает представление о наиболее часто используемых частях вашей базы кода и помогает находить области, где вы должны потратить время на улучшение. Разработчики должны позаботиться, чтобы понять, где большая часть времени тратится в вашем приложении, и как память используется вашим приложением.

Профилирование полезно во всех видах разработки, но это особенно важно для мобильных разработок. Неоптимизированный код гораздо более заметен на мобильных платформах, чем на настольных компьютерах, и успех вашего приложения зависит от красивого и оптимизированного кода, который работает эффективно.

Профайлер Xamarin

Xamarin Profiler предоставляет разработчикам возможность профилировать приложения изнутри Visual Studio для Mac или Visual Studio. Профайлер собирает и отображает информацию об этом приложении, которая затем может быть использована разработчиком для анализа поведения приложения. Существует несколько различных способов профилирования приложения с помощью Xamarin Profiler, а именно профилирование памяти и статистическая выборка. Они выполняются через Инструменты распределения (Allocations) и времени (Time Profiler), соответственно.

В настоящее время Xamarin Profiler можно использовать для тестирования приложений Xamarin.Android в Windows (через Visual Studio и Visual Studio для Mac). Профайлер - это отдельный процесс из среды IDE, поэтому в дополнение к запуску из Visual Studio он может использоваться как отдельное приложение для изучения .exe и .mlpd файлов, которые были созданы из профилировщика одиночных лог-файлов.

Поддержка профилировщика

Поддержка Xamarin Profiler доступна на следующих платформах:
  • Visual Stiduo для Mac (MacOS, с лицензией Enterprise)
    • Android
      • Устройство и эмулятор
    • iOS
      • Устройство и эмулятор
    • tvOS (Временные инструменты не поддерживается)
      • Устройство и эмулятор
  • Visual Stiduo  (с лицензией Enterprise)
    • Android
      • Устройство и эмулятор
    • iOS (Экспериментальная версия)
      • Устройство и эмулятор
    • tvOS
      • Устройство и эмулятор
Обратите внимание, что отладка возможна только в Debug конфигурации.

Основы профилировщика

Разрешить профилирование в вашем приложении

iOS

Свойства > Сборка iOS > Включить профилирование 
(Properties > iOS Build > Enable Profiling)

Android

Сборка > Android Debug > Включить инструменты разработчика
(Build > Android Debug > Enable Developer Instrumentation)

Запуск профилировщика

Xamarin Profiler можно запускать из вашей IDE, когда вы профилируете приложение iOS или Android или как отдельное приложение.

Запуск из Visual Studio

  1. Убедитесь, что приложение загружено в Visual Studio и выберите конфигурацию отладки (по умолчанию), как указано выше.
  2. Перейдите к Анализ(Analyze)> Xamarin Profiler в Visual Studio, чтобы открыть Profiler, как показано на диаграмме ниже:
    Если пункты меню не отображаются, обратитесь к руководству по устранению неполадок.
Это запускает Profiler и автоматически запускает профилирование приложения.

Profiler может использоваться для измерения памяти и производительности. Это достигается благодаря инструментам Allocations и Time Profiler, которые мы подробно рассмотрим в следующем разделе.

Сохранение и загрузка сеансов профилировщика

Чтобы сохранить сеанс профилирования в любое время, выберите « Файл»> «Сохранить как ...» в строке меню «Профайлер». Это сохраняет файл в формате mlpd, специальный, сжатый формат для профилирования данных.

После его установки приложение Xamarin Profiler можно найти в каталоге приложения:
Вы можете загрузить файлы .mlpd в Profiler, открыв автономное приложение, выбрав «Выбрать цель» (Choose Target) и загрузить файл.

Дополнительные сведения см. в разделе официальной документации «Создание файлов .mlpd» .

Особенности профилировщика

Профайлер Xamarin состоит из пяти разделов, как показано ниже:

  • Toolbar (Панель инструментов) - расположена в верхней части профилировщика, это дает возможность запуска/остановки профилирования, выбора целевого процесса, просмотра времени работы приложения и выбора разделенных видов, составляющих приложение-профилировщик.
  • Instrument List (Список инструментов) - список всех инструментов, загруженных для сеанса профилирования.
  • Plot Chart (Графическая диаграмма) - эти диаграммы относятся горизонтально к соответствующим инструментам в списке инструментов. Для изменения масштаба можно использовать слайдер (показанный ниже временной профайлер (Time Profiler)).
  • Instrument Detail area (Область подробностей инструмента) - содержит данные, отображаемые выбранным видом текущего инструмента.
  • Inspector View - содержит разделы, которые могут быть выбраны сегментированным элементом управления. Секции зависят от выбранного инструмента и включают в себя: Настройки конфигурации (Configuration Settings), Статистика (Statistics), Данные трассировки стека(Stack Trace information)  и Путь к коревым элементам (Path to roots).

Распределение

Инструмент распределения предоставляет подробную информацию об объектах в приложении по мере их создания и сбора мусора.

В верхней части профилировщика находится диаграмма распределения, которая отображает объем памяти, распределенный через равные промежутки времени во время профилирования. В настоящее время граф распределения представляет собой общее количество распределений и НЕ размер кучи в этот момент времени. В каком-то смысле он никогда не опустится, он только увеличится. Сюда входят объекты, выделенные в стеке. В зависимости от используемой версии исполнения диаграмма может выглядеть по-разному - даже для одного и того же приложения.
В инструменте Распределение(Allocations) есть разные виды данных, которые позволяют разработчикам анализировать, как их приложение использует и освобождает память. Эти представления описаны ниже:
  • Распределение(Allocations) - отображает список всех распределений и группирует их по имени класса. Это дает большой обзор используемых классов и методов, как часто они используются, и коллективного размера используемых классов. Двойной щелчок по классу отображает выделенную память:
В представлении Inspector для Allocations предусмотрены опции для фильтрации и группировки объектов, предоставления статистики выделенной памяти и верхних распределений, а также представлений для Stack Trace и Path to Root.

  • Дерево вызовов (Call Tree) - отображает все дерево вызовов всех потоков в приложении и включает информацию о памяти, выделенной для каждого узла. Когда элемент выбран в списке, все узлы-спутники будут серыми. Вы можете развернуть дерево или дважды щелкнуть элемент, чтобы развернуть его. При отображении этого представления данных представление инспектора параметров отображения можно использовать для изменения способа его отображения. В настоящее время существует два варианта:
    1. Инвертированное дерево вызовов (Inverted Call Tree) - это рассматривает трассировку стека сверху вниз. Это удобная опция просмотра, поскольку она указывает самые глубокие методы, в которых процессор проводит свое время.
    2. Разделение по потокам (Separate by thread) - этот параметр организует дерево вызовов по потоку.
  • Снимки (Snapshots) - эта панель отображает информацию о моментальных снимках памяти. Чтобы сгенерировать их при профилировании живого приложения, нажмите кнопку «Камера»(Camera) на панели инструментов в каждой точке, чтобы вы хотели видеть, какая память сохранена и выпущена. Затем вы можете щелкнуть каждый снимок, чтобы исследовать, что происходит под капотом. Обратите внимание, что моментальные снимки могут выполняться только при живом профилировании приложения.

Профайлер времени (Time Profiler)

Инструмент Time Profiler точно определяет, сколько времени затрачено на каждый метод приложения. Приложение приостанавливается через регулярные промежутки времени, и трассировка стека выполняется для каждого активного потока. Каждая строка в области «Детали инструмента» показывает путь выполнения, который был соблюден.
Диаграмма графика, как показано на скриншоте ниже, отображает количество образцов, полученных приложением при запуске:
  • Дерево вызовов (Call tree)- показывает количество времени, затрачиваемого на каждый метод:

Циклы

Используя управляемый код C # и F #, он может быть довольно распространенным и, к сожалению, довольно легко создавать ссылки на объекты, которые никогда не будут удалены. Этот инструмент позволяет точно определить эти объекты и отобразить циклы, указанные в приложении.

Профилирование приложений

В настоящее время можно профилировать только конфигурации Debug по умолчанию.
Если вы профилируете приложение с любой другой конфигурацией, вам будет представлено следующее диалоговое окно сообщений:
Выберите «ОК», чтобы продолжить.

Вывод

В этом руководстве мы рассмотрели, что такое профилирование и как оно выгодно разработчику. Затем мы представили профайлер Xamarin, рассказывая историю и информацию о том, как это работает. Наконец, мы просмотрели функции Xamarin Profile и изучили инструменты распределения и времени.



Комментарии

Популярные сообщения