Имя: Пароль:
1C
 
Пустой серверный вызов в управляемом приложении 15мс против 2мс в обычном приложении
0 TormozIT
 
гуру
28.12.25
17:03
Нарыл что ОП (обычное клиентское приложение) намного быстрее служебную часть серверного вызова делает чем УП (управляемое клиентское приложение) - 2мс против 15мс на локальном сервере.
Расскажи, если знаешь чем это обусловлено.
Сообщи, если у тебя другие замеры на локальном сервере.
https://partners.v8.1c.ru/forum/topic/2266376
https://www.hostedredmine.com/issues/1007791
1 Garykom
 
гуру
28.12.25
19:50
А если &НаСервереБезКонтекста?
2 hiddi
 
29.12.25
01:14
Возможно оберток сетевых протокольных всяких больше в управляемом
3 Chameleon1980
 
29.12.25
06:25
(2) наоборот же?
4 Chameleon1980
 
29.12.25
06:27
(0) и контекст одинаковый?
5 TormozIT
 
гуру
29.12.25
08:23
Из описания теста: "выполнится чистый вызов из клиентского общего модуля в серверный"
6 Chameleon1980
 
29.12.25
08:28
(5) в топике не вижу. Нужно по ссылке идти?
7 TormozIT
 
гуру
29.12.25
08:52
(6) Там готовый чистый тест для тех, кому действительно интересно.
8 Lama12
 
29.12.25
09:12
(7) Не заинтересовал.
9 TormozIT
 
гуру
29.12.25
09:46
(8) Спасибо, что сообщил. Это очень важно для меня.
10 Fragster
 
гуру
29.12.25
12:22
это пространство для будущей оптимизации
11 Волшебник
 
29.12.25
12:51
(10)
12 H A D G E H O G s
 
29.12.25
13:30
От 3 до 5 мс на упр и от 1 до 3 мс на обычном.
Винда - свежая, чистая, система развернута для максимально быстрого обновления многорелизов УТ на Новый год.

Ну сериализуются в XML и сжимаются какие то данные в Тонком, четакова?
13 H A D G E H O G s
 
29.12.25
15:23
Лучше вызвать 1000 раз.
Для УправляемогоПриложения = 3856 мсек, 3,8 мсек на вызов.
Для ОбычногоПриложения = 507 мсек, 0,5 мсек на вызов.

Вот тогда разница ощутимее.
14 Волшебник
 
29.12.25
13:49
(13) ты в толстом точно вызвал сервер? прямо вот передал вызов на сервер?
15 H A D G E H O G s
 
29.12.25
13:56
(13) Нет, это не длительный вызов сервера, это обработка/ отображение ответа
16 H A D G E H O G s
 
29.12.25
13:56
(14) of course
17 Волшебник
 
29.12.25
14:03
Всё понятно. Значит толстый клиент работает в 7-8 раз быстрее. Остаёмся пока на толстом клиенте и обычных формах.
18 TormozIT
 
гуру
29.12.25
14:49
(13) мои замеры для управляемого приложения не отличаются между тонким и толстым клиентами.
19 maxab72
 
29.12.25
14:51
(18) а почему они должны были отличаться? Наоборот, в таком режиме большее время серверного вызова из толстой формы запущенной в режиме тонкого клиента было бы не удивительно.
20 H A D G E H O G s
 
29.12.25
15:05
(18) Да, корректно говорить о разнице между
Обычным и Управляемом приложении, а не о Толстом и Тонком клиенте.
21 TormozIT
 
гуру
29.12.25
16:47
(19) В исследуемой части теста нет форм. Там только общие модули. Про возможное отличие внес неоднозначность (13) и уже исправился.
22 TormozIT
 
гуру
29.12.25
15:17
(17) У меня это верно только для обычного приложения, а для толстого управляемого неверно, т.е. у меня разницы между толстым и тонким управляемым клиентом нет.
23 maxab72
 
29.12.25
15:43
(22) что понимается под "толстым управляемым"?
24 H A D G E H O G s
 
29.12.25
15:46
(23) ТолстыйКлиентУправляемоеПриложение
25 TormozIT
 
гуру
29.12.25
16:51
(13) Теперь вижу, что у тебя сопоставимое соотношение задержки (в 8 раз), т.е. твой опыт подтверждает мои замеры.
26 arsik
 
