Имя: Пароль:
1C
1С v8
Строковые операции и время выполнения
,
0 ДенисЧ
 
02.04.14
09:15
Есть некая процедурка, которая в цикле выполняет команду
НоваяСтрока = НоваяСтрока + КакойТоТекст + Символ.ВК;
Такая строчка выполняется много раз. В замере вижу, что на эту строку уходит почти половина времени всей работы.
Чем такую операцию можно заменить для скорости?
1 shuhard
 
02.04.14
09:17
(0) только выходом за пределы 1С
2 ДенисЧ
 
02.04.14
09:19
(1) Мда...
3 ДенисЧ
 
02.04.14
09:20
А ВК какую нибудь? :-)
4 Chai Nic
 
02.04.14
09:20
Писать сразу в файл объектом ЗаписьТекста?
5 ДенисЧ
 
02.04.14
09:22
(4) Мне не нужен файл, мне нужна строка в памяти :-)
6 Ненавижу 1С
 
гуру
02.04.14
09:23
а если добавлять в текстовый документ, а потом сделать ПолучитьТекст()?
7 Chai Nic
 
02.04.14
09:23
(5) А "строку из строк" заменить коллекцией - никак?
8 ДенисЧ
 
02.04.14
09:25
(6) не думаю, что быстрее будет, но попробую
(7) А мне нужна строка, а не коллекция... ADODB, знаете ли, не очень коллекцию в качестве строки запроса любит...
9 Chai Nic
 
02.04.14
09:34
(8) Проверил - реально быстрее получается в варианте (6)
10 Chai Nic
 
02.04.14
09:35
+(9) Причем ускорение реально на порядок
11 ДенисЧ
 
02.04.14
09:36
(9) Сейчас попробую...
12 Ненавижу 1С
 
гуру
02.04.14
10:03
(11) если все ок, то с тебя 300 рублей на телефон, только все по чеснаку ))
13 ДенисЧ
 
02.04.14
10:19
(12) номер давай, в обед кину...
14 Ненавижу 1С
 
гуру
02.04.14
10:23
13) у тебя в личке не валидный почтовый адрес
15 ДенисЧ
 
02.04.14
10:28
(14) я в курсе, циферку выкинь оттуда
16 Asmody
 
02.04.14
10:28
(0) большая строка? чудес не бывает — она же каждый раз создается в памяти заново
17 ДенисЧ
 
02.04.14
10:30
(16) Я в курсе, поэтому спрашивал не "почему", а "чем заменить"
18 Ненавижу 1С
 
гуру
02.04.14
10:39
(15) ушло
19 Serginio1
 
02.04.14
11:17
20 Ненавижу 1С
 
гуру
02.04.14
13:39
(0) большое тебе спасибо!
21 Serginio1
 
04.04.14
17:36
19+ http://speshuric.livejournal.com/163665.html
1. Конкатенация - 24 секунды
2. Текстовый документ 1,5 секунды
3. ЗаписьXML - около 0,4 секунды