Имя: Пароль:
1C
1С v8
Что быстрее преобразует в строку
,
0 Shrek_yar
 
09.06.16
00:47
Строка(ТутСсылка) или "" + ТутСсылка

Пример
а = "" + ДокументСсылка;
или
а = Строка(ДокументСсылка);
1 Shrek_yar
 
09.06.16
00:47
да, замеры делал, интересует мнение других)
2 Serg_1960
 
09.06.16
00:52
а = ДокументСсылка.Представление :)
3 Shrek_yar
 
09.06.16
01:00
(2) если нет представления у справочника
4 Torquader
 
09.06.16
01:03
Оператор преобразования будет быстрее, так как в нём не вызывается операция добавления.
Что касается вызова "Представление", то это вызов заранее сформированной строки, которая для некоторых объектов будет получена при преобразовании в строку.
5 Serg_1960
 
09.06.16
01:17
(3) У тебя был пример про ДокументСсылка :) А для документа, одновременно со ссылкой, передаётся номер, дата и представление - они всегда доступны без вычисления, преобразования и обращения к базе.
6 Shrek_yar
 
09.06.16
01:29
(5) ссылочный тип в общем) не обязательно докумег, так же и справочник.
Странно, но замеры в цикле показывают почти оодинаков, на 1000 повторений
7 Shrek_yar
 
09.06.16
01:31

&НаСервере
Процедура ВыполнитьСпособ2(МойПример)
    
    СтрокаПример= "СтрокаПример";
    
    Если Найти(СтрокаПример,МойПример.Реквизит) > 0 Тогда
        ххх = 1;
    КонецЕсли;
    
КонецПроцедуры

&НаКлиенте
Функция тест2()
    
    ВремяНачала = ТекущаяДата();  
    
    Для сч = 1 По 10000 Цикл
        
        ВыполнитьСпособ2(МойПример);
        
    КонецЦикла;
    
    Длительность = ТекущаяДата()-ВремяНачала;
    Сообщить ("Длительность ВыполнитьСпособ2: " + Длительность + " сек.");
КонецФункции


так дольше,чем а = "" + ДокументСсылка; в условие
8 Torquader
 
09.06.16
01:35
Что делает код в (7) ?
9 Torquader
 
09.06.16
01:36
Во-первых, хождение с клиента на сервер и обратно 10000 раз - это, видимо, чтобы посмотреть, а что будет в счётчиках производительности ?
10 Torquader
 
09.06.16
01:37
Не всё!
Я пошёл спать - так хорошо всё начиналось - и такой код.
11 Shrek_yar
 
09.06.16
01:47
(8).код отрабатывает 1 раз, а цикл тут для наглядности.
(9) что в коде не то, это пример, главное преобразование
12 Shrek_yar
 
09.06.16
01:50
В счетчике в строку быстрее на 50% , но если все засунуть в цикл то почему то одинаково.
13 Zamestas
 
09.06.16
01:59
(0) Для чего это нужно?
14 Serg_1960
 
09.06.16
10:38
(7) Промер некорректный.

(12) Наверное, мне нужно напомнить про кэш :)

Про то, что первое обращении к "МойПример.Реквизит" порождает обращение к базе и кэширование полученного объекта, а повторные обращения в цикле -  читают кэшированные данные.
15 Fragster
 
гуру
09.06.16
10:44
(0) Если волнует вопрос производительности, то значит операция выполняется много-много раз. значит, ссылок реально много. Значит можно взять запрос (а еще лучше тот, в котором получаются эти ссылки) и запихать в него все эти ссылки и получить представление (Выбрать спрНоменклатура.Представление Из Справочник.Номенклатура как спрНоменклатура Где Ссылка в (&МассивСсылок)) для них один раз, а дальше уже обходить результат без обращения к БД.
16 Dmitrii
 
гуру
09.06.16
10:53
(11) >> что в коде не то
он - хавно.

>> главное преобразование

Нет. В твоем коде 10000 раз выполнение перемещается с клиента на сервер и обратно. По сравнению с этим время на само преобразование несопоставимо мало.

А вообще правильный ответ в (15).
17 Fragster
 
гуру
09.06.16
10:54
(14) возьми профайлер и убедись, что запрос к базе все равно будет -0 на номер версии.
18 EugeniaK
 
09.06.16
11:00
(0) Абсолютно пофиг. Считай, что одинаково.
19 Serg_1960
 
09.06.16
11:13
(17) Молодец, возьми с полки пирожок :) Я в курсе про проверку актуальности. Как мне кажется, мой ответ не претендовал на полное описание работы платформы с данными и с кэшом.