Когда контекстный вызов быстрее неконтекстного?*

22.03.16

Разработка - Механизмы платформы 1С

Во всех рекомендациях учат, что выполнение без контекста лучше, чем с контекстом. Однако есть несколько случаев, когда это не так.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
БольшойТабличныйДокумент.epf
.epf 7,91Kb
6
6 Скачать (1 SM) Купить за 1 850 руб.

Когда нам нужно обновить какой-нибудь реквизит, например, цену при выборе номенклатуры, тут, конечно, нужно использовать неконтекстный вызов. В этом случае передача данных с клиента на сервер будет намного меньше, затраты на сериализацию и десериализацию будут минимальны.

Однако все меняется, когда нам нужно передать с сервера большое количество данных, причем "нужные данные" составляют бОльшую часть контекста, например, это отчет из большого количества строк.

В этом случае создатели платформы сделали оптимизацию - результирующий табличный документ хранится во временном хранилище на сервере, а на клиент передается только видимая часть. При пролистывании - на сервер передается запрос следующей части и с сервера возвращается только она.

А вот если сделать вызов без контекста, то на клиент нужно передать весь документ, что влечет намного (в зависимости от объема табличного документа замедление может быть в десятки и даже сотни раз) большие одномоментные затраты времени. Естественно, никого обмануть не получится, и, например, при печати или поиске документ так или иначе будет получен на клиенте. Но субъективно "торможение" будет сильно меньше, так как разница в получении всего документа и только отображаемой части будет размазана во времени.

Во вложении небольшая демонстрация этого эффекта. Для большей наглядности в показателях производительности лучше включить объем отправленных и принятых данных. Настройка по клику на "мониторы" на панели показателей производительности.

Сама обработка:


* А вообще оптимизация клиент-серверного взаимодействия в управляемых формах - вещь зачастую нетривиальная, и в случае неудовлетворительной производительности требует экспериментов в конкретных случаях, вплоть до разбивки формы на несколько со связью через команды панели навигации, как раз для уменьшения контекста.

Управляемые формы клиент-серверное взаимодействие производительность оптимизация

См. также

Механизмы платформы 1С Программист Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.27 появилась возможность использовать WebSocket-клиент. Давайте посмотрим, как это все устроено и чем оно нам полезно.

14.01.2025    3722    dsdred    38    

79

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Эта небольшая статья - некоторого рода шпаргалка по файловым потокам: как и зачем с ними работать, какие преимущества это дает.

23.06.2024    9411    bayselonarrend    20    

158

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    6875    dsdred    18    

80

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Все мы используем массивы в своем коде. Это один из первых объектов, который дают ученикам при прохождении обучения программированию. Но умеем ли мы ими пользоваться? В этой статье я хочу показать все методы массива, а также некоторые фишки в работе с массивами.

24.01.2024    21722    YA_418728146    26    

73

Механизмы платформы 1С Программист Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    24965    SeiOkami    48    

136
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. aspirator23 340 26.03.16 15:47 Сейчас в теме
Яши нет с его знаменитой фразой
2. Fragster 1152 28.03.16 16:04 Сейчас в теме
3. aspirator23 340 29.03.16 09:31 Сейчас в теме
(2) Я тебя уважаю за многопоточное тестирование. Яша придет - он скажет :)
4. stroyteam1c 26.09.16 14:41 Сейчас в теме
А можете поподробнее расписать что имелось ввиду под
вплоть до разбивки формы на несколько со связью через команды панели навигации, как раз для уменьшения контекста.
?
Может на каком-то простом примере.
5. stroyteam1c 26.09.16 15:02 Сейчас в теме
Оставьте свое сообщение