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