Project

Profile

Help

HostedRedmine.com has moved to the Planio platform. All logins and passwords remained the same. All users will be able to login and use Redmine just as before. Read more...

Bug #913592

open

8.3.17-18-+ Код на сервере приложений взаимодействует с COM объектами значительно медленнее чем на клиенте

Added by Сергей Старых about 4 years ago. Updated about 4 years ago.

Status:
Approved
Priority:
Normal
Assignee:
-
Category:
-
Sprint/Milestone:
-
Start date:
Due date:
% Done:

0%

Estimated time:

Description

https://partners.v8.1c.ru/forum/t/1960915/m/1960915

Конфигурация ПО

8.3.17-18, клиент-сервер, ОС Windows

Проблема

Код на сервере приложений взаимодействует с COM объектами значительно медленнее чем на клиенте.

Воспроизведение

Открыть приложенную внешнюю обработку в управляемом клиентском приложении любой клиент-серверной базы на ОС Windows. Нажать в ней кнопку "Команда1. При этом выполнится код
&НаКлиенте
Процедура Команда1(Команда)
КоличествоПроходов = 500000;
Команда1НаСервере("НаКлиенте", КоличествоПроходов);
Тест(КоличествоПроходов);
КонецПроцедуры

&НаСервере
Процедура Тест(КоличествоПроходов)
Команда1НаСервере("НаСервере", КоличествоПроходов);
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура Команда1НаСервере(Имя, КоличествоПроходов)
ОбъектКОМ = Новый COMОбъект("VBScript.RegExp");
МоментНачала = ТекущаяДата();
Для Счетчик = 1 По КоличествоПроходов Цикл
ОбъектКОМ.IgnoreCase = Истина;
КонецЦикла;
Сообщить(Имя + " " + (ТекущаяДата() - МоментНачала));
КонецПроцедуры

и примерно через минуту будет будут выведены сообщения пользователю с длительностью выполнения одинакового цикла

НаСервере 38
НаКлиенте 2

Получается, что серверный код в этом случае в 20 раз медленнее устанавливает свойство COM объекта, чем клиентский код. Я также проверял и на других стандартных COM объектах и на других рабочих местах. Разница всегда значительная - 4-20 раз. Она не зависит от того, устанавливается или читается значение свойства или вызывается метод.

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

Ошибкой не признали. Тех. поддержка ответила:

Это может означать, что VBScript.RegExp использует Single Thread Apartment. В этом случае вызов из клиентского кода выполняется по прямым указателям, а из серверного кода через механизм передачи сообщений в Windows, что может вызвать значительное замедление, но это является ценой за обеспечение потокобезопасности. Поведение штатное.


Files

ВнешняяОбработка1.epf (5.78 KB) ВнешняяОбработка1.epf Сергей Старых, 2021-01-07 03:37 PM
clipboard-202101071737-1wcqq.png (1.48 KB) clipboard-202101071737-1wcqq.png Сергей Старых, 2021-01-07 03:37 PM

Related issues

Related to Инструменты разработчика Tormozit для 1С - Task #881772: Для непортативных вариантов добавлен флажок "Выполнять на сервере" с асинхронным выполнениемClosed

Actions
Actions #1

Updated by Сергей Старых about 4 years ago

  • Description updated (diff)
Actions #2

Updated by Сергей Старых about 4 years ago

  • Related to Task #881772: Для непортативных вариантов добавлен флажок "Выполнять на сервере" с асинхронным выполнением added
Actions #3

Updated by Сергей Старых about 4 years ago

  • Description updated (diff)
Actions #4

Updated by Сергей Старых about 4 years ago

  • Description updated (diff)
Actions #5

Updated by Сергей Старых about 4 years ago

  • Status changed from New to Approved

Also available in: Atom PDF