0

Для начала процесса замера производительности

1С:Предприятие 8 позволяет отлаживать и измерять производительность для кода на встроенном языке, исполняемом как на клиенте, так и на сервере.

Объединение результатов замера производительности для клиента и сервера

Особенностью работы замера производительности для клиент-серверной информационной базы в 1С:Предприятии 8 является то, что результаты замера производительности объединяются в один файл. Они включают в себя данные о ходе исполнения кода на встроенном языке как на клиенте, так и на сервере. Для получения такого замера достаточно запустить сервер 1С:Предприятия 8 в отладочном режиме (с помощью ключа командной строки /debug ) и в Конфигураторе в нужный момент просто включить режим замера производительности.

Отображение серверных вызовов.

Режим замера производительности 1С:Предприятия 8 показывает серверные вызовы:
1) вызовы сервера методами объектов встроенного языка, вызовы процедур и функций, исполнение которых происходит на сервере, отображаются в замере производительности в колонке "Обр. сервером" ("Обработка сервером") с помощью значка ;
2) вызовы клиентских процедур и функций, в которых тем или иным способом происходил вызов сервера, отображаются в замере производительности в колонке "Обр. сервером" ("Обработка сервером") с помощью значка .

На приведенном ниже рисунке можно видеть строки кода, которые приводили к серверным вызовам: для этих строк в колонке "Обр. сервером" ("Обработка сервером") указан соответствующий тип серверного вызова:

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

Отображение места исполнения кода: на клиенте или на сервере.

Режим замера производительности 1С:Предприятия 8 отображает, где исполнялся код на встроенном языке в клиент-серверной информационной базе: на клиенте или на сервере:
1) строки кода на встроенном языке, исполнение которых происходило на клиенте, отображаются в замере производительности с помощью значка в колонке "Клиент";
2) строки кода на встроенном языке, исполнение которых происходило на сервере, отображаются в замере производительности с помощью значка в колонке "Сервер".

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

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

Фильтрация результатов замера

В результатах замера производительности в 1С:Предприятии 8 существует возможность фильтрации информации результатов замера. Такая фильтрация реализована в виде двух флажков "Клиент" и "Сервер" в нижней правой части окна результатов замера. По умолчанию, включены оба флажка: это говорит о том, что в результатах замера присуитствует информация о ходе исполнения кода на встроенном языке как на клиенте, так и на сервере. Если оставить включенным только один флажок, то в результатах замера будет показываться только информация о ходе исполнения приложения только на клиенте или сервере соответственно.

Читайте также:  Как включить аудиоустройство на компьютере

Оптимизация приложения

Режим замера производительности в 1С:Предприятии 8 позволяет успешно производить оптимизацию работы клиент-серверных приложений. Для выполнения такой оптимизации достаточно выполнить всего несколько действий, после чего проанализировать результаты замера производительности и перейти к улучшению кода на встроенном языке.

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

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

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

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

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

Проанализировать серверные вызовы: вызовы процедур и функций общих модулей на сервере, вызовы сервера при обращении к методам и свойствам объектов языка (обращение к базе данных, оперативная отметка времени и т.п.).

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

  • обращения к серверу в цикле, запросы в цикле;
  • обращения к свойствам объекта по ссылке;
  • и другие.

Оптимизировать прикладной код

Последний шаг – оптимизация прикладного кода. На основе анализа результатов замера производительности и выявленных узких мест произвести оптимизацию прикладного кода.

Для чего нужен замер производительности?

В платформе есть множество удобных инструментов, повышающих эффективность работы разработчика прикладных решений 1С. Один из таких инструментов – «Замер производительности». Грамотный разработчик понимает, насколько важна производительность 1С, ценность быстрой работы разрабатываемых им решений. И конечно же, он должен уметь выявлять и быстро находить проблемные места в коде.

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

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

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

Читайте также:  Как видео с телефона перевернуть на компе

Как запускать замеры?

Шаг 1. Запустить базу 1С в режиме отладки. Запускаем базу в режиме конфигуратора, нажимаем «F5» (или кнопку «Начать отладку») и запускаем пользовательский режим для отладки.

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

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

