TBitmap SaveToFile在Windows 10中看起来很慢

时间:2016-01-07 02:38:20

标签: windows delphi io

我在多启动计算机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后卫检查并减慢保存操作?

1 个答案:

答案 0 :(得分:1)

您在相同的硬件上运行相同的程序,但使用不同的操作系统。从那里开始很明显,Windows 10中有一些东西会减慢速度。正如您所发现的那样,通过禁用Windows 10 Defender,您可以获得几乎相同的性能。

幸运的是,您无法从代码中“控制”防病毒软件。如果可能传播病毒将是一件容易的事。