Midas (DataSnap) Delphi-приложение стало намного медленнее при запуске на Windows10 - PullRequest
0 голосов
/ 27 ноября 2018

У нас есть приложение, разработанное под Delphi 5 с использованием технологии Midas (DataSnap).Он использует TClientDataSet на стороне клиента и TSocketConnection для подключения к приложению сервера.Клиентское приложение и серверное приложение находятся в одной локальной сети.

Клиентское приложение работало примерно на 50% медленнее при перемещении в Windows 10. Наша тестовая установка состоит из сервера (база данных SQL + приложение серверного уровня) и двух клиентов: один под Windows7, другой под Windows10.Оба клиента запускают один и тот же EXE-файл и выполняют один и тот же запрос.Проблема в том, что TClientDataSet в Windows10 примерно на 50% медленнее, чем при открытии.
Почему это происходит ???

Мы отключили FireWall, Защитник Windows и любой возможный антивирус - без видимой разницы в производительности.

Мой тестовый цикл выглядит следующим образом:

// Set parameters for the query     
ParamsQuery( VarArrayOf( ['PID','DISPENSEDATE'] ), VarArrayOf( [1234567, '2018-Sep-15' ] ) );  


for row := 1000 downto 0 do
begin
  DMDispensing.CDSTest.Close;
  DMDispensing.CDSTest.Open;
end;

Windows 7
MSEC
0 |DMDispensing CDSTestBeforeOpen
0 |DMDispensing CDSTestBeforeGetRecords
22 |DMDispensing CDSTestAfterGetRecords
3 |DMDispensing CDSTestAfterOpen
2 |DMDispensing CDSTestBeforeClose
0 |DMDispensing CDSTestBeforeGetRecords
0 |DMDispensing CDSTestAfterGetRecords
0 |DMDispensing CDSTestAfterClose

Windows 10            
MSEC
0 | DMDispensing         CDSTestBeforeOpen    
0 | DMDispensing         CDSTestBeforeGetRecords 
31 | DMDispensing         CDSTestAfterGetRecords 
0 | DMDispensing         CDSTestAfterOpen     
0 | DMDispensing         CDSTestBeforeClose   
0 | DMDispensing         CDSTestBeforeGetRecords 
16 | DMDispensing         CDSTestAfterGetRecords
0 | DMDispensing         CDSTestAfterClose    

Таким образом, обычно один цикл занимает 27 мсек в Windows7 и 37 мсек в Windows10.

...