Содержание
Что такое замер производительности в 1С
Результаты замеров нужны для:
- выявления узких мест в коде — медленных запросов, блокировок, слишком длинных фрагментов кода;
- понимания причин жалоб пользователей на некорректную или медленную работу;
- обеспечения непрерывной и безотказной работы системы при росте базы, после обновления или доработки;
- правильного проведения рефакторинга кода;
- выявления способов повышения быстродействия системы;
- выбора оптимального варианта программной реализации алгоритмов работы.
Замер производительности — не разовая процедура, а циклическое действие. После замера, если он показал, что есть проблемы, принимается ряд корректирующих мер. Для того, чтобы определить, насколько эффективны внесенные изменения, замер производительности осуществляют с заданной периодичностью — еженедельно или ежемесячно. Накопление статистических данных и их анализ позволяют сравнить разные варианты кода и выбрать наиболее быстрый.
Как включить замер производительности в 1С 8.3
Перед запуском замера производительности убедитесь, что на сервере «1С:Предприятия» включена отладка. В ином случае в результат замера попадет только код, который выполняется на клиенте, а это не даст исчерпывающей информации о производительности — чаще всего «тормозит» работу серверный код.
Затем пользователю с правами администратора нужно запустить 1С в режиме «Конфигуратор» и открыть пункт меню «Отладка → Замер производительности»:
В модальном окне нажмите кнопку «Да»:
После этого в меню «Отладка» выберите пункт «Начать отладку» или нажмите F5.
Как пользоваться замером производительности в 1С
При осуществлении замера производительности 1С сохраняет полную работоспособность — вам не нужно отслеживать ход выполнения замера или делать паузу в работе с 1С. Замер будет совершаться, пока вы его не остановите. Для этого повторно нажмите на пункт меню «Отладка → Замер производительности». По завершении замера откроется окно с его результатами:
Основные колонки:
- «Кол.» — количество раз выполнения строки кода.
- «Время чистое» — количество секунд, затраченных на выполнение строки кода.
- «% времени» — время выполнения строки по отношению к общему времени выполнения замера.
В результатах замера мы видим список ссылок на конкретные строки с указанием частоты их выполнения и длительности. Также указаны строки кода, исполнявшиеся на клиенте, на сервере, и строки, приводящие к вызову сервера. Строки кода на клиенте промаркированы значком в колонке «Клиент», на сервере — значком в колонке «Сервер».
Установите флаг «Для вызова процедур и функций включать время выполнения», если хотите, чтобы в таблице было показано время, затраченное на вызов процедуры или функции.
Можно выборочно суммировать строки замера для получения обобщенных характеристик выполнения отдельных строк:
Существует возможность выполнения замера производительности не всей конфигурации, а отдельного фрагмента кода. Для этого в системе откройте форму операции, которую будете замерять. После этого в конфигураторе перейдите в пункт меню «Отладка → Замер производительности», а в информационной системе проведите операцию. По ее завершении вернитесь в конфигуратор и повторно нажмите «Замер производительности».
Результат замера можно сохранить в файл для дальнейшего анализа. Для этого перейдите в меню «Файл → Сохранить».
При анализе результатов замера в первую очередь смотрят на длительность выполнения операций на клиенте и на сервере, и выделяют функции, занимающие максимальное количество времени. Также целесообразно проанализировать вызовы процедур и функций общих модулей на сервере, вызовы сервера при обращении к методам и свойствам объектов языка. Для анализа удобно использовать фильтры и сортировку по времени и процентам.
Практические рекомендации по использованию замеров
Для упрощения анализа таблицу с результатами замера можно отсортировать по любой из колонок и отфильтровать по месту исполнения — клиент, сервер, клиент и сервер. Отсортируйте результаты по столбцу «Время» или «Суммарное время» в порядке убывания. Наверху отобразятся процедуры с наибольшим временем выполнения и высокой долей процентов в общем времени. Это и есть участки кода, замедляющие работу больше всего.
Если по результатам видно, что клиент работает долго, это может означать, что код перегружает интерфейс или выполняет сложные вычисления на стороне пользователя. Если долго работает сервер, вероятно, что проблема в запросах к базе данных, тяжелых алгоритмах, блокировках. Можно увидеть, что отдельные запросы вызываются циклически десятки и сотни раз, или что происходят скрытые серверные вызовы из-за некорректного обращения к свойствам.
Дополнительная польза от замера производительности — помощь в поиске вызываемых мест кода. Если нужно быстро обнаружить место вызова процедуры, не производя поиск по всей конфигурации, можно в результатах замера собрать стек вызовов исполняемого кода и посредством поиска найти в таблице нужную строку кода.
Рекомендации по улучшению производительности 1С
- Оптимизировать запросы — перенести их из циклов, упростить, заменить * на конкретные имена полей, использовать EXISTS вместо IN при соединениях.
- Оформить часто повторяющиеся коды в процедуры.
- Использовать индексирование полей.
- Произвести рефакторинг кода.
- Оптимизировать работу с памятью и вычислениями.
- Перенести сложные вычисления с клиента на сервер.
В отдельных случаях для повышения производительности понадобится апдейт оборудования и/или ПО: установка SSD-накопителей, увеличение оперативной памяти, использование быстрых процессоров, обновление платформы «1С:Предприятие». Но в большинстве ситуаций, достаточно перечисленных выше действий. Рекомендуем начать с оптимизации кода и оценить ее результативность.
Заключение
Замер производительности 1С — простая и безопасная процедура, которую имеет смысл выполнять регулярно, не дожидаясь, пока ошибки в коде приведут к проблемам в работе пользователей. Вы можете производить замер самостоятельно или делегировать эту и другие технические работы специалистам компании «Первый Бит». Мы готовы оказывать техническую и консультационную поддержку в рамках договора на корпоративное сопровождение или как разовую услугу.
В нашу команду входят тысячи сертифицированных специалистов 1С с универсальными навыками и с узкой специализацией. Мы выполним любые поставленные вами задачи с высоким качеством и обратим ваше внимание как на потенциальные риски, так и на неиспользуемые возможности. С нашим сопровождением вы сможете больше не беспокоиться о работоспособности, бесперебойности, надежности и безопасности 1С.