





















fastreport报表编辑器在aarch64等非x86_64 CPU第一次打开慢的解决方案,这个方案是由“安全生产监管QQ 327846439”提供的,非常感谢“安全生产监管”的无私分享!
在aarch64慢主要是解压gzip资源非常耗时,他将设计器用到的500多个资源图片,从fr的资源提前处理并解压出来,经处理后,第一次打开报表编辑器从10多秒提升到2秒左右。
1、打开Sources/FastReport/FPC/Sources/frxRes.pas
TfrxImageResources = class(TfrImageResources) private FDisabledButtonImages: TImageList; FMainButtonImages: TImageList; FPreviewButtonImages: TImageList; FObjectImages: TImageList; FWizardImages: TImageList; function GetDisabledButtonImages: TImageList; function GetMainButtonImages: TImageList; function GetPreviewButtonImages: TImageList; function GetObjectImages: TImageList; function GetWizardImages: TImageList; protected procedure ClearFields; override; public procedure SetButtonImages(Images: TBitmap; Clear: Boolean = False); procedure SetObjectImages(Images: TBitmap; Clear: Boolean = False); procedure SetPreviewButtonImages(Images: TBitmap; Clear: Boolean = False); procedure SetSpeedButtonGlyph(AButton: TSpeedButton; AIndex: Integer); //delete fix for Transperent when WinLaz fix it. procedure SetWizardImages(Images: TBitmap; Clear: Boolean = False); procedure PreloadImages; virtual;//<---添加这行 property DisabledButtonImages: TImageList read GetDisabledButtonImages; property MainButtonImages: TImageList read GetMainButtonImages; property PreviewButtonImages: TImageList read GetPreviewButtonImages; property ObjectImages: TImageList read GetObjectImages; property WizardImages: TImageList read GetWizardImages; property ImagesPPI; end;
在适当位置添加以下代码:
procedure TfrxImageResources.PreloadImages; {$IFDEF Linux} var BaseDir: string; Ok: Boolean; {$ENDIF} begin {$IFDEF Linux} BaseDir := ExtractFilePath(ParamStr(0)) + 'frx_images' + PathDelim; if DirectoryExists(BaseDir) then begin Ok := LoadImageListFromPngFiles(BaseDir + 'MainButtonImages' + PathDelim, FMainButtonImages, 16, 16); if Ok then begin Ok := LoadImageListFromPngFiles(BaseDir + 'ObjectImages' + PathDelim, FObjectImages, 16, 16); if Ok then begin Ok := LoadImageListFromPngFiles(BaseDir + 'PreviewButtonImages' + PathDelim, FPreviewButtonImages, 16, 16); if Ok then begin Ok := LoadImageListFromPngFiles(BaseDir + 'DisabledButtonImages' + PathDelim, FDisabledButtonImages, 16, 16); if Ok then begin Ok := LoadImageListFromPngFiles(BaseDir + 'WizardImages' + PathDelim, FWizardImages, 32, 32); end; end; end; end; end; {$endif} FDisabledButtonImages := GetDisabledButtonImages; FMainButtonImages := GetMainButtonImages; FPreviewButtonImages := GetPreviewButtonImages; FObjectImages := GetObjectImages; FWizardImages := GetWizardImages; end;
2、打开/Sources/FastReport/FPC/Sources/frxClass.pas
在initialization后面添加红色代码:
initialization {$IFDEF Linux} if DirectoryExists(ExtractFilePath(ParamStr(0)) + 'frx_images') then frxImages.PreloadImages; {$endif} {$IFDEF DELPHI16} StartClassGroup(TControl);
3、下载frx_images.zip(http://sgamer.oicp.net:8888/%E5%85%B6%E5%AE%83%E4%B8%8B%E8%BD%BD%E6%96%87%E4%BB%B6/frx_images.zip)
1)将这个压缩包解压到用到fr的主程序相同的目录

2)将这个目标拷贝到lazarus这个目录

4、重新编译fr控件及重构lazarus,打开报表编辑器从之前要10多秒,现在只需2秒左右,速度提升十分明显。
注意:
如果没frx_images目录,第一次打开报表编辑器时速度和原来没修改是一样的。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。