Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: Bazooka en Marzo 12, 2015, 08:37:37 pm
-
Hola amigo tengo esta porcion de codigo y hace una iteracciones de unos 5000 a 10000 y me resulta muy lenta.
Se podria optimizar para que sea mas rapida ?
Private Sub CONTROL_TABLAS()
Dim N As Byte
Dim t As Long
Dim tabla As String
Dim mat() As String
'RECORRO TODAS LAS TABLAS en juegos
For t = 1 To UBound(TABLAS)
mat = Split(TABLAS(t).combinacion, "\")
If TABLAS(t).combinacion = "" Then
'nada vacia
Else
For N = 0 To UBound(mat())
If balls(mat(N)).Extraida Then
tabla = tabla & "1"
Else
tabla = tabla & "0"
End If
Next N
'
If ComparaBitPatron(tabla) Then
listGan(0).AddItem "Tabla N°" & t '& " -- " & tabla
listGan(0).ItemData(listGan(0).NewIndex) = t 'InfoCartonesGanadores(n)
' listGan(0).Tag = Me.lbCantadas.Caption
TERMINADO = True
End If
tabla = ""
End If
Next
End Sub
'#########################################################
Private Function ComparaBitPatron(P1 As String) As Boolean
Dim mat() As String
Dim N As Byte
For N = 1 To chPatron.UBound 'RECORRE TODOS LOS BOTONES Y CHEQUEA EL ESTADO DE VALUE
If chPatron(N).Value Then 'SI ESTA ACTIVO CHEUQEO EL BIT 1
If Mid(P1, N, 1) <> "1" Then Exit Function
End If
Next
ComparaBitPatron = True
End Function
Gracias !!!
-
Nada x aqui nada x allá....
-
HOLA!!!
Si, podes acelerar mucho el proceso, usando un array de Booleans en vez de la cadena de 0 y 1 asi te ahorras el MID que es uno de tus puntos criticos de velocidad y la concatenacion, el split y demas, inclusive aunque mantengas ese array en tandem con los que ya tenes deberia ir mucho mas rapido, hacelo y me decis.
GRACIAS POR LEER!!!