гуру
29.12.25
16:58
А теперь попробуйте данные пропихнуть туда и обратно. Например бинарные.
Уверен результат будет примерно одинаковый.
27 Garykom
 
гуру
29.12.25
17:53
(12) Вопрос какие?
Если это вызов из клиентского общего модуля в серверный общий модуль? См (5)

Кстати недаром в (1) спросил
Получается контекст тянется слишком глубоко даже если его не спрашивали?
1. &НаКлиенте (форма) -> общий модуль (клиент) -> общий модуль (сервер)
vs
2. &НаКлиенте (форма) -> &НаСервереБезКонтекста (форма) -> общий модуль (сервер)

Или все же там явно контекст передается через параметры в случае 1?
28 H A D G E H O G s
 
29.12.25
17:55
(26) Лучше набор сложновложенных структур.
29 Garykom
 
гуру
29.12.25
17:59
(28) Намекаешь что между клиентом и сервером в платформе по умолчанию xml-сериализация?
Так в том и вопрос, чего там сериализовывать если в параметрах (между вызовами клиентского и серверного ОМ) например один простой тип
И контекста по идее не должно тянуться, если конечно это не отладка
30 TormozIT
 
гуру
29.12.25
19:01
Записал полный техножурнал для этого локального теста на управляемом приложении, замер для которого показал 11мс (измерение кодом). Если кратко, то мне он не сильно помог в локализации утечки времени.

УП-Клиент:
Отправил вызов в 45:46.074мс

45:46.074000-0,VRSREQUEST,4,level=INFO,process=1cv8,OSThread=50208,Usr=Администратор,Method=POST,URI='/e1cib/modules/call?id=urn%3Amodule%3Amd%3A1cd05d59-72c1-4469-ac6a-d78b257435fe%40property%3D%27d5963243-262e-4398-b4d7-fb16d06484f6%27%3Bversion%3D%277a6308fa9a1d354caf0a856da8e8219400000000%27',Headers='1C-BaseLocation: e1c://server/cortex/test
User-Agent: 1CV8
1C-ApplicationName: 1CV8
Content-Length: 245
Content-Type: application/xml; charset=utf-8
Accept-Encoding: zstd,lz4;q=0.7,deflate;q=0.5,1CSDC;q=0.2
Accept-Language: ru-RU
Accept: application/xml
Content-Encoding: zstd',Body=245,Context='
ОбщаяФорма.ФормаУпр.Форма : 4 : Клиент.Тест();
    ОбщийМодуль.Клиент.Модуль : 3 : Сервер.Тест();'
45:46.074002-1,SCALL,4,level=INFO,process=1cv8,OSThread=50208,Usr=Администратор,ClientID=2,Interface=bc15bd01-10bf-413c-a856-ddc907fcd123,IName=IVResourceRemoteConnection,Method=0,CallID=5521,MName=send,DstClientID=3603,Context='
ОбщаяФорма.ФормаУпр.Форма : 4 : Клиент.Тест();
    ОбщийМодуль.Клиент.Модуль : 3 : Сервер.Тест();'
45:46.074003-0,VRSRESPONSE,4,level=INFO,process=1cv8,OSThread=50208,Usr=Администратор,Status=200,Phrase=OK,Headers='Server: 1C:Enterprise/8.3.27.1964
Content-Encoding: zstd
Content-Language: ru-RU
Content-Type: application/xml; charset=utf-8
Content-Length: 244',Body=244,Context='
ОбщаяФорма.ФормаУпр.Форма : 4 : Клиент.Тест();
    ОбщийМодуль.Клиент.Модуль : 3 : Сервер.Тест();'
45:46.074005-1,SCALL,4,level=INFO,process=1cv8,OSThread=50208,Usr=Администратор,ClientID=2,Interface=90b77326-8e4a-4195-b980-d758277d1f03,IName=ISeanceContextStorage,Method=1,CallID=5522,MName=getSeanceParameterSer,DstClientID=3603,Context='
ОбщаяФорма.ФормаУпр.Форма : 4 : Клиент.Тест();
    ОбщийМодуль.Клиент.Модуль : 3 : Сервер.Тест();'
