05.03.2009, 09:04 | #1 |
Участник
|
Создание большого числа заказов на продажу. Падение скорости загрузки.
Доброго всем дня, уважаемые знатоки, вопрос следущий. Имеется текстовый файл с операциями из другой системы (не Ax), разделитель ";" читаем его используя класс ASCIio, тянем контейнерами построчно.
Данные каждой строки проверяются на правильность. Если проверка пройдена, создатся заказ (если в строке указан новый номер документа) и строка по проверенной строке-контейнеру. Затем в контейнер тянется следующая строчка. Процесс отражается в прогресс баре. Выгладит код по созданию примерно так: X++: //Создание Заказов на продажу static void SalesOrderCreation(Args _args) { SalesTable salesTable; NumberSeq NumberSeq; SalesLine salesLine; InventDim IDim; ; ttsbegin; NumberSeq = NumberSeq::newGetNumFromCode(SalesParameters::numRefSalesId).numberSequence); salesTable.SalesId = NumberSeq.num(); salesTable.initValue(); salesTable.CustAccount = "некий клиент"; salesTable.initFromCustTable(); salesTable.InventLocationId = "некий склад"; salesTable.insert(); //..............строки salesLine.clear(); salesLine.SalesId = salesTable.SalesId; salesLine.ItemId = "некая номенклатура"; IDim.InventColorId ="ххх"; //Измерения IDim.InventLocationId = "ууу"; IDim = InventDim::findOrCreate(IDim); .............................. // Ещё всякое заполнение полей salesLine.InventDimId = IDim.inventDimId; salesLine.createLine(true, true, true, true, false, false, true, false, salesLine.InventTransId); ttscommit; } Проблема же заключается в: В самом начале затяжки файла (120000 операций) процесс идет очень резво - примерно по 300 записей за такт и оставшееся время оценивается 7 минут (по данным прогресс бара). С течением времени первый из показателей плавно снижается, соответственно оцениваемое время растет. На рубеже в 20000 записей данные выглядят так - операций за обновление прогресс бара ориентировочно = 50, а время до завершения = 22 минуты. Становится ясно, что до конца загрузки система не дотянет. От этого становится неимоверно грустно. Как добиться того, что бы показатели скорости обработки не падали? В каком направлении копать? Возможно нужно очищать память или ещё что-нибудь? Подскажите, не оставте без внимания. Заранее благодарен. |
|
Теги |
asciio, createline, заказ, затяжка, скорость |
|
|