Производительность 1с, обращение к реквизитам через "."

1. user1604745 24.05.23 13:49 Сейчас в теме
Добрый день, подскажите как так получается, что если мы получаем реквизиты через ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Стр_ЛистыПланируемые.Номенклатура, СтруктураРеквизитов); процентное соотношение одного вызова больше чем процентное соотношение когда мы получаем реквизиты через точку, 003.41% против 001,61%
Но если обратить внимание на общее время после прохождения всего цикла (порядка 100 итерация), то видим обратную картину.
Разве не должно получаться так что если время одного вызова больше то и суммарно оно должно быть больше?
С чем связано такое поведение системы?

Заранее благодарен.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 76 24.05.23 14:12 Сейчас в теме
(1)связано с кэшированием данных
3. user1604745 24.05.23 14:28 Сейчас в теме
(2) Не совсем понятно, что вы имеете ввиду, могли бы дать более развернутый ответ? Или Вы имеете ввиду что через ОбщегоНазначения.ЗначенияРеквизитовОбъекта происходит кешеривание, а при получении через "." нет?

Если я делаю один вызов через точку то он получается производительнее чем получить один вызов через ОбщегоНазначения.ЗначенияРеквизитовОбъекта?

А если данных вызовов например 100 то уже все наоборот?
4. Sashares 35 24.05.23 14:34 Сейчас в теме
(3)Может у вас есть в справочнике "тяжелые" элементы, получение которых через точку выполняется долго.
А тот один, который вы проверяли в замере - "легкий".

Тяжелые - в смысле много данных в табличных частях и вот это вот все.
5. nomad_irk 76 24.05.23 15:26 Сейчас в теме
(3)При использовании ОбщегоНазначения.ЗначенияРеквизитовОбъекта() происходит чтение только указанных значений с помощью запроса.
При обращении к данным через "." происходит чтение "всего" элемента, т.е. всех его реквизитов/ТЧ

Один вызов через "." может быть производительнее, т.к. нужные данные хранятся в кэше, когда происходит множественный вызов, то ОбщегоНазначения.ЗначенияРеквизитовОбъекта() выигрывает за счет "стабильности" времени на чтение нужных данных, а вот чтение через "." - сильно зависит от "наполненности" читаемых элементов.
6. starik-2005 3057 24.05.23 21:04 Сейчас в теме
Общего назначения собирает из реквизитов запрос и выполняет его. У вас там еще и в запросе через точку к табличной части, походу. Ну и вычитывает скуль или даже файловая база всю таблицу в память первый раз. Точнее две таблицы - справочник и табличную часть, ну или что вы там через точку написали.

А с точкой, то при обращении к ссылке весь объект вычитывается со всеми табличными частями. Но он уже вычитан предыдущим обращением через запрос в обзего назначения, что делает вычитку чуто более быстрой. Уберите общего назначения и должно увеличиться время второго обращения.

Помоему, так...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот