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