К статье
Практический материал

Разработка и Конфигурация · 10 мин

Чистое время в замере производительности 1С: в чем измеряется и как его анализировать

Разбираем колонку «Время чистое» в замере производительности 1С: в чем измеряется, чем отличается от общего времени, как читать результаты и искать узкие места.

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

Короткий ответ: время в замере производительности 1С измеряется в секундах с дробной частью (точность — до миллисекунд и ниже, в зависимости от версии платформы). Значение «1,5» означает полторы секунды, «0,003» — три миллисекунды. Чистое время — это время выполнения самой строки или метода без учета времени вложенных вызовов.

Понимание разницы между общим и чистым временем — основа анализа производительности. Без этого легко ошибочно «обвинить» в медленной работе процедуру-контейнер, которая сама по себе почти ничего не делает, а лишь вызывает другие методы.

Как включить замер производительности в конфигураторе

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

Сам замер включается через меню «Отладка» → «Замер производительности» (или сочетание клавиш, которое зависит от версии платформы). Повторное включение того же пункта останавливает замер и открывает окно результатов. Важно: замер нужно включить до начала выполнения интересующей операции и выключить сразу после её завершения, чтобы в отчет не попал лишний код.

Порядок выполнения замера
  1. 1
    Запустите отладку в конфигураторе или подключитесь к активному сеансу
  2. 2
    Включите замер: Отладка → Замер производительности
  3. 3
    Выполните в режиме 1С:Предприятие операцию, которую нужно измерить
  4. 4
    Остановите замер тем же пунктом меню — откроется окно результатов
  5. 5
    Отсортируйте строки по колонке «Время (чистое)» для поиска узких мест

В каких единицах измеряется время в замере

Значения в колонках «Время» и «Время (чистое)» указываются в секундах. Дробная часть показывает миллисекунды и микросекунды: значение 0,250 — это четверть секунды (250 мс), значение 0,001 — одна миллисекунда. Отдельного переключателя единиц измерения в окне результатов нет — всё всегда в секундах.

Рядом с временем обычно отображается процент — доля данной строки в общем времени замера. Процент удобен для быстрой оценки: если одна строка занимает 70% времени, оптимизировать нужно в первую очередь её, а не десяток строк по 1–2%.

Чем чистое время отличается от общего

Колонка «Время» (общее) показывает полное время выполнения строки или метода, включая все вложенные вызовы: если процедура А вызывает процедуру Б, то в общее время процедуры А входит и время работы Б. Поэтому у «верхних» процедур в стеке вызовов общее время всегда большое.

Чистое время — это время, потраченное непосредственно на исполнение самой строки или тела метода, за вычетом времени всех вызванных из неё методов. Именно чистое время показывает, где реально «сгорают» секунды: в конкретном запросе, обращении к СУБД, цикле или вызове COM-объекта.

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

Общее и чистое время

Время (общее)

Включает вложенные вызовы. Подходит для оценки вклада целых процедур и веток логики, но не показывает конкретную медленную строку.

Время (чистое)

Только собственное время строки или метода без вложенных вызовов. Основной показатель для поиска узких мест и точечной оптимизации.

Как читать результаты замера на практике

Окно результатов представляет собой дерево или плоский список вызовов с колонками: имя метода, количество вызовов, время, чистое время, проценты. Начинайте анализ с сортировки по чистому времени по убыванию — верхние строки и есть кандидаты на оптимизацию.

Обращайте внимание на сочетание «количество вызовов × время». Строка с чистым временем 0,01 секунды, вызванная 10 000 раз, даст суммарный вклад в 100 секунд — это типичный признак запроса или обращения к данным внутри цикла. Одиночный вызов длительностью 0,5 секунды может оказаться менее критичным, чем тысячи мелких.

Также учитывайте, что в замер попадает и клиентская, и серверная часть кода. Вызовы сервера с клиента, обращения к СУБД и выполнение запросов отражаются в строках соответствующих методов — по чистому времени видно, где именно зависает выполнение.

Высокое чистое время у одной строкиКонкретное узкое место

Проверьте, что делает строка: запрос, обращение к СУБД, COM, файловая операция

Много вызовов с малым временемПроблема в цикле

