Программные перечисления, ч.2: приемы кэширования при разработке
Все знают, что такое кэш, и зачем он нужен. Но в 1С разработчик обычно использует кэширование только на уровне конфигурации, а в какой-нибудь обработке скорее ломает голову над запросом — как получить все данные за один заход… Хочется рассказать о том, как можно добиться хороших результатов с стратегией «разделяй и властвуй».
- Описание
- Подробнее
Описание
В своей первой статье Использование программных перечислений, ч.1: строковые константы я рассказал о способе, который избавит от неприятностей, связанных с сравнением в коде на строку. Здесь на базе этого-же приема рассмотрена задача по оптимизации загрузки данных из внешнего источника. Расскажу о случае, который неоднократно наблюдал в разных его ипостасях. Стоит задача по загрузке данных в БД из внешнего файла, заказчик предоставил пару примеров, программист успешно все реализовал\протестил, сдал работу.. И тут через месяц заказчик грузит файл раз эдак в 50 превышающий пример.. Все не просто тупит, а зависает на ~2 часа. Заказчик недоволен. После работ по оптимизации время загрузки снизилось с 2 часов до 30 минут (из которых только 5 это синхронизация, а все остальное — запись данных в базу).. В чем же была ошибка? При синхронизации данных не использовалось кэширование, и поиск ссылок по одним и тем же ключевым полям выполнялся многократно. После того как был добавлен кэш все залетало.
Началась оптимизация с того, что я добавил глобальную переменную типа "Структура", которая и выполняет роль кэша:
Перем мСтруктураКэшДанных;
//...
Процедура ЗагрузитьДанные(ТаблицаДанныеФайла)
//...
КонецПроцедуры
//...
мСтруктураКэшДанных = Новый Структура;Расскажу далее о нескольких универсальных методах, которые полезно применять в подобных случаях.

