Поделиться через


Запуск средств анализа производительности на странице "Производительность и диагностика"

Применимо к Windows и к Windows Phone

Можно анализировать производительность, потребление памяти и расход энергии приложений Магазина Windows и Windows Phone путем использования диагностических инструментов и средств профилирования Visual Studio. Раздел "Производительность и диагностика" облегчает выбор и использование этих инструментов, позволяет применять несколько инструментов в одной диагностической процедуре и работать с получаемыми отчетами. Эти инструменты можно использовать на большинстве целей развертывания. Для приложений Windows Phone используйте телефон или эмулятор. Для приложений Магазин Windows используйте компьютер с Visual Studio, имитатор или удаленный ПК. После выполнения сбора данных в диагностическом отчете приводятся графики временной шкалы и подробные представления данных. Фильтры и настройки отчетов производительности и диагностики позволяют сконцентрироваться на важнейших данных.

Инструменты в разделе "Производительность и диагностика"

В разделе "Производительность и диагностика" предоставляются инструменты, которые можно использовать с определенными типами приложений (XAML и C#/VB/C++ или HTML и JavaScript), и инструменты, которые можно использовать в одной диагностической процедуре.

Загрузка ЦП (все)

Расход энергии (все)

Использование памяти (C#/VB/C++)

Использование памяти JavaScript

Скорость реагирования ИП XAML

Скорость реагирования ИП HTML

Время выполнения функций JavaScript

Содержание этой статьи

  • Краткое руководство: сбор диагностических данных

  • Сбор диагностических данных

    Добавление пользовательских делений для обозначения расположений в диагностических данных | Задание запускаемого проекта | Задание целевого объекта анализа | Выбор инструментов для использования в диагностическом сеансе | Запуск и остановка диагностического сеанса

  • Открытие файла диагностического сеанса

  • Страница данных "Производительность и диагностика"

  • Устранение неполадок

Краткое руководство: сбор диагностических данных

Примечание

Для использования инструментов диагностики и производительности требуются права администратора.Можно запустить Visual Studio от имени администратора или запустить инструменты от имени администратора при начале диагностического сеанса.

  1. Откройте проект в Visual Studio.

  2. Задайте расположение развертывания.

    Применимо только к Windows Phone

    Приложения Windows Phone могут быть развернуты на телефоне или одном из эмуляторов Visual Studio.

    Применимо только к Windows

    Приложения для Магазина Windows можно развернуть на компьютере с Visual Studio, на имитаторе Visual Studio или на подключенном по сети ПК или планшете.

    Примечание. Для запуска диагностического сеанса на удаленном ПК или планшете на этом устройстве должны быть установлены и запущены инструменты удаленной отладки Visual Studio. См. раздел Запуск приложений для Магазина Windows на удаленном компьютере из Visual Studio.

    В перечне расположений отладки на панели инструментов отладчика выберите расположение развертывания для своего приложения. Ниже приводится перечень для приложений для телефона.

    Список целей развертывания для приложений Windows Phone

  3. Откройте сеанс "Производительность и диагностика". В меню Отладка выберите Производительность и диагностика (сочетание клавиш: ALT + F2).

  4. В разделе "Производительность и диагностика" выберите один или несколько инструментов, которые необходимо использовать в этом сеансе. Отображаются только инструменты, подходящие типу проекта и языку программирования. При выборе какого-либо диагностического инструмента отключается возможность выбора инструментов, которые не могут использоваться вместе с ним в том же диагностическом сеансе. Так могут выглядеть выбранные варианты для приложения JavaScript:

    Выберите одно или несколько диагностических средств

  5. Для запуска диагностического сеанса выберите Запуск.

  6. Выполните сценарии, для которых необходимо собрать данные.

    Во время выполнения сеанса некоторые инструменты отображают графики по данным в реальном времени на странице "Производительность и диагностика".

    Соберите данные на странице "Производительность и диагностика"

  7. Для завершения диагностического сеанса выберите Остановка сбора.

Сбор диагностических данных

Добавление пользовательских делений для обозначения расположений в диагностических данных | Задание запускаемого проекта | Задание целевого объекта анализа | Выбор инструментов для использования в диагностическом сеансе | Запуск и остановка диагностического сеанса

Добавление пользовательских делений для обозначения расположений в диагностических данных

Можно добавлять пользовательские деления в данные профилирования для облегчения идентификации областей на линейке временной шкалы.

Пользовательские отметки на временной шкале

Отметка отображается в виде оранжевого треугольника на временной шкале в момент выполнения метода. Сообщение и время отображаются в виде всплывающей подсказки при наведении указателя мыши на отметку. Если две или несколько пользовательских отметок расположены рядом друг с другом, отметки и данные их всплывающих подсказок объединяются. Для разделения отметок можно увеличить масштаб изображения временной шкалы.

Примечание

  • В отчетах времени выполнения функций JavaScript пользовательские деления не отображаются.

  • Пользовательские деления в отчетах не отображаются, если в диагностическом сеансе использовался только инструмент загрузки ЦП.

  • См. примеры Windows SDK LoggingSession Sample.

Добавление делений в код C#, Visual Basic, C++

Для добавления пользовательского деления в код C#, Visual Basic, C++ сначала создайте объект Windows.Foundation.Diagnostics LoggingChannel. Затем добавьте вызовы методов LoggingChannel.LogMessage в тех местах кода, которые требуется отметить. Используйте LoggingLevel.Information в вызовах.

При выполнении метода пользовательская отметка добавляется в данные профилирования вместе с сообщением.

Примечания

При добавлении каналов ведения журнала может возникнуть пара трудностей:

Каждый открытый канал ведения журнала должен иметь уникальное имя. Попытка создания нового канала ведения журнала с именем, совпадающим с именем неудаленного канала, приводит к возникновению исключения.

Чтобы избежать дубликатов имен в коде, можно использовать статический (Shared в VB) метод для возврата LoggingChannel с гарантированно уникальным именем. В этом примере для обеспечения уникальности используется структура Guid:

//using Windows.Foundation.Diagnostics
public static LoggingChannel GetLoggingChannel()
{
    var name = Guid.NewGuid().ToString();
    return new LoggingChannel(name);
}
'Imports Windows.Foundation.Diagnostics
Public Shared Function GetLoggingChannel() As LoggingChannel
    Dim Name = Guid.NewGuid().ToString()
    GetLoggingChannel = New LoggingChannel(Name)
End Function
//using namespace Windows::Foundation::Diagnostics;
static LoggingChannel^ MainPage::GetLoggingChannel()
{
    auto name = (ref new Guid())->ToString();
    auto channel = ref new LoggingChannel(name);
    return channel;
}

C# и VB: объекты LoggingChannel следует высвобождать

Из-за того, что объекты LoggingChannel используют системные ресурсы, проекции C# и VB для LoggingChannel наследуют интерфейс System.IDisposable и дают возможность высвободить ресурсы до того, как объект будет удален сборщиком мусора CLR. В коде C++ объект LoggingChannel удаляется и ресурсы освобождаются сразу после выхода объекта из области. Примеры шаблонов, которые можно использовать для добавления пользовательских отметок в файл сеанса диагностики:

void MyScenario()
{
    var logLevel = LoggingLevel.Information;
    using(var channel = Utils.GetLoggingChannel())
    {
        channel.LogMessage("MyScenario Start", logLevel);
        // scenario code
        channel.LogMessage("MyScenario End", logLevel);
    }
}
Sub MyScenario()
    Dim logLevel = LoggingLevel.Information
    Using channel As LoggingChannel = Utils.GetLoggingChannel()
        channel.LogMessage("MyScenario Start", logLevel)
        'scenario code
        channel.LogMessage("MyScenario End", logLevel)
    End Using
End Sub
// m_channel resources are released when containing 
// object goes out of scope
LoggingChannel^ m_channel = MainPage::GetLoggingChannel();
LoggingLevel m_logLevel = LoggingLevel::Information;

void MyScenario()
{
    m_channel->LogMessage(L"MyScenario Start", m_logLevel);
    //scenario code
    m_channel->LogMessage(L"MyScenario Start", m_logLevel);
}

Добавление делений в код JavaScript

Для добавления пользовательских делений добавьте следующий код в тех местах кода, которые необходимо отметить:

if (performance && performance.mark) {
    performance.mark(markDescription);
}

markDescription — строка, содержащая сообщение, которое будет отображаться в подсказке пользовательского деления.

Задание запускаемого проекта

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

Выберите набор в качестве запускаемого проекта

Задание расположения развертывания

Можно запускать диагностические сеансы для приложений на телефоне Windows Phone, напрямую подключенном к компьютеру с Visual Studio, или на эмуляторе телефона в Visual Studio. Можно запускать приложения для Магазина Windows на компьютере с Visual Studio, в имитаторе устройства в Visual Studio или на удаленном устройстве, которое подключено к Visual Studio по сети или напрямую подключено к компьютеру с Visual Studio с помощью кабеля Ethernet-USB. Цель развертывания можно задать на странице отладки свойств проекта, также можно выбрать цель в перечне мест отладки на панели инструментов Visual Studio. Ниже приводится перечень развертываний для приложений для Магазина Windows:

Список целей развертывания для приложений Магазина Windows

Выбор, производимый на панели инструментов места отладки, сохраняется в свойствах проекта.

Применимо только к Windows

  • Для запуска диагностического сеанса на удаленном устройстве Магазина Windows на этом устройстве должны быть установлены и запущены инструменты удаленной отладки Visual Studio. См. раздел Запуск приложений для Магазина Windows на удаленном компьютере из Visual Studio.

  • Если вы не указали удаленное устройство при выборе удаленного компьютера в перечне мест отладки, укажите его в появляющемся диалоговом окне "Удаленные подключения".

    Диалоговое окно "Удаленные подключения"

  • После указания целевого удаленного устройства необходимо использовать страницу Отладка свойств проекта для изменения на новое устройство.

  • Если для подключения удаленного устройства к компьютеру с Visual Studio используется кабель USB–Ethernet, укажите IP-адрес удаленного устройства в диалоговом окне "Удаленные подключения".

Задание целевого объекта анализа

Помимо запуска приложения из проекта Visual Studio можно также запускать диагностические сеансы на альтернативных целевых объектах. Например, может потребоваться проведение диагностики проблем производительности версии приложения, установленной из Магазина приложений Windows.

Выберите целевой объект анализа диагностическими средствами

Применимо только к Windows

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

Выберите выполняемое или установленное приложение для диагностики

Применимо только к Windows Phone

Если выбирается Internet Explorer, необходимо указать url и можно изменить телефон, который является целевым объектом развертывания.

Укажите URL-адрес для отображения в Internet Explorer

Выбор инструментов для использования в диагностическом сеансе

В разделе "Производительность и диагностика" выберите один или несколько инструментов, которые необходимо использовать в диагностическом сеансе. Отображаются только инструменты, подходящие по типу проекта и программирования. При выборе какого-либо диагностического инструмента отключается возможность выбора инструментов, которые не могут использоваться вместе с ним в том же диагностическом сеансе. Так могут выглядеть выбранные варианты для приложения JavaScript:

Запуск и остановка диагностического сеанса

Для запуска диагностического сеанса выберите "Запуск".

Для завершения диагностического сеанса и начала анализа данных выберите Остановка сбора в нижней части страницы.

Открытие файла диагностического сеанса

По окончании сбора данных в ходе диагностического сеанса данные незамедлительно анализируются, а затем отображаются в отчете "Производительность и диагностика".

Также в разделе "Производительность и диагностика" в перечне недавних файлов можно открывать сохраненные файлы диагностического сеанса.

Откройте сохраненный файл диагностического сеанса

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

Отчет "Производительность и диагностика"

Страница данных "Производительность и диагностика"

Шаг 1

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

Шаг 2

Отчет можно ограничить частью временной шкалы, перетащив синие панели, чтобы выбрать нужную область временной шкалы.

Шаг 3

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

Шаг 4

Графики можно развернуть или свернуть по отдельности.

Шаг 5

Если данные включают в себя информацию от нескольких инструментов, подробные сведения по инструментам размещены на вкладках.

Шаг 6

Инструменту может соответствовать одно или несколько подробных представлений. Представление фильтруется по выбранной области временной шкалы.

Устранение неполадок

События диагностики удалены.Отдельная информация в отчете может отсутствовать или быть неточной.

Сборщик данных в инструментах производительности и диагностики может сильно загружать память и процессор. В случаях, когда сборщик данных не в состоянии занести в журнал все события диагностики, он отображает сообщение на панели информации в верхней части страницы "Производительность и диагностика". Отдельная информация в отчете может отсутствовать или быть неточной.

Чтобы устранить эту проблему, попробуйте выполнить следующие действия для освобождения ресурсов компьютера, а затем повторите сеанс диагностики:

  1. закройте другие приложения, которые не участвуют в сеансе диагностики;

  2. упростите сценарий таким образом, чтобы собирать меньше данных;

  3. используйте меньше инструментов диагностики в одном сеансе.

См. также

Другие ресурсы

Производительность (для приложений Магазина Windows)

Пример Windows SDK LoggingSession Sample