我在多启动计算机Windows 7和Windows 10上运行相同的代码,基准测试显示Windows 10中的SaveToFile操作缓慢
Windows 10 500,953,875,688,578,750,453
Windows 7 109,125,109,110,125,140,125
var
I, Tick: integer;
Bitmap: TBitmap;
begin
Bitmap := TBitmap.Create;
Bitmap.SetSize(500,500);
Bitmap.PixelFormat := pf24bit;
Bitmap.Canvas.Brush.Style:= bsDiagCross;
Bitmap.Canvas.Brush.Color:= clRed;
Tick := GetTickCount;
for I := 0 to 100 do
begin
SetBkColor(Bitmap.Canvas.Handle, RGB(random(255),random(255),random(255)));
Bitmap.Canvas.FillRect(Rect(0, 0, 500, 500));
Bitmap.SaveToFile(IntToStr(I)+'.bmp');
end;
ShowMessage(IntToStr(GetTickCount-Tick));
Bitmap.Free;
end;
我认为SaveToFile在Windows 10中的工作方式不同,等待所有位图都保存,如果是Windows 7,它就像后台任务一样,如果确实如此,那么如何使SaveToFile像在Windows 7中一样工作。
更新
@ForguesR提到减速后来自Windows 10后卫的减速,我得到了更好的结果187,171,172,178,188,156,187,Windows 7后卫不会影响保存,我不会'了解Windows 8。 是否有API或方法阻止Windows 10后卫检查并减慢保存操作?答案 0 :(得分:1)
您在相同的硬件上运行相同的程序,但使用不同的操作系统。从那里开始很明显,Windows 10中有一些东西会减慢速度。正如您所发现的那样,通过禁用Windows 10 Defender,您可以获得几乎相同的性能。
幸运的是,您无法从代码中“控制”防病毒软件。如果可能传播病毒将是一件容易的事。