45:46.074007-1,SCALL,4,level=INFO,process=1cv8,OSThread=50208,Usr=Администратор,ClientID=2,Interface=7f58f27d-5ad8-43a1-aa1e-c982f41bed5c,IName=IRemoteCreatorService,Method=2,CallID=5523,MName=callPutEventContext,DstClientID=3603,Context='
ОбщаяФорма.ФормаУпр.Форма : 4 : Клиент.Тест();
    ОбщийМодуль.Клиент.Модуль : 3 : Сервер.Тест();'
45:46.074009-1,SCALL,4,level=INFO,process=1cv8,OSThread=50208,Usr=Администратор,ClientID=2,Interface=90b77326-8e4a-4195-b980-d758277d1f03,IName=ISeanceContextStorage,Method=12,CallID=5524,MName=getSeanceParameterIDs,DstClientID=3603,Context='
ОбщаяФорма.ФормаУпр.Форма : 4 : Клиент.Тест();
    ОбщийМодуль.Клиент.Модуль : 3 : Сервер.Тест();'
45:46.074011-1,SCALL,4,level=INFO,process=1cv8,OSThread=50208,Usr=Администратор,ClientID=2,Interface=7f58f27d-5ad8-43a1-aa1e-c982f41bed5c,IName=IRemoteCreatorService,Method=2,CallID=5525,MName=callPutEventContext,DstClientID=3603,Context='
ОбщаяФорма.ФормаУпр.Форма : 4 : Клиент.Тест();
    ОбщийМодуль.Клиент.Модуль : 3 : Сервер.Тест();'
45:47.027001-1,HASP,0,level=INFO,process=1cv8,OSThread=45312,Txt='
MEMOHASP_READBLOCK(,port=202,ser=ORGL8,pos=33,size=1,,)->,,stat=0,buf=DBC3'


УП-Сервер:
Принял вызов в 45:46.077мс (+3мс от момента отправки клиентом)

45:46.077009-0,VRSREQUEST,3,level=INFO,process=rphost,p:processName=test,OSThread=16180,t:clientID=3603,t:applicationName=1CV8,t:computerName=CORTEX,t:connectID=71,SessionID=1,Usr=Администратор,Method=POST,URI='/e1cib/modules/call?id=urn%3Amodule%3Amd%3A1cd05d59-72c1-4469-ac6a-d78b257435fe%40property%3D%27d5963243-262e-4398-b4d7-fb16d06484f6%27%3Bversion%3D%277a6308fa9a1d354caf0a856da8e8219400000000%27',Headers='1C-BaseLocation: e1c://server/cortex/test
User-Agent: 1CV8
Content-Type: application/xml; charset=utf-8
1C-ApplicationName: 1CV8
Content-Length: 245
Accept-Encoding: zstd,lz4;q=0.7,deflate;q=0.5,1CSDC;q=0.2
Accept-Language: ru-RU
Accept: application/xml
Content-Encoding: zstd',Body=245
45:46.077010-0,VRSRESPONSE,3,level=INFO,process=rphost,p:processName=test,OSThread=16180,t:clientID=3603,t:applicationName=1CV8,t:computerName=CORTEX,t:connectID=71,SessionID=1,Usr=Администратор,Status=200,Phrase=OK,Headers='Content-Encoding: zstd
Server: 1C:Enterprise/8.3.27.1964
Content-Language: ru-RU
Content-Length: 244
Content-Type: application/xml; charset=utf-8',Body=244
45:46.077012-1,SCALL,3,level=INFO,process=rphost,p:processName=test,OSThread=16180,t:clientID=3603,t:applicationName=1CV8,t:computerName=CORTEX,t:connectID=71,SessionID=1,Usr=Администратор,ClientID=3617,Interface=90b77326-8e4a-4195-b980-d758277d1f03,IName=ISeanceContextStorage,Method=9,CallID=232575,MName=seanceParametersPresave,DstClientID=6918
45:46.077014-1,SCALL,3,level=INFO,process=rphost,p:processName=test,OSThread=16180,t:clientID=3603,t:applicationName=1CV8,t:computerName=CORTEX,t:connectID=71,SessionID=1,Usr=Администратор,ClientID=3617,Interface=90b77326-8e4a-4195-b980-d758277d1f03,IName=ISeanceContextStorage,Method=10,CallID=232576,MName=seanceParametersCommit,DstClientID=6918
45:46.077015-15,CALL,2,level=INFO,process=rphost,p:processName=test,OSThread=16180,t:clientID=3603,t:applicationName=1CV8,t:computerName=CORTEX,t:connectID=71,SessionID=1,Usr=Администратор,callWait=0,first=1,Context=ОбщийМодуль.Вызов : ОбщийМодуль.Сервер.Модуль.Тест,Interface=bc15bd01-10bf-413c-a856-ddc907fcd123,IName=IVResourceRemoteConnection,Method=0,CallID=5521,MName=send,Memory=21792,MemoryPeak=304720,InBytes=260,OutBytes=0,CpuTime=0
45:46.077019-1,SCALL,3,level=INFO,process=rphost,p:processName=test,OSThread=16180,t:clientID=3603,t:applicationName=1CV8,t:computerName=CORTEX,t:connectID=71,SessionID=1,Usr=Администратор,ClientID=3617,Interface=90b77326-8e4a-4195-b980-d758277d1f03,IName=ISeanceContextStorage,Method=13,CallID=232577,MName=setCallID,DstClientID=6918
45:46.077021-1,SCALL,3,level=INFO,process=rphost,p:processName=test,OSThread=16180,t:clientID=3603,t:applicationName=1CV8,t:computerName=CORTEX,t:connectID=71,SessionID=1,Usr=Администратор,ClientID=3617,Interface=90b77326-8e4a-4195-b980-d758277d1f03,IName=ISeanceContextStorage,Method=1,CallID=232578,MName=getSeanceParameterSer,DstClientID=6918
45:46.077023-1,SCALL,3,level=INFO,process=rphost,p:processName=test,OSThread=16180,t:clientID=3603,t:applicationName=1CV8,t:computerName=CORTEX,t:connectID=71,SessionID=1,Usr=Администратор,ClientID=3617,Interface=90b77326-8e4a-4195-b980-d758277d1f03,IName=ISeanceContextStorage,Method=12,CallID=232579,MName=getSeanceParameterIDs,DstClientID=6918
45:46.077024-7,CALL,2,level=INFO,process=rphost,p:processName=test,OSThread=16180,t:clientID=3603,t:applicationName=1CV8,t:computerName=CORTEX,t:connectID=71,SessionID=1,Usr=Администратор,callWait=0,first=0,Interface=90b77326-8e4a-4195-b980-d758277d1f03,IName=ISeanceContextStorage,Method=1,CallID=5522,MName=getSeanceParameterSer,Memory=-9632,MemoryPeak=1024,InBytes=0,OutBytes=0,CpuTime=0
45:46.077027-0,Context,2,level=INFO,process=rphost,p:processName=test,OSThread=16180,t:clientID=3603,t:applicationName=1CV8,t:computerName=CORTEX,t:connectID=71,SessionID=1,Usr=Администратор,Context='
ОбщаяФорма.ФормаУпр.Форма : 4 : Клиент.Тест();
    ОбщийМодуль.Клиент.Модуль : 3 : Сервер.Тест();'
45:46.077030-1,CALL,2,level=INFO,process=rphost,p:processName=test,OSThread=16180,t:clientID=3603,t:applicationName=1CV8,t:computerName=CORTEX,t:connectID=71,SessionID=1,Usr=Администратор,callWait=0,first=0,Interface=90b77326-8e4a-4195-b980-d758277d1f03,IName=ISeanceContextStorage,Method=12,CallID=5524,MName=getSeanceParameterIDs,Memory=824,MemoryPeak=920,InBytes=0,OutBytes=0,CpuTime=0
45:46.077033-0,Context,2,level=INFO,process=rphost,p:processName=test,OSThread=16180,t:clientID=3603,t:applicationName=1CV8,t:computerName=CORTEX,t:connectID=71,SessionID=1,Usr=Администратор,Context='
ОбщаяФорма.ФормаУпр.Форма : 4 : Клиент.Тест();
    ОбщийМодуль.Клиент.Модуль : 3 : Сервер.Тест();'
45:46.577001-1,SCALL,0,level=INFO,process=rphost,OSThread=35268,ClientID=3596,CallID=232580,MName=Release,DstClientID=6882
31 TormozIT
 
гуру
29.12.25
19:07
(30) Ну видимо время уходит на HTTP кухню, т.к. даже в режиме TCP протокола управляемый клиент все равно все вызовы готовит как полноценный HTTP запрос с кучей заголовков и подобного. И сервер соответственно тоже тратит время на эту кухню при приеме вызова. Ну и в обратную сторону (возврат из вызова) аналогично. Дополнительные действия на HTTP обертки умножаются на 4. Если добавилось всего 10мс, значит по 2мс на каждом заворачивании/разворачивании тратится.

Пока это - единственное что я смог придумать.
32 Злопчинский
 
29.12.25
19:13
хм.. а это сильно важно?
ну вот чисто для прикладных задач...
33 Garykom
 
гуру
29.12.25
19:16
(32) Очень важно
Не надо делать запросы серверные вызовы в цикле!
34 Волшебник
 
29.12.25
19:17
(33) Не надо запрещать гуру делать то, что они могут и хотят.
35 Garykom
 
гуру
29.12.25
19:23
(32) Грубо говоря в 1С 7.7 можно было смело из формы в цикле хреначить вызовы процедуры/функции общего модуля

В 1С 8 ОФ это уже нежелательно

В 1С 8 УФ - строго противопоказано
Вместо цикла с разными параметрами надо все параметры в одну сущность (массив или структуру или еще что) и одним вызовом сервера передавать
И уже на сервере делать цикл
36 Garykom
 
гуру
29.12.25
19:20
(34) Да если цикл небольшой то можно не париться
А вот если цикл большой и время обработки сравнимо с затратами на сам вызов - надо понимать и избегать
37 Волшебник
 
29.12.25
19:22
(35) Грубо говоря, в ОФ мы можем делать то, что хотим, и это будет быстрее в 10 раз.
38 Волшебник
 
29.12.25
19:21
(36) Ваше "надо избегать" мы будем иметь в виду в режиме "Ваш звонок очень важен для нас"
39 TormozIT
 
гуру
29.12.25
19:28
"Нутром чую" что есть тут неоптимальная реализация (и можно ускорить). Уж сильно много уходит на ЛОКАЛЬНЫЙ ПУСТОЙ БЕСКОНТЕКСТНЫЙ серверный вызов то.
40 TormozIT
 
гуру
29.12.25
19:31
(30) Кстати судя по этому логу. Отправка запроса и его обработка на сервере выполняется менее 1мс. Где же остальное время?
41 Волшебник
 
29.12.25
19:31
(39) Если ускорить сейчас, то как мы будем ускорять через 10 лет? Думайте стратегически
42 Злопчинский
 
29.12.25
19:32
(35) ну, оно и в 77 вызов процедур/функций ГМ и обращение к глобальным переменным жрало больше ресурса, просто задач, где это действительно критично - ну вот у меня с встречавшимися объемами данных/потребностями - ну не было... В 8ке, видимо, все не так, ребята... шаг влево/вправо - летит ломом по черепушке?
43 Волшебник
 
29.12.25
19:36
(42) Вы не понимаете разделение контекстов клиент и сервер. Вы вообще не программист, потому что не понимаете контекст.
44 Злопчинский
 
29.12.25
19:38
Смело. Молодежно.
45 Волшебник
 
29.12.25
19:41
(44) Смело и молодёжно писать "77" вместо "7.7", а понимать контекст — это нормально.
46 TormozIT
 
гуру
29.12.25
20:00
На всякий случай еще проверил тест в обычном приложении из управляемой формы. Как и ожидалось, это не изменило картину, т.е. именно тип клиентского приложения добавляет длительность.
47 Garykom
 
гуру
29.12.25
20:16
(46) Еще проверь когда клиент УФ и сервер на одном физическом сервере
И когда на разных ))

Блин ну логично же все
Тонкий клиент с УФ - там сервер дальше от клиента но поближе к СУБД
Толстый клиент с ОФ - по сути сервер частично на клиенте физически, но далек от СУБД
48 Garykom
 
гуру
29.12.25
20:17
(47)+ Это я к тому а ты проверял/сравнивал для разных типов клиентских приложений как выглядит вся цепочка от формы на клиенте 1С до СУБД?
Что будет в этом случае быстрей?
49 TormozIT
 
гуру
29.12.25
21:40
(47) Ты писал: "Еще проверь когда клиент УФ и сервер на одном физическом сервере"
А я везде писал про то, что сервер локальный. Получается что я уже именно так и проверил.
50 TormozIT
 
гуру
29.12.25
22:01
Лог TCP передачи УП




Лог TCP передачи ОП


51 Garykom
 
гуру
29.12.25
22:12
(49) Тогда проверь когда наоборот на разных физических
И сравни толстый клиент ОФ с тонким УФ
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.