Замер производительности

Замер производительности позволяет оценить скорость работы всей конфигурации или ее части, работающей в рамках любого типа предмета отладки. Измеряется частота использования конкретных участков кода и скорость их выполнения. Указывается, какой код исполнялся на сервере, а какой — на клиенте. Указываются строки кода, приведшие к вызову сервера.

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

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

Подробнее о замере производительности можно прочитать в документации «1С:Предприятия».

Замерить производительность

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

Чтобы выполнить замер, нужно в некоторый момент времени его начать, и в некоторый момент времени его закончить. Оба эти действия выполняются одной и той же командой в командной панели основного окна — (Замер производительности).

По окончании замера 1C:EDT автоматически откроет панель Замер производительности, содержащую результаты замера.

Замер при старте приложения

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

  1. Нажмите (Замер производительности) в командной панели основного окна, чтобы включить замер;
  2. Запустите приложение в режиме отладки;
  3. После того, как нужные действия будут выполнены, нажмите (Замер производительности), чтобы выключить замер.
    1C:EDT откроет панель Замер производительности.

Время, прошедшее между стартом замера и началом работы приложения, не будет учитываться в результатах замера.

Замер произвольного участка интерактивных действий

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

  1. Запустите приложение в режиме отладки;
  2. Подготовьте приложение к выполнению требуемого участка;
  3. Перейдите в 1C:EDT и нажмите (Замер производительности) в командной панели основного окна, чтобы включить замер;
  4. Перейдите в приложение и выполните требуемую последовательность действий;
  5. Перейдите в 1C:EDT и нажмите (Замер производительности), чтобы выключить замер.
    1C:EDT откроет панель Замер производительности.
Замер произвольного участка программного кода

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

  1. Установите точки останова в начале и в конце того участка, который вы хотите замерить;
  2. Запустите приложение в режиме отладки;
  3. Выполните последовательность действий, которая приводит к остановке в начале вашего участка;
  4. После того, как исполнение остановлено, нажмите (Замер производительности) в командной панели основного окна, чтобы включить замер;
  5. Продолжите исполнение программы;
  6. После того, как исполнение будет остановлено в конце вашего участка, нажмите (Замер производительности), чтобы выключить замер.
    1C:EDT откроет панель Замер производительности.
Замер при завершении работы приложения

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

  1. Запустите приложение в режиме отладки;
  2. Подготовьте приложение к выполнению требуемого участка;
  3. Перейдите в 1C:EDT и нажмите (Замер производительности) в командной панели основного окна, чтобы включить замер;
  4. Выполните последовательность действий и завершите работу приложения. Будет открыта панель Замер производительности.

Просмотреть результаты замера производительности

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

В панели «Замер производительности»

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

Дважды кликнув на строке замера вы откроете модуль, который содержит эту строку. В редакторе встроенного языка будет выделена исполнявшаяся инструкция.

В модуле

Результаты замера можно увидеть и в модуле. Для этого в вертикальной линейке в контекстном меню установите флажок Замер производительности > Показать результаты замеров.

Панель «Замер производительности»

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

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

Открыть панель «Замер производительности»

Нажмите Окно > Показать панель > > Другое… > 1С:Предприятие > Замер производительности в главном меню основного окна.

Структура информации

Стандартно результаты замера представлены в виде списка выполнявшихся операторов, в котором, помимо оператора (колонка Строка), указаны модуль (колонка Модуль) и номер строки (колонка № строки), в которой расположен этот оператор.

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

Условные обозначения
  • — код выполняется на клиенте;
  • — в процессе выполнения кода происходит обращение к серверу;
  • — код выполняется на сервере;
  • В колонке Чистое время (с) цветом и шириной фона обозначается доля (процент), которую занимает выполнение данной строки в общем времени замера;
  • Стандартное имя текущего замера. Состоит из имени проекта (ДемоУП_14), даты замера (15:44:11, Пт, 30 авг 2019) и предметов отладки (Тонкий клиент). К стандартному имени можно добавить свой префикс. Из выпадающего списка можно выбрать один из имеющихся в рабочей области замеров для того, чтобы показать его результаты в панели.
