Пишу интеграционный модуль в виде внешней обработки. Столкнулся с тем, что при увеличении объёма данных сильно падает производительность. Сделал замер производительности и по нему получилось, что больше всего времени занимают процедуры и функции с использованием СтрЗаменить. Как можно ускорить замену символов в строках? Регулярные выражения не предлагать, производительность только падает.
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(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 - уже будет результат получен из соответствия, и преобразования не будет.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот