Pregunta

¿Qué hacer para aumentar la velocidad de inicio (o para disminuir el tiempo de inicio) de su aplicación Delphi?

Aparte de aplicación específica, hay un truco estándar que siempre funciona?

Nota: No estoy hablando de algoritmos rápidos o los gustos. Sólo el aumento de rendimiento en el arranque, en términos de velocidad.

¿Fue útil?

Solución

Trate de hacer lo menos posible en el evento OnCreate de su forma principal . Más bien mover algunos de inicialización a un método diferente y hacerlo una vez que el formulario se muestra al usuario. Un indicador de que la aplicación está ocupada con un cursor de ratón ocupado va un largo camino.

Los experimentos realizados demuestran que si se toma la misma aplicación exacta y simplemente agrega una notificación de inicio de ella, los usuarios perciben que en realidad aplicación como la puesta en marcha más rápido!

Aparte de eso que puede hacer las cosas habituales, como excluir la información de depuración y permitir la optimización en el compilador.

Además de eso, no crear automáticamente todas sus formas . Crearlos dinámicamente a medida que los necesite.

Otros consejos

En las opciones del proyecto, no se cree automáticamente todas sus formas en la delantera. Crear y liberar cuando sea necesario.

Bueno, como Argalatyr sugirió que cambie de comentario a una respuesta por separado:

Como una extensión de la respuesta de "no crear automáticamente las formas" (que será muy eficaz por sí mismo) Sugiero a retrasar la apertura de conexiones a bases de datos, Internet, servidores COM y cualquier dispositivo periférico hasta que lo necesite en primer lugar.

Hay tres cosas que suceden antes de que aparezca el formulario:

  1. Todos los bloques 'inicialización' en todas las unidades se ejecutan en la "primera vista" orden.
  2. Todas las formas creadas automáticamente se crean (cargar desde archivos DFM y su controlador OnCreate se llama)
  3. se visualiza forma principal (OnShow y AlActivar se llaman).

Como otros han señalado, debe crear automáticamente sólo un pequeño número de formas (especialmente si son formas complicadas con una gran cantidad de componentes) y no debe poner procesamiento muy largo en los eventos OnCreate de esas formas. Si, por casualidad, su principal forma es muy complicado, debe rediseñar. Una posibilidad es dividir forma principal en varias tramas que se cargan bajo demanda.

También es posible que uno de los bloques de inicialización es tomar algún tiempo para ejecutar. Para verificarlo, poner un punto de interrupción en la primera línea del programa (bloque principal 'begin..end' en el archivo .dpr) e iniciar el programa. Todo el bloque de inicialización se ejecutará a continuación, el punto de corte se detendrá la ejecución.

De forma similar puede paso (F8) en el programa principal -. Verá cuánto tiempo se necesita para que se cree cada forma de creación automática

Mostrar una pantalla de bienvenida, para que la gente no se dará cuenta de los largos tiempos de arranque:.)

código más rápido - es el código, que nunca se. Bastante obvio, de verdad;)

El despliegue de la aplicación puede (y por lo general no!) Pasar en formas en que el desarrollador no puede haber considerado. En mi experiencia, esto genera más problemas de rendimiento que alguien quiera.

Un cuello de botella común es el acceso a archivos - un archivo de configuración, archivos ini que se requiere para iniciar la aplicación puede funcionar bien en un ordenador de desarrollo, sino que se realice abismalmente en diferentes situaciones de despliegue. Del mismo modo, el registro de aplicación puede impedir el rendimiento - ya sea por razones de acceso a archivos o log de crecimiento de archivo.

Lo que veo tan a menudo son aplicaciones de cliente enriquecidas desplegados en un entorno Citrix, o en una unidad de red compartida, donde el equipo de infraestructura decide que el usuario los archivos temporales o archivos personales se almacenan en un lugar que la aplicación encuentra problemas con, y esto lleva a problemas de rendimiento o estabilidad.

Otra cuestión a menudo veo que afecta el rendimiento de aplicaciones es el método utilizado en la importación y exportación de datos a los ficheros. Comúnmente en aplicaciones de negocio de Delphi veo funciones de exportación que trabajan fuera de conjuntos de datos - la iteración y la escritura en el archivo. Considere el método utilizado para escribir en el archivo, considere la memoria disponible, tenga en cuenta que la 'carpeta' está escribiendo / leyendo de puede ser local a la máquina, o puede estar en un servidor remoto.

Un desarrollador puede argumentar que se trata de problemas de instalación, fuera del alcance de su preocupación. Yo suelo ver muchos ciclos de análisis revelador en este tipo de problema antes de que se identifica como un 'tema de la infraestructura'.

  • Lo primero que debe hacer es limpiar automóviles Lista de las formas creadas (busque Proyecto Opciones). Crear formularios sobre la marcha cuando sea necesario, especialmente si el aplicación utiliza la conexión de base de datos (Módulo de datos) o formas que incluyen un uso intensivo de los controles.
  • Considere el uso de herencia de formularios también para disminuir el tamaño exe (uso de recursos se mimized)
  • disminuir el número de formas y de combinación de funcionalidad similar o relacionada en forma única

Ponga las tareas en ejecución largos (conexiones de bases de datos abiertas, conectar con el servidor de aplicaciones, etc) que tienen que ser realizadas en el arranque en un hilo. Cualquier funcionalidad que depende de estas tareas están desactivados hasta que se haga el hilo.

Es un poco tramposo, sin embargo. La forma principal viene de inmediato, sino que sólo está dando la apariencia de tiempo de arranque más rápido.

Comprimir el ejecutable y cualquier DLL utilizando algo así como ASPack o UPX . tiempo de descompresión está más que compensado por el tiempo de carga más rápido.

UPX fue utilizado como un ejemplo de cómo cargar Firefox más rápido.

Tenga en cuenta que hay desventajas href="https://stackoverflow.com/questions/353634"> a exe compresión.

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