Имя: Пароль:
1C
 
Ускорение загрузки клиент банка для больших файлов (в 100 раз)
0 vde69
 
29.06.11
09:19
штатная загрузка клиент банка на файле 150 000 строк работает 2 часа, чуток оптимизировал, стало 1..2 минуты

вот что меняем, в модуле обработки


Функция ПолучитьСтрокуИмпорта()
....
....
//        Буфер = СокрЛП(СтрПолучитьСтроку(Импорт_ТекстДляРазбора, Импорт_ТекущаяСтрока));
       Буфер = СокрЛП(Импорт_ТекстДляРазбора.ПолучитьСтроку(Импорт_ТекущаяСтрока));


Процедура ЗаполнитьДокументыНаИмпорт(
...
...
   //Импорт_ТекстДляРазбора = ПрочитатьФайл(ФайлЗагрузки, Кодировка);
   
   //Если Импорт_ТекстДляРазбора = Неопределено Тогда
   //    Предупреждение("Файл загрузки не содержит данных!");
   //    Возврат;
   //КонецЕсли;

   Импорт_ТекстДляРазбора = Новый ТекстовыйДокумент;
   
   Если Кодировка = "DOS" Тогда
       Кодир = КодировкаТекста.OEM;
   Иначе
       Кодир = КодировкаТекста.ANSI;
   Конецесли;
   
   Импорт_ТекстДляРазбора.Прочитать(ФайлЗагрузки, Кодир);
   
   Если Импорт_ТекстДляРазбора.КоличествоСтрок() = 0 Тогда
       Предупреждение("Файл загрузки не содержит данных!");
       Возврат;
   КонецЕсли;

   //Импорт_КоличествоСтрок = СтрЧислоСтрок(Импорт_ТекстДляРазбора);
   Импорт_КоличествоСтрок = Импорт_ТекстДляРазбора.КоличествоСтрок();




может из 1с все-же услышат нас :)
1 VladZ
 
29.06.11
09:22
Делать идеально ПО невыгодно.
2 Кирпич
 
29.06.11
09:22
Ты лучше продавай обработку тем, кто в таком нуждается. Накой тебе 1С сдался.
3 poligraf
 
29.06.11
09:23
(0) Молодец!
А что это за выписка на 150.000 строк?
Я просто по-хорошему оборотам завидую:)
4 vde69
 
29.06.11
09:23
(3) обороты за месяц
5 Necessitudo
 
29.06.11
09:31
Да ну нафиг - так можно 2 часа сидеть чай пить, а  заплатят тебе именно за два часа.
6 Холст
 
29.06.11
09:41
а в чем фишка то ? Замена СтрЧислоСтрок(Импорт_ТекстДляРазбора) на Импорт_ТекстДляРазбора.КоличествоСтрок()
и СтрПолучитьСтроку(Импорт_ТекстДляРазбора, Импорт_ТекущаяСтрока) на Импорт_ТекстДляРазбора.ПолучитьСтроку(Импорт_ТекущаяСтрока) дала прирост в 100раз ? может тогда на FSO сразу менять ?
7 vde69
 
29.06.11
09:47
(6) конечно можно :) просто запостил может кому понадобится...

а вообще там еще проще можно сделать, только 2 строчки исправить


Функция ПолучитьСтрокуИмпорта()
....
....
//        Буфер = СокрЛП(СтрПолучитьСтроку(Импорт_ТекстДляРазбора, Импорт_ТекущаяСтрока));

       Буфер = СокрЛП(Импорт_ТекстДляРазбора.ПолучитьСтроку(Импорт_ТекущаяСтрока));


Функция ПрочитатьФайл(Файл, Кодировка)
...
...
//    Возврат ПотокЧтения.ПолучитьТекст();
   Возврат ПотокЧтения.ПолучитьТекст();
8 FN
 
29.06.11
09:47
Не знаю как 8-ке, но 7.7 замена многострочной строковой переменной на объект "Текст" дает такой-же прирост скорости
9 vde69
 
29.06.11
09:48
(7) Возврат ПотокЧтения;
10 DSatan
 
30.06.11
12:04
(0) супер, спасибо, обязательно проверю, сам вчера столкнулся с этим вопросом, замерил производительность и обалдел, когда увидел что львиная доля времени уходит именно на этот оператор!
11 H A D G E H O G s
 
30.06.11
12:06
Я предлагал на партнерском, как в УФ УППрищи в доках поступления, реализации сократить паразитный трафик с 200 кбайт до 4кб.

Хренушки.
12 H A D G E H O G s
 
30.06.11
12:17
Причина в УФ:

&НаКлиенте
Процедура ОбновитьНадписиИтоговыеСуммы()
   Элементы.СуммаДокумента.Заголовок = "Всего, " + Объект.ВалютаДокумента;
   Элементы.НДСВсего.Заголовок = "НДС (" + ?(Объект.СуммаВключаетНДС, "в т.ч.", "сверху") + ")";

КонецПроцедуры

Она при каждом чихе меняет Метаданные формы и при контекстном серверном вызове на сервер тащитца вся форма для синхронизации.

WTF?

Я тупо добавил 2 реквизита в форму и переписал процедурку:

   НадписьСуммаДокумента = "Всего, " + Объект.ВалютаДокумента;
   НадписьНДСВсего = "НДС (" + ?(Объект.СуммаВключаетНДС, "в т.ч.", "сверху") + ")";
13 H A D G E H O G s
 
30.06.11
12:18
Для wifi, и ethernet конечно глупости, но вдруг GPRS!
14 DSatan
 
30.06.11
12:38
проверил.... это жесть реально раз в сто ускорение %)
15 ink1981
 
30.06.11
12:39
(0) Чтож ты наделал подлец, мыж кормились за него всю жизнь (с)
16 DSatan
 
30.06.11
13:02
точно, демпингует :))
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс