Pregunta

Al tratar de modernizar el aspecto de una vieja aplicación de C ++ Builder / Delphi, que permite cambiar su apariencia visual ( noreferrer estilos visuales ) y se sorprendió de lo mucho que de una actuación temas hit añaden. Por ejemplo, para nuestra página de configuración principal (un máximo de 11 pestaña, 200 de control de diálogo monstruo que no queremos volver a hacer en este momento por razones de tiempo de desarrollo y los costos de reconversión):

  • Sin temas habilitados: ~ 0,1 sec para construir el formulario y sus controles (medido por QueryPerformanceCounter), ~ 0,9 sec de clic en el elemento de menú a la forma bienestar se muestra (según lo medido por el cronómetro). En realidad, no perceptible para el usuario final.
  • Con temas habilitados: ~ 0,6 sec para construir el formulario y sus controles, ~ 1,5 sec de clic en el elemento de menú a la forma que se muestra. Muy perceptible para el usuario final.

consigo resultados similares tanto en un escritorio de Windows XP y Windows 7 VM.

Me doy cuenta de que hay medidas que podía tomar para mejorar este caso en particular (como la carga de perezosamente las pestañas del diálogo o rediseñar por completo), pero es típico para los temas que añaden un rendimiento notable éxito tan grande? ¿Hay algunas sugerencias fáciles para evitar este impacto en el rendimiento?

¿Fue útil?

Solución

Wow. No estoy seguro de que he tenido 200 controles en un único formulario. Aquí hay un par de sugerencias.

  • Esto podría ser un caso especial en el que desea crear el diálogo una vez cuando se inicia la aplicación y mostrarlo cuando sea necesario en lugar de crear en la demanda.

  • También me miro lo que está pasando en el constructor o evento OnShow. ¿Está poblando las listas en las que BeginUpdate / EndUpdate sería una ventaja?

  • ¿Tiene cualquier código en un evento OnResize o similar que es despedido más de una vez que pudiera esperar hasta después de crear la forma y ejecutarse una vez?

  • ¿Qué tipo de controles se utiliza? Si un tipo de control de pinta sobre todo poco a poco, es posible que pueda sustituirlo por uno que pinta con mayor rapidez. Esto requeriría algunas pruebas, sin embargo.

Otros consejos

Se podría tratar de activar el doublebuffering en los controles, hemos tenido la misma conducta, y fue un poco acelerado por este enfoque, pero no se acercó a la actuación antes de adoptar el soporte de aplicaciones tematización.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top