Колонки
  • Модульмодуль, которому принадлежит строка кода. Эта колонка показывается, если результаты замера представлены в виде таблицы операторов;
  • № строкиномер строки в модуле. Эта колонка показывается, если результаты замера представлены в виде таблицы операторов;
  • Строкастрока кода, которая выполнялась. Эта колонка показывается, если результаты замера представлены в виде таблицы операторов;
  • Метод — Метод, который выполнялся. Эта колонка показывается, если результаты замера представлены в виде списка методов.
  • Кол-во вызововсколько раз выполнялась данная строка кода за время замера;
  • Полное время (с)полное время выполнения строки кода. Оно складывается из времени вызова метода (не показывается в таблице) и чистого времени выполнения оператора, которое показывается в колонке Чистое время (с);
  • Чистое время (с)чистое время выполнения оператора (без учета времени вызова процедуры или функции). Также в этой колонке показывается доля (в процентах), которую заняло выполнение этого оператора в общем времени замера;
  • Клиентв этой колонке пиктограммой отмечаются строки, выполнявшиеся на клиенте;
  • Автономный сервер — в этой колонке отмечаются строки, выполнявшиеся на автономном сервере мобильного клиента с автономным режимом;
  • Серверв этой колонке пиктограммой отмечаются строки, выполнявшиеся на сервере;
  • Обр. серверав этой колонке пиктограммой отмечаются строки, выполнение которых привело к вызову сервера;
Клики мышью
  • Двойной клик на строке открывает модуль в редакторе встроенного языка и позиционируется на исполнявшемся операторе или на исполнявшемся методе (если результаты представлены в виде списка методов);
Командная панель
  • (Переименовать результат)позволяет добавить произвольную строку в начало стандартного имени замера;
  • (Сравнить с...)позволяет сравнить текущий замер с другим замером;
  • (Импорт результатов замеров)импортирует результаты замеров в 1C:EDT;
  • (Экспорт результатов замеров)экспортирует результаты замеров из 1C:EDT;
  • (Очистить результаты)очищает панель Замер производительности и историю замеров;
  • (Развернуть все)раскрывает все уровни иерархии в панели;
  • (Свернуть все)сворачивает все уровни иерархии, существующие в панели, до первого уровня;
  • (Группировать методы по модулям)группирует методы по модулям в том случае, если результаты замера представлены в виде списка методов;
  • (Результаты клиента)если нажата, показываются операторы, выполняемые на клиенте и, возможно, выполняемые на сервере (если нажата (Результаты сервера)). Если отжата — показываются только операторы, выполняемые на сервере;
  • (Результаты автономного сервера)если нажата, показываются операторы, выполняемые на автономном сервере и, возможно, выполняемые на клиенте (если нажата (Результаты клиента)). Если отжата — показываются только операторы, выполняемые на клиенте;
  • (Результаты сервера)если нажата, показываются операторы, выполняемые на сервере и, возможно, выполняемые на клиенте (если нажата (Результаты клиента)). Если отжата — показываются только операторы, выполняемые на клиенте;
  • (Табличное представление)результаты замера представляются в виде таблицы выполнявшихся операторов с колонками Модуль, № строки и Строка;
  • (Список методов)результаты замера представлены в виде списка выполнявшихся методов. Можно сгруппировать этот список по модулям;

Сравнить результаты двух замеров производительности

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

Сравнить результаты замера с другим замером
  1. Нажмите (Сравнить с...) в командной панели;
  2. Выберите интересующий вас замер в верхней таблице.
    В нижней таблице, для информации, показан состав того замера, который выбран в верхней таблице;
  3. Нажмите Готово.
    1C:EDT откроет панель сравнения результатов замеров.

Структура информации в панели

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

Кроме этого стандартно в панели отображаются изменения этих значений, выраженные как темп роста. темп роста вычисляется по формуле: (сравниваемое - базовое) / базовое; Можно включить другое отображение - в виде разницы долей.

