У меня есть следующий полностью воспроизводимый сценарий, который я не могу понять:
Существует очень простое приложение, которое не делает ничего, кроме вызова CreateObject("Word.Application")
, то есть создает экземпляр MS Word для COM-взаимодействия. Это приложение находится на сервере терминалов Windows. Тестовый пример — подключиться через RDP, запустить приложение, и приложение выведет время, затраченное на вызов CreateObject
.
Теперь проблема в том, что время выполнения значительно больше, если я подключаюсь с определенного ноутбука (HP Spectre): требуется 1,7s
(+/- 0.1s
).
Если я подключаюсь с любой другой машины (ноутбука или стационарного компьютера), то время выполнения составляет от 0,2-0,4s
.
Время выполнения не зависит от используемой учетной записи RDP, разрешения экрана или локальных принтеров. Я даже заново установил Windows на этот ноутбук HP, чтобы исключить другие побочные эффекты. Неважно, подключен ли ноутбук HP через WLAN или сетевую карту USB. Я не понимаю разницу во времени выполнения от 4x
до 8x
по сравнению с любой другой машиной.
Какая причина (компонент/параметр) может объяснить такую большую разницу во времени выполнения?
Некоторая дополнительная информация: я попытался отладить процесс с помощью монитора API и увидел, что> 90% времени выполнения фактически тратится между вызовами RpcSend и RpcReceive. К сожалению, я не могу понять эту информацию.