我正在对标准VCL TImage
控件和各种其他第三方替代产品的性能进行比较。我正在使用GetTickCount
来衡量图像加载所需的时间。实际上,这大约需要4秒钟,但是LoadFromFile()
几乎立即让我惊讶!
procedure TfrmMain.Button1Click(Sender: TObject);
begin
FStart:= GetTickCount;
imgStandard.Picture.LoadFromFile(txtFilename.Text);
FEnd:= GetTickCount; //<-- Put a breakpoint here to observe immediate return in debug
lblStandard.Caption:= IntToStr(FEnd-FStart)+' Msec';
end;
在视觉上将相同的JPEG文件加载到两个图像控件中所需的时间与与Graphics32中的TImage32
进行比较的时间一样。两者均在此时间段(大约4秒)内阻止了UI。 GR32报告的速度例如为3734毫秒,而标准的报告仅为16毫秒。
为什么会这样?如何准确测量将图像真正加载到TImage
中所需的时间?
答案 0 :(得分:5)
为什么会这样?
两个控件之间的区别在于减压的处理方式。
几乎所有图像花费的时间都是在减压步骤中进行的,这解释了您的时间上的差异。
如何准确测量将图像真正加载到
TImage
中所需的时间?
您可以在调用imgStandard.Update
之后立即插入对LoadFromFile
的调用,这将强制进行绘制循环,从而强制执行减压步骤。