Выгрузка большого текстовика (10 Мб) - чем? Всем доброго времени! Столкнулся с проблемкой. Регламентное задание выгружает файл обмена. Файл текстовый, 44 тысячи строк, 10 Мб. Всё это занимает по времени полтора часа. Задание делает запрос, затем обходит его и запихивает всё в текстовую строку, затем сохраняет текст через объект ЗаписьТекста. 99% времени уходит именно на обход выборки запроса. Можно ли как-то ускорить формирование файла? Если просто сформировать тот же самый отчёт в интерактивном режиме (есть отчётик на СКД) и сохранить как XLS, укладываюсь в 5 минут. Но СКД не сохраняет в текст. |
В результате экспериментов выяснилась удивительная вещь Вот такой код отрабатывает полтора часа [quote]стр = ""; Пока Выборка1.Следующий() Цикл стр = стр + "|" + СокрЛП(Выборка1.Код) + "|" + СокрЛП(Выборка1.НаименованиеПолное) + "|" + СокрЛП(Выборка1.ИНН) + "|" + СокрЛП(Выборка1.ФактическийАдрес) + Символы.ПС; Выборка2 = Выборка1.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Выборка2.Следующий() Цикл стр = стр + + "|" + СокрЛП(Выборка2.НомерДокумента) + "|" + СокрЛП(Выборка2.ДатаДокумента) + "|" + СокрЛП(Выборка2.Комментарий) + Символы.ПС; КонецЦикла; КонецЦикла;[/quote] |
а вот такой код отрабатывает 2 минуты [quote]ТекстовыйФайлЗапись = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.UTF8); Пока Выборка1.Следующий() Цикл стр = СокрЛП(Выборка1.Код) + "|" + СокрЛП(Выборка1.НаименованиеПолное) + "|" + СокрЛП(Выборка1.ИНН) + "|" + СокрЛП(Выборка1.ФактическийАдрес); ТекстовыйФайлЗапись.ЗаписатьСтроку(стр); Выборка2 = Выборка1.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Выборка2.Следующий() Цикл стр = СокрЛП(Выборка2.НомерДокумента) + "|" + СокрЛП(Выборка2.ДатаДокумента) + "|" + СокрЛП(Выборка2.Комментарий); ТекстовыйФайлЗапись.ЗаписатьСтроку(стр); КонецЦикла; КонецЦикла; ТекстовыйФайлЗапись.Закрыть();[/quote] |
то есть, огромная потеря времени идёт при аккумулировании этой многострочной строки длиной 10 Мб. Если не накапливать её, а сразу скидывать построчно в файл, всё летает просто. |
Я бы сказал, что это логично... На самом деле файл будет записываться несколько дольше этих 2-х минут, но это уже будет головная боль не 1с, а операционной системы. |
4-bma1 > сейчас всё задание отрабатывает за 52 секунды (ещё чуть-чуть подпилил) |
Тема - БоБо (боян бородатый), диагноз автора - гуглобан: [url]https://www.forum.mista.ru/topic.php?id=283358[/url] |
(6) эмммм ты действительно полагаешь, что несложно раскопать ветку 11-летней давности среди мистовских завалов дерьма? Ветку, в которой всего три авторских сообщения, и ни одного коммента других участников, и судя по всему, она никем не замеченная молниеносно свалилась с первой страницы за 5 минут своей короткой жизни. |
Я вообще не понял зачем при записи в текстовый файл самому добавлять перевод строки. Сформировал строку - пиши, формируй следующую. А для записи и чтения много лет пользуюсь FSO. Семерочный "text" FSO уделывает в разы, с 8-ым не сравнивал, просто потому что привык к FSO |
Текущее время: 16:49. Часовой пояс GMT +3. |