微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

delphi – FireMonkey性能问题

我使用Delphi XE2与更新4修补程序1

我的认FMX应用程序表示非常慢,并且在事件发生时它会冻结一段时间.例如:当我点击一个按钮时,整个应用程序会冻结几秒钟(但仅限于该事件的第一次执行).所以我认为它可能是一个GPU问题并编辑我的认Dpr文件;

uses
  FMX.Forms,fmx.Types,..

{$R *.res}

begin
  Application.Initialize;

  GlobalUseHWEffects := False   ;
  GlobalUseDirect2D := False  ;
  GlobalUseDirect2DSoftware := False    ;
  GlobalUseGDIPlusClearType := True    ;
  GlobaldisableFocusEffect := True   ;

  Application.CreateForm(...);
  Application.Run;
end.

现在它按预期工作没有任何问题,但cpu使用率与之前一样(移动鼠标时为25%)

然后我修改了我的代码

GlobalUseHWEffects := true  ;
  GlobalUseDirect2D := False  ;
  GlobalUseDirect2DSoftware := False    ;
  GlobalUseGDIPlusClearType := True    ;
  GlobaldisableFocusEffect := True   ;

现在一切都工作顺利,只有一小段时间的节省时间和cpu使用率非常低(0 – 2%).(这就是我需要Firemonkey的原因)

现在除了菜单栏之外,所有控件都按预期工作,上面的设置不适用于菜单栏并且它正在使用认行为(整个应用程序冻结几秒钟).

我能做些什么才能解决这个问题.

解决方法

真正的问题是一些firemonkey效果和Firemonkey认设置

认GlobalUseDirect2D = true而GlobalUseHWEffects:= true是性能问题的真正原因,两者都在我的机器中同时使用cpu和GPU.因此将其中一个设置为false.我建议您使用GlobalUseDirect2D = false和GlobalUseHWEffects:= true以减少cpu的使用.

现在你也可以获得改进的字体(firemonkey可以生成的最好的字体)

并非所有客户都拥有高端的图形GPU

我使用的是英特尔移动图形芯片,所以我认为我的所有功能都不能支持所有的firemonkey效果.在FMX.Types中可以看到代码和注释

// On low-end hardware or mobile bitmap effects are slowly
  GlobaldisableFocusEffect: Boolean = False;

但我无法理解为什么他们认将它设为假.(因此启用和禁用取决于客户端GPU功能)

通过GlobaldisableFocusEffect你将无法再使用效果(例如:outergloweffect)….但是这个声明仍然不再是真的….

通过GlobaldisableFocusEffect并非所有效果都被禁用,

例如

> Windows风格中按钮样式的Tinnergloweffect是冻结的原因
>在黑暗风格的标题样式中的Tinnergloweffect是冻结的原因.

可能有很多例子……

因此,在我的场景中,我被迫从样式中移除所有效果..,Blend,Dark样式工作得更好,因为它们使用较少的TEffects(?),但现在我有一个更好的GUI具有更好的性能(我觉得Blend和黑暗风格看起来比像UI这样的本机很酷

原文地址:https://www.jb51.cc/delphi/102148.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