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