2012-06-04 30 views
8

que estoy usando Delphi XE2 con la actualización 4 revisión 1FireMonkey

Mi defecto FMX aplicación está diciendo muy lento y en caso de que es la congelación durante un tiempo. Por ejemplo, cuando hago clic en un botón, toda la aplicación se congela durante unos segundos (pero solo para la primera ejecución de ese evento). Así que pensé que podría tratarse de un problema de GPU y edité mi archivo predeterminado Dpr como;

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. 

ahora funciona como me esperaba sin ningún problema, pero el uso de la CPU es que el anterior (25% cuando se mueve el ratón)

Luego he modificado mi código como

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

Ahora todo está funcionando sin problemas, sólo un pequeño retraso en el tiempo statup y uso de la CPU es muy baja. (0 - 2%) (que es por eso que necesito FireMonkey)

ahora todos los controles están funcionando como se esperaba, excepto Barra de menú, las configuraciones anteriores no se aplican a la barra de menú y está funcionando con el comportamiento predeterminado (la aplicación entera se congela durante algunos segundos).

¿Qué puedo hacer para superar este problema.

+0

es realmente un problema en el menú emergente, y las barras de menú usan el menú emergente. – VibeeshanRC

+0

Disculpe por un error, todo esto solo funcionará bien con tema oscuro, no con el tema de Windows – VibeeshanRC

Respuesta

1

El verdadero problema era con algunos efectos FireMonkey y los ajustes predeterminados Firemonkeys

defecto GlobalUseDirect2D = true mientras GlobalUseHWEffects := true es la verdadera causa de problema de rendimiento, lo que permite tanto está utilizando tanto la CPU y la GPU en mi machine.So hacer uno de ellos a falso. Te recomiendo que hagas GlobalUseDirect2D = false y GlobalUseHWEffects := true para un menor uso de la CPU.

And now you will be also able to get improved fonts (best ever firemonkey can generate)

No todos los clientes tendrán GPU de gama alta Gráfico

Estoy utilizando un chip gráfico Intel Mobile, así que no creo que mi uno tendrá todas las capacidades para admite todos los efectos firemonkey. siguiendo el código y comentar se puede ver en FMX.Types

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

pero no puedo entender por qué lo han hecho falsa por defecto. (así activar y desactivar depende de las capacidades de la GPU cliente)

por GlobalDisableFocusEffect que, sin más capaces de utilizar los efectos (por ejemplo: outergloweffect) .... pero de nuevo esta afirmación es aún más cierto .... sin

por GlobalDisableFocusEffect no todos los efectos están desactivados,

por ejemplo

  1. Tinnergloweffect en el estilo de botón en el estilo de Windows es la razón por la congelación
  2. Tinnergloweffect en headeritemstyle en estilo oscuro es el razón congelación.

y puede haber toneladas de ejemplo ...

Así que en mi situación me vi obligado a eliminar todos los efectos forman el estilo .., mezcla, estilos oscuros están trabajando mucho mejor, ya que utilizan menos TEffects (?), pero ahora estoy teniendo una mejor GUI con mejor rendimiento (creo que los estilos Blend y Dark parecen más geniales que los UI nativos)

+0

, la respuesta anterior es solo para aquellos que todavía tienen problemas con la revisión 1, pero aún siento "GlobalUseDirect2D = verdadero mientras GlobalUseHWEffects: = true" es un problema para todos, ya que usa tanto la GPU como la CPU, corrígeme si estoy equivocado, esta es mi conclusión de mis pruebas en mi GPU Intel. – VibeeshanRC

+0

¿ha publicado un control de calidad? – RBA

+0

@RBA, aún no, no creo que lo acepten como un error. – VibeeshanRC

Cuestiones relacionadas