Имя: Пароль:
1C
 
УФ - почему такая разница во времени исполнения одинакового кода?
0 RomaH
 
naïve
13.02.15
09:06
http://www.dropmocks.com/mIHNvM

первые две строки - добавляю поле формы в группу

последняя строка - в ту же группу добавляю поле формы

0,9 сек и 0,1 сек - почему такая разница?

и почему так много времени уходит на код типа:
ГруппаПоказателя = Элементы["_Группа" + ИмяЭлемента];
1 r2d24
 
13.02.15
09:25
У тебя все три реквизита разные, возможно в типе реквизита разница. А если бы были строки одинаковые, я бы подумал, что КЭШ способствует.
2 RomaH
 
naïve
13.02.15
09:32
похоже что кэш
при добалении элемента кэш "Элементы" сбрасывается
перед первыми двумя строками есть добавление элементов

а для последней строки - похоже где-то идет чтение "Элементы[имяЭлемента]"

тогда встает вопрос - а как добавить элементы без цикла
т.е. без сброса кэш?
3 DrZombi
 
гуру
13.02.15
09:33
Покажи Код
4 DrZombi
 
гуру
13.02.15
09:33
И причем тут КЭШ?
5 hhhh
 
13.02.15
09:39
(2) ну там количество повторов 97, а для второго кода 96. Смоделируй нам ситуацию, чтобы одинаково было 97. Или 96. Тогда мы сравним.
6 НЕА123
 
13.02.15
09:39
Тип("полеФормы")
7 RomaH
 
naïve
13.02.15
09:50
ГруппаФормы = Элементы[ИмяЭлемента]; //долго
Элементы.Добавить(); //быстро
Элементы.Добавить(); //долго
ГруппаФормы = Элементы[ИмяЭлемента]; //долго
Элементы.Добавить(); //быстро
8 RomaH
 
naïve
13.02.15
09:50
ГруппаФормы = Элементы[ИмяЭлемента]; //долго

Элементы.Добавить(); //быстро

Элементы.Добавить(); //долго

ГруппаФормы = Элементы[ИмяЭлемента]; //долго

ГруппаФормы = Элементы[ИмяЭлемента1]; //быстро

Элементы.Добавить(); //быстро
9 DrZombi
 
гуру
13.02.15
09:56
(8) Выложи обработку, коль так трудно показать полный текст твоего коду. :)
10 hhhh
 
13.02.15
09:57
(8) а выяснили почему там 97 и 96? Разные цифры. В этом же суть.
11 RomaH
 
naïve
13.02.15
10:16
(10) ага, один лишний вызов съедает 0,7 скунды - а все остальные 96 так же за 0,1 проходят?

щас попробую обработкой воссоздать
12 RomaH
 
naïve
13.02.15
11:15
&НаСервере
Процедура СоздатьЭлементыФормы()
    
    МассивРеквизитов = Новый Массив;
    
    Для Ш = 1 По 100 Цикл
        
        РеквизитЗначения = Новый РеквизитФормы("_Реквизит_" + Ш,Новый ОписаниеТипов("Строка"),,,Истина);

        МассивРеквизитов.Добавить(РеквизитЗначения);
        
    КонецЦикла;
    
    ИзменитьРеквизиты(МассивРеквизитов);
    
    Для Ш = 0 По 24 Цикл  //Циклами по 4 элемента будем добавлять
        
        ГруппаПоказателя1 = Элементы.Добавить("_Группа" + Ш,Тип("ГруппаФормы"));
        
        ГруппаПоказателя1.Вид = ВидГруппыФормы.ОбычнаяГруппа;
        ГруппаПоказателя1.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
        ГруппаПоказателя1.ОтображатьЗаголовок = Ложь;
        ГруппаПоказателя1.Отображение = ОтображениеОбычнойГруппы.Нет;
        
        ГруппаПоказателя = Элементы["_Группа" + Ш];
        
        Элемент = Элементы.Добавить("_Код" + ((Ш*4)+1),Тип("ПолеФормы"),ГруппаПоказателя);
        Элемент.Вид = ВидПоляФормы.ПолеВвода;//0,001 сек
        Элемент.ПутьКДанным = "_Реквизит_" + ((Ш*4)+1);
        
        Элемент = Элементы.Добавить("_Код" + ((Ш*4)+2),Тип("ПолеФормы"),ГруппаПоказателя);
        Элемент.Вид = ВидПоляФормы.ПолеВвода;//0,006 сек
        Элемент.ПутьКДанным = "_Реквизит_" + ((Ш*4)+2);
        
        ГруппаПоказателя = Элементы["_Группа" + Ш];
        
        Элемент = Элементы.Добавить("_Код" + ((Ш*4)+3),Тип("ПолеФормы"),ГруппаПоказателя);
        Элемент.Вид = ВидПоляФормы.ПолеВвода;//0,001 сек
        Элемент.ПутьКДанным = "_Реквизит_" + ((Ш*4)+3);
        
        Элемент = Элементы.Добавить("_Код" + ((Ш*4)+4),Тип("ПолеФормы"),ГруппаПоказателя);
        Элемент.Вид = ВидПоляФормы.ПолеВвода;//0,006 сек
        Элемент.ПутьКДанным = "_Реквизит_" + ((Ш*4)+4);
        
    КонецЦикла
    
КонецПроцедуры
13 RomaH
 
naïve
13.02.15
11:21
если убрать вот этот код:
ГруппаПоказателя = Элементы["_Группа" + Ш];

то все Элементы.Добавить("_Код" + ((Ш*4)+ занимаю 0,006 сек

на тестовой обработке все быстро
а вот на "рабочем" документе 0,006 превращается в 0,8 сек

и таких вызовов несколько
14 RomaH
 
naïve
13.02.15
11:38
вопрос ка добится того, что бы все элементы создавались за 0,0004 сек . а не за 0,0024
15 DrZombi
 
гуру
13.02.15
11:59
(14) Откажись от 98 или около (не суть) Элементов :)
16 DrZombi
 
гуру
13.02.15
11:59
+(15) Зачем там столько элементов?
17 RomaH
 
naïve
13.02.15
12:42
(16) что-то вроде анкетирования
состав формы зависит от анкеты и типа вопросов
18 DrZombi
 
гуру
13.02.15
13:21
(17) И почему просто не использовать Таблицу?
19 RomaH
 
naïve
13.02.15
13:23
(18) что есть "Таблица"?
20 RomaH
 
naïve
13.02.15
13:25
(18) потому-что, вопрос - как быстро создавать элементы
а не как сделать