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是冻结的原因 可能有很多例子…… 因此,在我的场景中,我被迫从样式中移除所有效果..,Blend,Dark样式工作得更好,因为它们使用较少的TEffects(?),但现在我有一个更好的GUI具有更好的性能(我觉得Blend和黑暗风格看起来比像UI这样的本机很酷 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |