我们有一个使用Midas(DataSnap)技术在Delphi 5下开发的应用程序。它使用客户端上的TClientDataSet和TSocketConnection连接到服务器应用程序。客户端应用程序和服务器应用程序位于同一本地网络上。
移动到Windows 10时,客户端应用程序的运行速度降低了50%。我们的测试设置包括一台服务器(SQL数据库+服务器层应用程序)和两个客户端:一个在Windows7下,另一个在Windows10下。两个客户端运行相同的EXE并运行相同的查询。问题是Windows10上的TClientDataSet比打开慢50%。
为什么会发生???
我们确实禁用了FireWall,Windows Defender和任何可能的防病毒软件-两者的性能没有任何明显的差异。
我的测试循环如下:
// 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 | DM分发CDSTestAfterGetRecords
3 | DMDispensing CDSTestAfterOpen
2 | DMDispensing CDSTestBeforeClose
0 | DMDispensing CDSTestBeforeGetRecords
0 | DM分发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
因此,通常一个循环在Windows7上花费27毫秒,在Windows10上花费37毫秒。