Optimizar la velocidad
percibida
percibida
Suele ocurrir que la velocidad subjetiva de su aplicación tiene poco que ver
con la rapidez de ejecución del código. Para el usuario, una aplicación que se
inicie con rapidez, se dibuje con rapidez y proporcione mensajes de forma
continua da la sensación de ser más "garbosa" que una aplicación que se queda
"parada" mientras hace su trabajo. Puede usar una gama variada de técnicas para
aportar dicho "garbo" a su aplicación:
- Mantener los formularios ocultos pero cargados.
- Cargar los datos previamente.
- Usar cronómetros para trabajar en segundo plano.
- Usar indicadores de progreso.
- Acelerar el inicio de la aplicación.
Mantener los formularios ocultos pero cargados
Ocultar los formularios en lugar de descargarlos es un truco que viene de las
primeras épocas de Visual Basic 1.0, pero sigue siendo efectivo. El
inconveniente obvio de esta técnica es la cantidad de memoria que consumen los
formularios cargados, pero puede desestimarlo si puede permitirse el gasto en
memoria, ya que hacer que los formularios aparezcan con rapidez es de la máxima
importancia.
Cargar los datos previamente
También puede mejorar la velocidad aparente de la aplicación si carga los
datos previamente. Por ejemplo, si necesita ir al disco a cargar el primero de
varios archivos, ¿por qué no cargar todos los que pueda? A menos que los
archivos sean extremadamente pequeños, el usuario advertirá el retraso de todos
modos. Probablemente, el incremento del tiempo empleado en la carga de los
archivos adicionales pasará inadvertido y, además, no tendrá que hacer esperar
al usuario otra vez.
Usar cronómetros para trabajar en segundo plano
En algunas aplicaciones se puede realizar una cantidad considerable de
trabajo mientras se espera al usuario. La mejor manera de hacerlo es mediante un
control Timer. Utilice variables estáticas (o de nivel de módulo) para
hacer un seguimiento del progreso y ejecute una pequeña parte del trabajo cada
vez que salte el cronómetro. Si hace que la cantidad de trabajo realizado entre
cada evento del cronómetro sea muy pequeña, los usuarios no verán efecto alguno
sobre la respuesta de la aplicación y podrá cargar datos o efectuar otras tareas
que aceleren aún más la velocidad de su aplicación.
Para obtener más información Para aprender más
acerca del control temporizador, vea "Usar el control Timer" en "Usar los
controles estándar de Visual Basic". Para obtener la descripción del proceso en
segundo plano, vea "Interrumpir el procesamiento en segundo plano" en "Responder
a los eventos del mouse y del teclado".
Usar indicadores de progreso
Cuando no pueda evitar una larga espera en el programa, tiene que ofrecer al
usuario alguna indicación de que la aplicación no se ha quedado bloqueada.
Windows 95 utiliza una barra de progreso estándar para indicar esto a los
usuarios. Puede usar el control ProgressBar de los Controles comunes de
Microsoft Windows incluidos en la Edición Profesional y en la Edición
Empresarial de Visual Basic. Utilice DoEvents en los puntos estratégicos,
especialmente cada vez que actualice el valor del control ProgressBar,
para permitir que la aplicación dibuje mientras el usuario hace otras cosas.
Como mínimo admisible, debe presentar el cursor para indicar la espera
mediante el valor vbHourglass (11) de la propiedad MousePointer
del formulario (11).
Acelerar el inicio de la aplicación
La velocidad aparente tiene la máxima importancia cuando se inicia su
aplicación. La primera impresión de los usuarios sobre la velocidad de una
aplicación se mide por la rapidez con la que pueden hacer algo después de
seleccionar el nombre de la aplicación en el menú Inicio. Con las
diversas DLL de tiempo de ejecución que tienen que cargarse para Visual Basic
para aplicaciones, los controles ActiveX y todo lo demás, es inevitable un
pequeño retraso en cualquier aplicación. Sin embargo, puede hacer varias cosas
para dar respuesta al usuario de la forma más rápida posible:
- Usar Show en el evento Form_Load.
- Simplificar el formulario inicial.
- No cargar los módulos que no necesite.
- Ejecutar una pequeña aplicación de Visual Basic al iniciar para cargar
previamente los archivos DLL de tiempo de ejecución.
Usar Show en el evento Form_Load
Cuando un formulario se carga por primera vez, todo el código del evento
Form_Load se ejecuta antes de presentar el formulario. Puede alterar este
comportamiento si utiliza el método Show en el evento Form_Load para
ofrecer al usuario algo que mirar mientras se ejecuta el resto del código del
evento. Siga al método Show con DoEvents para asegurar que se
dibuja el formulario:
Código [Seleccionar]
Sub Form_Load()
Me.Show ' Presenta el formulario inicial.
DoEvents ' Asegura que se dibuja el
' formulario inicial.
Load MainForm ' Carga el formulario principal.
Unload Me ' Descarga el formulario inicial.
MainForm.Show ' Presenta el formulario principal.
End Sub
Simplificar el formulario inicial
Cuanto más complicado es un formulario, más tiempo necesita para cargarse.
Simplifique su formulario inicial. La mayor parte de las aplicaciones para
Microsoft Windows presentan al iniciarse una pantalla de copyright sencilla
(también conocida como pantalla de bienvenida); su aplicación puede hacer lo
mismo. Cuantos menos controles y cuanto menos código contiene el formulario
inicial, más rápido se cargará y aparecerá. Incluso aunque cargue otro más
complicado inmediatamente, el usuario sabrá que la aplicación se ha
iniciado.
En las aplicaciones grandes puede que le interese cargar previamente en el
inicio los formularios utilizados con mayor frecuencia para mostrarlos
instantáneamente cuando sea necesario. Una manera satisfactoria de hacer esto es
presentar una barra de progreso en el formulario inicial y actualizarla al
cargar cada uno de los demás formularios. Llame a DoEvents después de
cargar cada formulario para volver a dibujar el formulario inicial. En cuanto se
han cargado todos los formularios importantes, el formulario inicial puede
presentar el primero y descargarse a sí mismo. Por supuesto, cada formulario que
cargue ejecutará el código de su evento Form_Load, de modo que preste atención
para que esto no provoque problemas o retrasos excesivos.
No cargar los módulos que no necesite
Visual Basic carga los módulos de código cuando se solicita, en lugar de
todos a la vez al iniciar. Esto significa que si nunca llama a un procedimiento
de un módulo, ese módulo no se cargará nunca. Por el contrario, si el formulario
inicial llama a procedimientos de varios módulos, todos estos módulos se
cargarán mientras se inicia la aplicación, lo que la retrasa. Por tanto, debe
evitar llamar a procedimientos de otros módulos desde el formulario inicial.
Ejecutar una pequeña aplicación de Visual Basic al iniciar para cargar los
archivos DLL de tiempo de ejecución
Gran parte del tiempo que se requiere para iniciar una aplicación de Visual
Basic se emplea en cargar los archivos DLL de tiempo de ejecución para Visual
Basic, ActiveX y los controles ActiveX. Desde luego, si estos ya estuvieran
cargados, no se emplearía tanto tiempo. De esta forma los usuarios verán que la
aplicación se inicia con más rapidez si ya se está ejecutando otra aplicación
que utiliza alguna o todas estas DLL.
Una forma de aumentar el rendimiento inicial de las aplicaciones de forma
significativa es proporcionar otra pequeña aplicación que se ejecute siempre.
Por ejemplo, puede escribir una pequeña aplicación para presentar un calendario
e instalarla en el grupo Inicio de Windows. De este modo, se cargará
automáticamente al iniciar el sistema y, además de ser útil por sí misma,
asegura que se carguen las diversas DLL de tiempo ejecución de Visual Basic.
Finalmente, con la Edición Profesional y la Edición Empresarial de Visual
Basic puede dividir su aplicación en un esqueleto de aplicación principal y
varios componentes ejecutables o varias DLL. Una aplicación principal pequeña se
cargará con más rapidez y después podrá cargar las otras partes cuando las
necesite.