加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – FireMonkey性能问题

发布时间:2020-12-15 04:06:45 所属栏目:大数据 来源:网络整理
导读:我使用Delphi XE2与更新4修补程序1 我的默认FMX应用程序表示非常慢,并且在事件发生时它会冻结一段时间.例如:当我点击一个按钮时,整个应用程序会冻结几秒钟(但仅限于该事件的第一次执行).所以我认为它可能是一个GPU问题并编辑我的默认Dpr文件; uses FMX.Form
我使用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这样的本机很酷

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读