Шаг 2. Открыть нужное место в системе для запуска исполняемой команды. Не нужно включать отладку до момента запуска команды, иначе в стек замера попадут ненужные строки.

Шаг 3. Нажать кнопку замера производительности. Кнопка появляется при включении отладки.

Шаг 4. Выполнить команду и дождаться завершения. После отжать кнопку замера и получить таблицу результатов замера.

Шаг 5. 1С оценка производительности и устранение проблемных мест.

Хотелось бы рекомендовать разработчикам делать тест производительности 1С, своих (да и чужих) решений не откладывая до времени, когда это станет проблемой пользователей. Собрать замеры и просмотреть результат не так уж и долго, а вот эффект может оказаться крайне положительным.

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

Имеем обработку (условно), которая выводит простую таблицу с суммой движений по 60 счету по документам поступления товаров и услуг.

Когда ее разработали, документов у компании формировалось немного и особо не заморачивались с кодом. Программист на скорую руку набросал бухгалтеру такую обработку и забыл про нее. Но вот прошло несколько лет и документов стало по несколько тысяч в месяц и теперь бухгалтер жалуется, что скорость работы 1С оставляет желать лучшего. На компьютере бухгалтера «крутится» по несколько минут.

Запускаем замер производительности и сразу видно проблему – запрос в цикле.

Для выявления проблемных мест достаточно отсортировать результат по времени выполнения или проценту от общего времени выполнения.

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

Нижние итоги показывают сумму показателя по выделенной строке. Поэтому если нужно увидеть общее время работы команды, достаточно выделить все строки (Ctrl+A).

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

Снова делаем замер и вот результат:

Проблема решена, обработка отработала практически моментально.

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

Часто бывает, что кода в исполняемой команде много, и неясно, в каком именно месте можно оптимизировать решение. Именно для поиска таких мест и нужен «Замер производительности 1С».

Особенность замера производительности в управляемых формах

В клиент-серверном варианте работы информационной базы, замер производительности собирает клиентские и серверные вызовы в одну таблицу. Понять место вызова можно по колонкам «Клиент» и «Сервер».

Читайте также:  Детские часы gps трекер q50

Если отладка на сервере выключена, то будут собраны и показаны только клиентские вызовы. Также можно отфильтровать отображение вызовов через флажки «Клиент» и «Сервер».

А вот так будет выглядеть стек замера в обычном режиме (нет разделения на «Клиент» и «Сервер»):

Обучение программированию на 1С

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

Замер производительности – мощный инструмент, помогающий работать в 1С более комфортно. Часто он более полезен, чем другие встроенные механизмы анализа программного кода.

Варианты применения функции

Она может потребоваться в ситуациях, когда:

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

Включение замера производительности

Чтобы его запустить:

  • Откройте 1С в режиме отладки;
  • Установите две точки останова (одну в месте начала замера, вторую – в конце);
  • Активируйте процесс замера («Отладка – Замер производительности»).

После активации появится такое окно:

Слева указаны результаты: напротив каждой строчки — количество раз, которое она выполнялась. Справа – время выполнения кода с учётом общего временного промежутка (в процентах). Если активирован режим управляемого приложения, в окне также будет указано, на клиенте или на сервере происходило выполнение кода.

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

Сохранение результатов замера

Функция очень полезна для последующего анализа выполнения кода. Обычно её используют, чтобы:

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

Для сохранения результатов проверки необходимо нажать «Файл – Сохранить». Для открытия файла в Отладчике нужно зайти в меню «Файл – Открыть». Откроется pff-страничка. Чтобы сохранить результат в текстовом формате, необходимо:

  • Выделить нужные строки в окне демонстрации результатов замера;
  • Сохранить их в буфер обмена (кнопка «Действия – Запомнить»);
  • Вставить строки в Блокноте (или другой программе) и сохранить файл.

Для чтения pff-файла необходим доступ к 1С. А проверить результаты замера в текстовом формате можно на любом устройстве, даже через интернет.

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

admin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *