[SOURCE] cConcatenar7913

Iniciado por 79137913, 19 Octubre 2011, 17:37 PM

0 Miembros y 2 Visitantes están viendo este tema.

79137913

HOLA!!!

Sinceramente no se si sera tan rapida como la de Psyke1 pero me agrado y arme una, alguien haga un test :O

Código (vb) [Seleccionar]
'cConcatenar7913.cls
Private Memoria As String
Private Capacidad As Long
Private TAM As Long

Private Sub Class_Initialize()
        Capacidad = 65536
        Memoria = Space$(65536)
        TAM = 0
End Sub

Public Sub Agregar(ByRef STR As String)
    Dim actTAM As Long
        actTAM = LenB(STR) / 2
        Do While actTAM > Capacidad - TAM
            Memoria = Memoria & Space$(Capacidad)
            Capacidad = Capacidad * 2
        Loop
        MidB$(Memoria, TAM + TAM + 2) = STR
        TAM = TAM + actTAM
End Sub

Public Property Get CerrarSTR() As String
        CerrarSTR = LeftB$(Memoria, TAM + TAM)
        Call Class_Initialize
        Debug.Print "Se ha borrado el string viejo y creado uno en blanco"
End Property

Public Property Get TamañoACT() As Long
        TamanoACT = TAM
End Property


GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*

Psyke1

Jajajajaja
¡Así me gusta! ¡Buen trabajo!
Yo estuve peleando con todo este tema hace poco, llegué a hacer mi clase más rápida, pero sebas123neo encontró una que es humanamente imposible de superar.
La idea que usa el hombre este es muy interesante, combinando mi manera de hacerlo con la que haces tú.
Hace un array de strings y va guardando el string en "páginas", muy interesante.
Aquí el código comparando con diferentes métodos, la diferencia es más que notable.
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=37141&lngWId=1

PD: Como no haga Karcrack algo en ASMinline no se me ocurre una forma de hacerlo mejor... ;D

DoEvents! :P

BlackZeroX

.
El buffer de paginas es estatico?... Se me ocurrio algo...

Dulces Lunas!¡.
The Dark Shadow is my passion.

79137913

HOLA!!!

Mmm no se si te referis al buffer que uso yo, que por cierto es la variable memoria.

El buffer mio se aumenta la primera vez de 0 a 64kb y luego va multiplicandose por 2 cada vez que se supera, lo cual si es una cadena larga mejora el rendimiento ya que se cambia el buffer menos veces.

GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*

BlackZeroX

.
El comentario era para Psyke1 pero ya revise el codigo de su enlace xP.

Dulces Lunas!¡.
The Dark Shadow is my passion.

Psyke1

@Black
¿Se te ocurre algo mejor?

PD: Acabar contigo un proyecto es imposible. :P

DoEvents! :P

BlackZeroX

#6
.
No ya no se me ocurrieron usar listas enlazadas para evitar usar el array pero no tiene caso...

P.D.: Me quede esperando una solucion por tu parte :-\ de lo contrario lo terminaria yo solo :silbar: digo ya tengo la mitad del troyecto terminado, inclusive toque la parte del proyecto que te correspondia...

Dulces Lunas!¡.
The Dark Shadow is my passion.