Колонки
  • Полное время (базовый) — относится к базовому замеру, полное время выполнения строки кода. Оно складывается из времени вызова метода (не показывается в таблице) и чистого времени выполнения оператора, которое показывается в колонке Чистое время (с);
  • Полное время (сравниваемый) — относится к сравниваемому замеру, полное время выполнения строки кода. Оно складывается из времени вызова метода (не показывается в таблице) и чистого времени выполнения оператора, которое показывается в колонке Чистое время (с);
  • Чистое время (базовый) — относится к базовому замеру, чистое время выполнения оператора (без учета времени вызова процедуры или функции). Также в этой колонке показывается доля (в процентах), которую заняло выполнение этого оператора в общем времени замера;
  • Чистое время (сравниваемый) — относится к сравниваемому замеру, чистое время выполнения оператора (без учета времени вызова процедуры или функции). Также в этой колонке показывается доля (в процентах), которую заняло выполнение этого оператора в общем времени замера;
  • Темп роста полного времениизменение полного времени, выраженное как темп роста. темп роста вычисляется по формуле: (сравниваемое - базовое) / базовое; Отображается при нажатой кнопке (Показать темп роста);
  • Темп роста чистого времениизменение чистого времени, выраженное как темп роста. темп роста вычисляется по формуле: (сравниваемое - базовое) / базовое; Отображается при нажатой кнопке (Показать темп роста);
  • Разница долей полного времениизменение полного времени, выраженное как разница долей. разница долей вычисляется по формуле: сравниваемое время строки/время сравниваемого замера - базовое время строки/время базового замера; Отображается при нажатой кнопке (Показать разницу долей (процентов) времени);
  • Разница долей чистого времениизменение чистого времени, выраженное как разница долей. разница долей вычисляется по формуле: сравниваемое время строки/время сравниваемого замера - базовое время строки/время базового замера; Отображается при нажатой кнопке (Показать разницу долей (процентов) времени).
Клики мышью
  • Одиночный клик на заголовке колонки сортирует строки таблицы по этой колонке. Если они уже отсортированы по этой колонке — меняет направление сортировки;
  • Двойной клик на строке с оператором открывает модуль в редакторе встроенного языка и позиционируется на этом операторе.
Командная панель
  • (Установить порог разницы)устанавливает порог разницы в секундах. Порог разницы — это значение дельты (разности между двумя замеренными значениями), начиная с которого механизм сравнения будет отображать изменение значения. Установка порога разницы позволяет вам освободить результаты сравнения двух замеров от маленьких и незначительных, на ваш взгляд, изменений;
  • (Обнулить порог разницы)обнуляет порог разницы и показывает все результаты сравнения;
  • (Точные значения)если нажата, в панели отображаются колонки Полное время (с) и Чистое время (с) для базового и сравниваемого замеров;
  • (Изменение)если нажата, в панели отображаются колонки Темп роста полного времени и Темп роста чистого времени или колонки Разница долей полного времени и Разница долей чистого времени;
  • (Развернуть все)раскрывает все уровни иерархии в панели;
  • (Свернуть все)сворачивает все уровни иерархии, существующие в панели, до первого уровня;
  • (Группировать методы/строки по модулям)если нажата, строки панели группируются по модулям;
  • (Группировать строки по методам)если нажата, строки панели группируются по методам;
  • (Результаты клиента)если нажата, показываются операторы, выполняемые на клиенте и, возможно, выполняемые на сервере (если нажата (Результаты сервера)). Если отжата — показываются только операторы, выполняемые на сервере;
  • (Результаты сервера)если нажата, показываются операторы, выполняемые на сервере и, возможно, выполняемые на клиенте (если нажата (Результаты клиента)). Если отжата — показываются только операторы, выполняемые на клиенте;
  • (Показать темп роста)изменения отображаются как темп роста в колонках Темп роста полного времени и Темп роста чистого времени. темп роста вычисляется по формуле: (сравниваемое - базовое) / базовое;
  • (Показать разницу долей (процентов) времени)изменения отображаются как разница долей в колонках Разница долей полного времени и Разница долей чистого времени. разница долей вычисляется по формуле: сравниваемое время строки/время сравниваемого замера - базовое время строки/время базового замера;

Экспорт и импорт результатов замера производительности

Результаты замеров можно сохранить в файлы или загрузить из файлов.

Экспорт замеров
  1. В панели Замер производительности нажмите (Экспорт результатов замеров) в командной панели;
  2. В поле Полный путь выберите каталог, в который будут выгружены результаты замеров;
  3. Снимите флажки с тех замеров, которые экспортировать не нужно;
  4. Нажмите Готово.

Те же действия можно выполнить в панели Навигатор. Для этого нажмите Экспорт... > 1C:Enterprise > Замеры производительности.

Импорт замеров
  1. В панели Замер производительности нажмите (Импорт результатов замеров) в командной панели;
  2. В поле Полный путь выберите каталог, содержащий результаты замеров;
  3. Снимите флажки с тех замеров, которые импортировать не нужно;
    Если в выбранном каталоге содержатся уже импортированные замеры, то они будут отмечены третьим состоянием флажка. Импортировать их нельзя, у них флажок можно только сбросить;
  4. Нажмите Готово.

Те же действия можно выполнить в панели Навигатор. Для этого нажмите Импорт... > 1C:Enterprise > Замеры производительности.