PDA

Ver la versión completa : Velocidad de VB



oRa
31-01-2006, 07:04
mm tengo un apregunta
Un gringo osea no en vedad un ingles me dijo esto
que este codigo (para un boton)

Private Sub Command2_Click()
Dim i As Long, StrS As String
For i = 0 To 100000
StrS = StrS & "."
Next i
MsgBox "Finished making a string of " & Len(StrS) & " Characters"
End Sub

cuando uno ejecuta el exe y apreta el boton se demora aprox 10 segundos en hacer 100000
pero me dijo que este otro

Private Sub Command1_Click()
Dim i As Long, StrS As String
StrS = Space(100000)
For i = 1 To 100000
Mid(StrS, i, 1) = "."
Next i
MsgBox "Finished making a string of " & Len(StrS) & " Characters"
End Sub

lo hacia mas rapido me dijo que era algo asi como la velocidad de c++ pero en visual basic ya que crea el espacio que nesesita antes de hacer la funcion... algo asi no entendi muy bien ^^ me lo dijo en ingles

SxR
31-01-2006, 14:30
Pues la verdad es que tendrías que comparar a nivel ensamblador cuantas instrucciones y espacios de memoria ocupa montar las dos versiones. Aunque hacen lo mismo hay formas y formas de hacer las cosas. Lo que no me cabe en la cabeza es pq la 2ª tarda menos si ocupa mas memoria.... supongo que es pq la segunda hace todo en memoria y la primera tiene que ir guardando valores temporales, pero es una suposición.

Marchi
31-01-2006, 17:51
En el primer caso cada vez que agrega "." a la cadena tiene que agrandarla en una posicion, pero en el segundo caso la longitud de la cadena se fija de una sola vez y despues se le van cambiando los espacion por "."s . O sea que la diferencia esta en la cantidad de operaciones en el bucle, en un caso agranda una cadena en una posicion y agrega un "." mientras que en el otro solo agrega un punto, si se tiene en cuenta que son 100000 veces las que sucede....

Chau saludos