Ищите запросы или обращения к базе внутри цикла — кандидат на вынос за пределы цикла

Большое общее время у процедуры-контейнераВремя уходит во вложенные вызовы

Раскройте дерево вызовов и смотрите чистое время вложенных методов

Типичные узкие места, которые видны по чистому времени

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

Отдельный класс проблем — неявные запросы при обращении к реквизитам объекта через точку внутри цикла. Каждое такое обращение порождает запрос к СУБД, и в замере это видно как масса строк с небольшим чистым временем, но огромным количеством вызовов. Решение — получить все данные одним запросом и работать с выборкой.

Ограничения и погрешности замера

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

Для оценки реального времени операции без искажений используйте другие подходы: программный замер через функцию ТекущаяУниверсальнаяДатаВМиллисекундах() до и после участка кода, технологический журнал с событием DBMSSQL для анализа запросов к СУБД, либо типовую обработку «Оценка производительности» из состава БСП, если она внедрена в конфигурацию.

bsl
НачалоЗамера = ТекущаяУниверсальнаяДатаВМиллисекундах();
// ... измеряемый код ...
Длительность = ТекущаяУниверсальнаяДатаВМиллисекундах() - НачалоЗамера;
Сообщить("Выполнено за " + Длительность + " мс");

Частые ошибки при анализе замера

Первая ошибка — оптимизация по общему времени вместо чистого. Разработчик видит большое значение у процедуры верхнего уровня и начинает переписывать её, хотя реальная проблема — во вложенном запросе. Вторая ошибка — игнорирование количества вызовов: оптимизируется одиночная строка на 0,3 секунды, тогда как цикл из тысяч мелких обращений дает суммарно минуты.

Третья ошибка — выводы по одному замеру. Время выполнения зависит от кэша СУБД, загрузки сервера, объема данных. Делайте несколько замеров одной и той же операции и сравнивайте картину: стабильно повторяющиеся «горячие» строки — достоверные узкие места, разовые всплески могут быть следствием внешних факторов.

Типичные ошибки
01
Сортировка по общему времени вместо чистого — оптимизируется не та процедура
02
Игнорирование количества вызовов — пропускается проблема запросов в цикле
03
Выводы по единственному замеру — случайные факторы принимаются за закономерность
04
Замер на нерепрезентативных данных — на маленькой тестовой базе узкие места не видны

Как проверить результат оптимизации

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

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

Контрольные точки

Как проверить результат

Чистое время целевых строк
Норма

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

Тревожный признак

Не изменилось или выросло — оптимизация не сработала

Результат операции
Норма

Итоговые данные совпадают с эталоном до изменений

Тревожный признак

Расхождения в данных — откатите изменения и ищите ошибку

Стабильность результата
Норма

Несколько повторных замеров показывают схожую картину

Тревожный признак

Результаты сильно скачут — влияют внешние факторы, нужны повторные измерения

Итог

Что важно запомнить

Время в замере производительности 1С измеряется в секундах с дробной частью. Чистое время — время самой строки без вложенных вызовов, и именно по нему ищут узкие места. Сортируйте по чистому времени, учитывайте количество вызовов и делайте несколько замеров для достоверных выводов.

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

В чем измеряется время в замере производительности 1С?

В секундах с дробной частью. Значение 0,015 означает 15 миллисекунд, значение 2,5 — две с половиной секунды. Отдельных миллисекундных единиц в окне результатов нет.

Почему сумма чистого времени всех строк не равна общему времени операции?

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

Можно ли сделать замер без конфигуратора?

Штатный замер производительности доступен только в конфигураторе в режиме отладки. Без него используйте программный замер через ТекущаяУниверсальнаяДатаВМиллисекундах(), технологический журнал или механизм оценки производительности БСП.

Почему время в замере больше, чем реальное время работы операции?

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

Что делать, если лидер по чистому времени — строка выполнения запроса?

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

Сколько раз нужно повторять замер для достоверного результата?

Минимум 2–3 раза в сопоставимых условиях. Если картина по «горячим» строкам стабильно повторяется, выводы можно считать достоверными. Разовые всплески времени часто связаны с кэшем СУБД или фоновой нагрузкой сервера.