Второй способ ускорить процесс обработки данных - это использование транзакций. пример использования выглядит очень просто:
В настольной книге эксперта 1С рекомендуют использовать размер транзакции равный 100, но на практике можно поэкспериментировать, возможно оптимальный результат будет с другим размеро транзакции.
Для предоставленного примера есть следующие замеры:
- без транзакций - 150 сек.;
- длина транзакции 100 элементов - 117 сек.;
- длина транзакции 1000 элементов - 122 сек.
По сравнению с многопоточностью у данного решения есть одно достоинство - этот способ ускорения можно использовать и во внешних обработках, не изменяя основную конфигурацию.
Процедура ДобавитьЭлементыСправочника(РазмерТранзакции)Экспорт
КоличествоЭлементов = 80000;
ДлинаТранзакции = 1;
НачатьТранзакцию();
Для индекс = 1 По КоличествоЭлементов Цикл
ИмяЭлемента = "Элемент номер " + Строка(индекс+1);
ОбъектСправочник = Справочники
.ТестированиеЗагрузкиДанных.СоздатьЭлемент();
ОбъектСправочник.Наименование = ИмяЭлемента;
ОбъектСправочник.Записать();
Если ДлинаТранзакции = РазмерТранзакции Тогда
ЗафиксироватьТранзакцию();
ДлинаТранзакции = 0;
НачатьТранзакцию();
КонецЕсли;
ДлинаТранзакции = ДлинаТранзакции + 1;
индекс = индекс + 1;
КонецЦикла;
Если ТранзакцияАктивна() Тогда
ЗафиксироватьТранзакцию();
КонецЕсли;
КонецПроцедуры
Для предоставленного примера есть следующие замеры:
- без транзакций - 150 сек.;
- длина транзакции 100 элементов - 117 сек.;
- длина транзакции 1000 элементов - 122 сек.
По сравнению с многопоточностью у данного решения есть одно достоинство - этот способ ускорения можно использовать и во внешних обработках, не изменяя основную конфигурацию.
Комментариев нет:
Отправить комментарий