Использование преобразований типов во встроенном языке

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

Приведем пример. Необходимо выполнить некоторые действия в модуле для непустых значений атрибута или переменной типа справочник. Иногда для этого используется проверка типа:

Если ПустаяСтрока(Запрос.Товар)=1 Тогда

или

Если СокрЛП(Запрос.Товар)="" Тогда

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

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

Если ПустоеЗначение (Запрос.Товар)=1 Тогда

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

Определение производительности конфигурации

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

Разумеется, идеальным способом измерения производительности является тестирование конфигурации непосредственно в процессе работы пользователей. Однако, конфигурирование (отладка) часто выполняется на тестовой информационной базе или в нерабочее время. В этом случае при выполнении замеров производительности необходимо правильно воссоздать реальные условия работы системы. В противном случае соотношения временных затрат на различные операции может абсолютно не соответствовать "боевым" условиям. Прежде всего, необходимо, чтобы информационная база располагалась на сервере локальной сети, а не на той же машине, на которой выполняется программа. Разумеется, формат хранения (DBF/CDX или SQL) тестовой базы

должен совпадать с форматом хранения "боевой" информационной базы. Желательно, чтобы по характеристикам сервер и локальная сеть были теми же, что и при работе пользователей или аналогичными. Запуск программы должен производиться не в монопольном режиме, так как монопольный режим существенно отличается по производительности от разделенного. Кроме того, при работе с базами данных в формате (DBF/CDX), следует выполнять дополнительный запуск программы с той же информационной базой с другого компьютера, так как отсутствие второго соединения позволяет системе оптимизировать доступ к данным. Наконец для более полной имитации можно рекомендовать на втором компьютере запустить длительный отчет, который будет имитировать нагрузку пользователей или обработку, выполняющую в цикле запись некоторых данных в информационную базу. При таком наборе условий производимые замеры будет приближены к реальным условиям, и позволят получить адекватную оценку соотношения длительности различных операций.

Собственно для определения узких мест с точки зрения производительности рекомендуется, прежде всего, использовать механизм "Замер производительности" (в режиме запуска "Отладчик"). Данный механизм позволяет получить соотношение временных затрат на выполнение отдельных строк алгоритма модуля.

Заметим, что основные проблемы, связанные с производительностью, возникают при многопользовательской работе с большими объемами данных. Причем основные затраты времени приходятся именно на доступ к данным информационной базы. Поэтому, очевидно, что при анализе результатов замера производительности, прежде всего, будут выделяться обращения к данным. Для того, чтобы лучше выделить эти операции можно рекомендовать отключать флажок "Для вызовов процедур и функций включать время выполнения". Это позволит получить чистое время выполнения различных методов объектов встроенного языка 1С:Предприятия. По результатам проведенного замера следует предпринимать меры к оптимизации алгоритмов. Механизм "Замер производительности" предоставляет возможность сохранения результата замера, что позволяет после внесения изменений в конфигурацию выполнить повторный замер и сравнить с предыдущим для оценки эффективности сделанных изменений.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: