Производительность 1с, обращение к реквизитам через "."
Добрый день, подскажите как так получается, что если мы получаем реквизиты через ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Стр_ЛистыПланируемые.Номенклатура, СтруктураРеквизитов); процентное соотношение одного вызова больше чем процентное соотношение когда мы получаем реквизиты через точку, 003.41% против 001,61%
Но если обратить внимание на общее время после прохождения всего цикла (порядка 100 итерация), то видим обратную картину.
Разве не должно получаться так что если время одного вызова больше то и суммарно оно должно быть больше?
С чем связано такое поведение системы?
Заранее благодарен.
Но если обратить внимание на общее время после прохождения всего цикла (порядка 100 итерация), то видим обратную картину.
Разве не должно получаться так что если время одного вызова больше то и суммарно оно должно быть больше?
С чем связано такое поведение системы?
Заранее благодарен.
По теме из базы знаний
- Составные типы — бесплатный сыр мышеловки производительности
- 3000 пользователей на трехъядерном Athlon – сверхтонкий веб-клиент для 1С
- Корпоративный мозг на 1С и Python
- Самые распространенные заблуждения об индексах в мире 1С
- Workaround me в 1С/MS SQL и не только, системный подход к созданию костылей
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) Не совсем понятно, что вы имеете ввиду, могли бы дать более развернутый ответ? Или Вы имеете ввиду что через ОбщегоНазначения.ЗначенияРеквизитовОбъекта происходит кешеривание, а при получении через "." нет?
Если я делаю один вызов через точку то он получается производительнее чем получить один вызов через ОбщегоНазначения.ЗначенияРеквизитовОбъекта?
А если данных вызовов например 100 то уже все наоборот?
Если я делаю один вызов через точку то он получается производительнее чем получить один вызов через ОбщегоНазначения.ЗначенияРеквизитовОбъекта?
А если данных вызовов например 100 то уже все наоборот?
(3)При использовании ОбщегоНазначения.ЗначенияРеквизитовОбъекта() происходит чтение только указанных значений с помощью запроса.
При обращении к данным через "." происходит чтение "всего" элемента, т.е. всех его реквизитов/ТЧ
Один вызов через "." может быть производительнее, т.к. нужные данные хранятся в кэше, когда происходит множественный вызов, то ОбщегоНазначения.ЗначенияРеквизитовОбъекта() выигрывает за счет "стабильности" времени на чтение нужных данных, а вот чтение через "." - сильно зависит от "наполненности" читаемых элементов.
При обращении к данным через "." происходит чтение "всего" элемента, т.е. всех его реквизитов/ТЧ
Один вызов через "." может быть производительнее, т.к. нужные данные хранятся в кэше, когда происходит множественный вызов, то ОбщегоНазначения.ЗначенияРеквизитовОбъекта() выигрывает за счет "стабильности" времени на чтение нужных данных, а вот чтение через "." - сильно зависит от "наполненности" читаемых элементов.
Общего назначения собирает из реквизитов запрос и выполняет его. У вас там еще и в запросе через точку к табличной части, походу. Ну и вычитывает скуль или даже файловая база всю таблицу в память первый раз. Точнее две таблицы - справочник и табличную часть, ну или что вы там через точку написали.
А с точкой, то при обращении к ссылке весь объект вычитывается со всеми табличными частями. Но он уже вычитан предыдущим обращением через запрос в обзего назначения, что делает вычитку чуто более быстрой. Уберите общего назначения и должно увеличиться время второго обращения.
Помоему, так...
А с точкой, то при обращении к ссылке весь объект вычитывается со всеми табличными частями. Но он уже вычитан предыдущим обращением через запрос в обзего назначения, что делает вычитку чуто более быстрой. Уберите общего назначения и должно увеличиться время второго обращения.
Помоему, так...
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот