Пишу интеграционный модуль в виде внешней обработки. Столкнулся с тем, что при увеличении объёма данных сильно падает производительность. Сделал замер производительности и по нему получилось, что больше всего времени занимают процедуры и функции с использованием СтрЗаменить. Как можно ускорить замену символов в строках? Регулярные выражения не предлагать, производительность только падает.
По теме из базы знаний
- Ускоряем списание партий УПП 1.2 / 1.3 / УТ 10.3
- Ускоряем формирование отчета "Книга покупок"
- 1С:Розница и алкоголь: ускоряем РМК при переходе к оплате
- Ускоряем медленный/долгий и тормозной стандартный поиск по динамическому списку, настраиваем его под себя
- Умная маршрутизация: о сложностях интеграции с 1С (часть 2)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Как вариант, можно попробовать использовать текстовый документ.
То есть создать текстовый документ, разделить исходные данные на строки, например, по точке или переносу строки.
И записать в текстовый документ.
Обрабатывать построчно текстовый документ.
Потом собрать полный текст через ПолучитьТекст().
Смысл - уменьшить размер обрабатываемых строк,
т.к. для больших строк любые действия с ними выполняются значительно дольше.
Еще вариант - если замена символов 1 на 1, то использовать СтрРазделить() и СтрСоединить().
То есть создать текстовый документ, разделить исходные данные на строки, например, по точке или переносу строки.
И записать в текстовый документ.
Обрабатывать построчно текстовый документ.
Потом собрать полный текст через ПолучитьТекст().
Смысл - уменьшить размер обрабатываемых строк,
т.к. для больших строк любые действия с ними выполняются значительно дольше.
Еще вариант - если замена символов 1 на 1, то использовать СтрРазделить() и СтрСоединить().
(3) вот цена некоего универсального алгоритма
я бы проанализировал использование, число повторных вызовов и попробовал таки отказаться, раз сильно тормозить начинает
схему отказа разные есть, от тупого клонирования кода с различиями до кеширования, как в (4) советуют или введения справочника\регистра соответствия
я бы проанализировал использование, число повторных вызовов и попробовал таки отказаться, раз сильно тормозить начинает
схему отказа разные есть, от тупого клонирования кода с различиями до кеширования, как в (4) советуют или введения справочника\регистра соответствия
(8)если у вас много данных, которые надо обрабатывать, то возможно, можно закешировать входящие данные и результат их обработки.
То есть если во входящих данных А1, А2, Б1, Б2, А1, А2 - и они каким-то образом преобразуются, то если результат преобразования всегда одинаковый, то можно закешировать результат - создать соответствие, где ключ - входящие данные, значение - результат преобразования.
И перед преобразование проверять - если в соответствии есть уже результат, то никакое преобразование делать уже не требуется, берите из соответствия результат, а если результата нет, то преобразовывать и добавлять в соответствие.
Получится, что для входящих данных А1, А2, Б1, Б2 - будет выполнено преобразование как должно и добавлено в соответствие, а для следующих А1, А2 - уже будет результат получен из соответствия, и преобразования не будет.
То есть если во входящих данных А1, А2, Б1, Б2, А1, А2 - и они каким-то образом преобразуются, то если результат преобразования всегда одинаковый, то можно закешировать результат - создать соответствие, где ключ - входящие данные, значение - результат преобразования.
И перед преобразование проверять - если в соответствии есть уже результат, то никакое преобразование делать уже не требуется, берите из соответствия результат, а если результата нет, то преобразовывать и добавлять в соответствие.
Получится, что для входящих данных А1, А2, Б1, Б2 - будет выполнено преобразование как должно и добавлено в соответствие, а для следующих А1, А2 - уже будет результат получен из соответствия, и преобразования не будет.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот