Временное хранилище на сервере и безконтекстные серверные вызовы. Вопрос. #643127


#0 by trancer
Всем привет. Есть УФ. При создании её на сервере создаю ТЗ (100000 строк), кладу во временное хранилище (на сервере). Потом с клиента делаю безконтекстный вызов, достаю ТЗ из ВХ, меняю, кладу ТЗ обратно в ВХ. Замер производительности показывает то, чего я не понимаю. Почему на вызов он (замер) отнёс всё время? Почему на ПолучитьИзВременногоХранилища и ПоместитьВоВременноеХранилище замер отнес мало времени, а на ВызовСервераБезКонтекста замер фактически отнёс ВСЁ время? Как-то неинформативно. Куда время-то ушло? Вот код модуля формы:    ТЗ.Колонки.Добавить("Колонка1", Новый ОписаниеТипов("Строка", ,Новый КвалификаторыСтроки(10, ДопустимаяДлина.Фиксированная)));    ТЗ.Колонки.Добавить("Колонка2", Новый ОписаниеТипов("Строка", ,Новый КвалификаторыСтроки(10, ДопустимаяДлина.Фиксированная)));    ТЗ.Колонки.Добавить("Колонка3", Новый ОписаниеТипов("Строка", ,Новый КвалификаторыСтроки(10, ДопустимаяДлина.Фиксированная)));    ТЗ.Колонки.Добавить("Колонка4", Новый ОписаниеТипов("Строка", ,Новый КвалификаторыСтроки(10, ДопустимаяДлина.Фиксированная)));    ТЗ.Колонки.Добавить("Колонка5", Новый ОписаниеТипов("Строка", ,Новый КвалификаторыСтроки(10, ДопустимаяДлина.Фиксированная)));    ТЗ.Колонки.Добавить("Колонка6", Новый ОписаниеТипов("Строка", ,Новый КвалификаторыСтроки(10, ДопустимаяДлина.Фиксированная)));    ТЗ.Колонки.Добавить("Колонка7", Новый ОписаниеТипов("Строка", ,Новый КвалификаторыСтроки(10, ДопустимаяДлина.Фиксированная)));    ТЗ.Колонки.Добавить("Колонка8", Новый ОписаниеТипов("Строка", ,Новый КвалификаторыСтроки(10, ДопустимаяДлина.Фиксированная)));    ТЗ.Колонки.Добавить("Колонка9", Новый ОписаниеТипов("Строка", ,Новый КвалификаторыСтроки(10, ДопустимаяДлина.Фиксированная)));    ТЗ.Колонки.Добавить("Колонка10", Новый ОписаниеТипов("Строка", ,Новый КвалификаторыСтроки(10, ДопустимаяДлина.Фиксированная))); &НаСервереБезКонтекста Вот скрин замера
#1 by acsent
потому что так оно и есть
#2 by trancer
Блин криво отформатировалось. Вот скриншот еще раз Вот скрин замера
#3 by trancer
Что так и есть конкретнее?
#4 by acsent
вызов сервера дороже чем получение из временного хранилища
#5 by trancer
специально для этого сделал второй безконтекстный вызов, в котором НЕ провожу операции с ВХ. В указанном коде - это ВызовСервераБезКонтекста1. Его выполнение занимает 0,014733 с. В противовес 0,442244 с вызова, которые работает с ВХ.
#6 by trancer
то есть почти на два порядка меньше
#7 by bzaugolnov
Есть предположение: При серверном вызове, временное хранилище тоже путешествует , если есть обращение к нему.
#8 by trancer
насколько я понимаю есть ВХ на сервере и на клиенте. И они туда сюда не путешествуют и соответственно не пересекаются (они просто физически в разных местах). Но есть предположение, что 1с-ка как-то понимает, что в конкретном вызове есть обращение к ВХ и распаковывает это ВХ в самом начале вызова. Хотя как она это может понять непонятно.
#9 by H A D G E H O G s
Вряд ли.
#10 by H A D G E H O G s
Вряд ли.
#11 by trancer
как тогда это объяснить? Я понимаю, что можно забить и использовать это, но хочу понять.
#12 by H A D G E H O G s
Проверь это Окуенным по размеру данным массивом, получая его на клиенте из ВХ. Проверь это processmanager-ом. Под Толстым клиентов в файловом режиме - ВХ - это данные, записанные в файл 1Cv8tmp.1CD В клиен-сервервном - один из  "v8_EAAD_1.tmp", записанных в tmp папку службой сервера 1С.
#13 by H A D G E H O G s
Под Тонким - не проверял, но вот Вебклиент зарезал бы все при попытке писать чето неинтерактивно на диск.
#14 by bzaugolnov
Что именно проверить? Если хранилище доступно и на сервере и на клиенте, значит оно перемещается. Вопрос как это оптимизировано?
#15 by trancer
это понятно. это тоже понятно. Но, ИМХО, ответа это не даёт никак.
#16 by trancer
нет - это совершенно НЕ значит, что ВХ перемещается.
#17 by H A D G E H O G s
Перемещается оно в момент Получить/Поместить во временное хранилище, ИМХО. Но это можно проверить, сделав Массив=ПолучитьИзВременногоХранилища(АдресОкуенноБольшогоМассива): на клиенте.
#18 by trancer
Хм. ВХ правда что ли путешествует?.. Я думал что нет.. Вот простая проверка: при создании на сервере На клиенте потом И выходит "2". То есть ВХ похоже путешествует. Тогда остается вопрос каким образом 1с-ка понимает, что в серверном вызове есть обращение к ВХ. Если такая операция вообще имеет место быть.
#19 by H A D G E H O G s
Ты меня сначало порадовал, а потом разочаровал.
#20 by trancer
в смысле? Я сам запутался.
#21 by trancer
я кажись понял, что ты сказал. ВХ хранится НА СЕРВЕРЕ. И при вызове ПоместитьВоВременноеХранилище на клиенте данные ГОНЯТСЯ НА СЕРВЕР. Или наоборот: поместили данные в ВХ на сервере, потом получаем их на клиенте, и ВОТ ТУТ данные из ВХ на сервере ГОНЯТСЯ НА КЛИЕНТ. Так?
#22 by trancer
вернись, я всё прощу)
#23 by bzaugolnov
Типа того. А какой клиент? Толстый/тонкий?
#24 by trancer
тонкий
#25 by H A D G E H O G s
Да, именно так.
#26 by trancer
и всё-таки как объяснить есть соображения?
#27 by hhhh
а если вообще без хранилища сделать. Миллион команд по заполнению тз сколько времени займут? Тз - ведь очень тормозная вещь.
#28 by H A D G E H O G s
Ничего не тормозная
#29 by trancer
суть задачи - тема отдельной ветки. Здесь же у меня довольно конкретный вопрос. Не сочти за резкий ответ, просто не хочу в сторону дискуссию уводить.
#30 by H A D G E H O G s
Ну может замер гонит. Проверь большим массивом, получи его на клиенте, сравни время с получением на сервере.
#31 by trancer
походу действительно замер гонит. Сделал, как ты говоришь. Вот код: &НаКлиенте При получении массива из ВХ на сервере картина ТАКАЯ же, как в . При получении массива из ВХ на клиенте замер показывается 2.6 с на выполнении функции ПолучитьИзВременногоХранилища, то есть правду говорит. Ну что, остановимся на "гонящем" замере?
#32 by H A D G E H O G s
Да.
#33 by trancer
Обработки.ТестТонкийКлиент.СоздатьМассив - это функция в модуле менеджера. Она создает массив из 100000 элементов строк вида "0123456789". Кому интересно поиграться, вот обработка эта
#34 by H A D G E H O G s
Никому не интересно :-)
#35 by trancer
Хотя кому это может быть интересно.. )
#36 by H A D G E H O G s
Я вот счаст поиграюсь с заполнением ТЗ. Типизированное и нет. По времени и памяти. Вот это - интересно.
#37 by H A D G E H O G s
Монопенисуально, как по времени, так и по памяти.
#38 by trancer
та же картина, что и в или в ?
#39 by simol
Поставь точку останова на получении из хранилища и замерь вызов до этой точки. Сохранится ли 0,44с? А вообще замер в последних релизах часто ерунду стал показывать
#40 by vmv
по фрагменту кода в понятно, что вы не туда попали - надо было учиться на повара ну кто так иницициализирует колонки со стандартно иденексированным именем и идентичным типом, там же цикл в одну строку.
#41 by trancer
нормальный ход) Троль что ли? Обращаюсь к модераторам, за случайно не банят? Мне всё равно, может он другим насолит.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С