Влияние внешних обработок на производительность

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

Проблемы

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

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

Для оценки такого влияния можно воспользоваться следующей оценкой:

 

 

Средняя загрузка CPU сервера 1С, %

Время выполнения теста, секунд

Обработка, встроенная в конфигурацию

33

322

Обработка, встроенная в расширение конфигурации

46 (+39%)

406 (+26%)

Внешняя обработка

80 (+142%)

513 (+59%)

Оценка получена в результате нагрузочного теста на 100 пользователях, каждый из которых сначала однократно вызывает пустой метод модуля обработки (32000 строк), а затем последовательно вызывает пустой метод для каждой из форм обработки (120 форм с различным содержанием).

Заключение

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