Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Veehmot en 28 de Octubre de 2006, 03:25:50 PM

Título: [VB6] Performance
Publicado por: Veehmot en 28 de Octubre de 2006, 03:25:50 PM
Algunas dudas con respecto a la performance..
Para copiar un array, que es lo mas rapido?

' esto
Array1 = Array2
' o esto?
Redim Array1(LBound(Array2) To Ubound(Array2))
Call CopyMemory(Array1(LBound(Array1)),Array2(LBound(Array1)), Ubound(Array2) - LBound(Array2) + 1)


Porque escuche hablar de una copia verbatim.. no se que significa, alguien me puede explicar?

Tambien, queria sabre si se gana performance visible el cambiar las igualaciones del tipo

If (String1 = String2) Then ...
' por
If (strcompi(String1,String2) = 0) Then...


Otro ejemplo, el Len()

If Len(String) = 0 Then ...
' por
If lstrlen(String) = 0 Then...


Ademas, queria saber si alguien me recomienda un link donde expliquen un poco estas cosas... sobre que sucede abajo de Visual Basic sin que nosotros lo sepamos..

Eso es todo, muchas gracias!
Título: [VB6] Performance
Publicado por: bnl en 28 de Octubre de 2006, 03:36:12 PM
Ni idea.
Yo cuando tengo dudas de rendimiento lo que hago es ejecutar por separado las 2 (o mas opciones) muchisimas veces dentro de un bucle y tomar tiempos.
Asi que en 1 minuto puedes obtener la respuesta empiricamente.
Título: [VB6] Performance
Publicado por: Tavo en 28 de Octubre de 2006, 04:13:54 PM
Hola Veehmont!, mira, lo que podes hacer es provar las dos. En el primer caso, creo que el CopyMemory deberia andar mas rapido pero... viniendo de VB nunca se sabe.
Sobre lo de lstrlen() y Len(), no le encuentro mucha diferencia.
El strcomp() es una buena funcion, yo la estoy empezando a utilizar para comparaciones de dos strings

Saludos!
Título: [VB6] Performance
Publicado por: Veehmot en 28 de Octubre de 2006, 04:35:10 PM
Cita de: "bnl"Ni idea.
Yo cuando tengo dudas de rendimiento lo que hago es ejecutar por separado las 2 (o mas opciones) muchisimas veces dentro de un bucle y tomar tiempos.
Asi que en 1 minuto puedes obtener la respuesta empiricamente.

Claro, eso me temi. Ahora, otro factor a tener en cuenta, es el consumo de RAM. ¿Algun metodo para evaluar el consumo RAM de las funciones?
Título: [VB6] Performance
Publicado por: bnl en 28 de Octubre de 2006, 04:52:35 PM
Hay herramientas que te permiten medir el consumo de memoria y mil cosas mas, pero no conozco ninguna. Recuerdo que no hace mucho en un post alguien hablo de algunas herramientas para medirlo, busca un poco en el foro y seguro q encuentras el post.

El consumo de memoria total de un proceso lo puedes ver en el administrador de taread de windows.

Saludos
Título: [VB6] Performance
Publicado por: Veehmot en 29 de Octubre de 2006, 12:10:29 AM
Ok, compare la comparacion de strings.. y realmente me sorprendio que el de VB (string = string) es mas rapido que el lstrcmp(string,string)
Título: [VB6] Performance
Publicado por: Tavo en 29 de Octubre de 2006, 06:30:49 PM
En VB desconozco alguna funcion para medir la memoria, pero una opcion es crear una DLL en VB y ahy poner varias funciones, despues hacer un programa en C/C++ que las use y calcule la memoria utilizada con el sizeof().
Es lo que se me ocurre, pero igual debe existir alguna herramienta...
Título: [VB6] Performance
Publicado por: Marci en 30 de Octubre de 2006, 12:48:18 PM
Para ver el consumo de memoria: http://www.recursosvisualbasic.com.ar/htm/tutoriales/tutorial-api3.htm