Pergunta

Ao tentar modernizar a aparência de uma aplicação C ++ Builder / Delphi de idade, eu habilitado temas visuais ( estilos visuais ) e foi surpreendido com apenas quanto de uma temas acerto de desempenho acrescentou. Por exemplo, para a nossa página de configuração primário (um 11-guia, de diálogo monstro 200-controle que não queremos que refazer agora, por razões de tempo de desenvolvimento e custos de reciclagem):

  • Sem temas activado: ~ 0,1 seg para construir a forma e os seus controlos (como medido por QueryPerformanceCounter), ~ 0,9 seg de clicar o item de menu para o ser formulário mostrado (como medido por cronometro). Não é realmente perceptível para o usuário final.
  • Com temas ativado: para construir o formulário e seus controles, ~ 1,5 seg de clicar no item de menu para o formulário que está sendo mostrado ~ 0,6 seg . Muito perceptível para o usuário final.

Eu obter resultados semelhantes, tanto a área de trabalho do Windows XP e Windows 7 VM.

Eu percebo que há passos que eu poderia tomar para melhorar neste caso particular (como carregar preguiçosamente guias do diálogo ou redesenhar completamente), mas é típico para temas para adicionar um sucesso notável de desempenho? Existem quaisquer sugestões fáceis para evitar este impacto na performance?

Foi útil?

Solução

Wow. Eu não tenho certeza que eu já tinha 200 controles em um único formulário. Aqui estão algumas sugestões.

  • Isso pode ser um caso especial em que você deseja criar o diálogo de uma vez quando o aplicativo é iniciado e exibi-lo quando necessário, em vez de criá-lo sob demanda.

  • Eu também olhar para o que está acontecendo no construtor ou evento OnShow. Você preencher qualquer lista onde BeginUpdate / EndUpdate seria uma vantagem?

  • Você tem qualquer código em um evento OnResize ou similar que é demitido mais de uma vez que poderia esperar até depois que o formulário é criado e ser executado uma vez?

  • Que tipo de controles você está usando? Se um tipo de tintas de controle particularmente lentamente, você pode ser capaz de substituí-lo por um que tintas mais rapidamente. Isso exigiria alguns testes, no entanto.

Outras dicas

Você poderia tentar ligar doublebuffering nos controles, tivemos muito o mesmo comportamento, e foi um pouco acelerado por esta abordagem, mas não se aproximou o desempenho antes de adotar o apoio theming aplicação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top