Autor Tema: Concatenar Strings Super Rapido (StringBuilder)  (Leído 28164 veces)

0 Usuarios y 1 Visitante están viendo este tema.

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Concatenar Strings Super Rapido (StringBuilder)
« Respuesta #30 en: Octubre 12, 2011, 10:44:39 pm »
Al compilar y ponerle 1 millon me da estos, de acuerdo al orden del boton.

CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

raul338

  • Terabyte
  • *****
  • Mensajes: 894
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:Concatenar Strings Super Rapido (StringBuilder)
« Respuesta #31 en: Octubre 12, 2011, 10:57:31 pm »
1904,9929777759
5368,62144983104

1944,91860443481
5343,09827969945

:D con 10.000.000 de vueltas, el cStringBuilder falla al segundo, y cConcatenator falla despues de un tieeeempo :P
« última modificación: Octubre 12, 2011, 11:12:49 pm por raul338 »

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Re:Concatenar Strings Super Rapido (StringBuilder)
« Respuesta #32 en: Octubre 12, 2011, 10:59:15 pm »
@raul338: como haces??? aca ni con OC y nitrogeno liquido logro eso
me pasa que con el string builder y 10millones de pasadas, explota el soft (error groso con el cartel de windos)... pero con el concatenator, tarda sus buenos segundos, y aparece el error de vb Memoria insuficiente...
auqnue puede ser random, como dijo seba
« última modificación: Octubre 12, 2011, 11:04:07 pm por coco »
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion

raul338

  • Terabyte
  • *****
  • Mensajes: 894
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:Concatenar Strings Super Rapido (StringBuilder)
« Respuesta #33 en: Octubre 12, 2011, 11:09:26 pm »
el FAIL, cambie un solo bucle, ahora arreglo x'D

seba123neo

  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:Concatenar Strings Super Rapido (StringBuilder)
« Respuesta #34 en: Octubre 12, 2011, 11:31:07 pm »
@raul338: como haces??? aca ni con OC y nitrogeno liquido logro eso
me pasa que con el string builder y 10millones de pasadas, explota el soft (error groso con el cartel de windos)... pero con el concatenator, tarda sus buenos segundos, y aparece el error de vb Memoria insuficiente...
auqnue puede ser random, como dijo seba

si a mi tambien me crashea y compilado sale el cartel de windows. pero queria estar seguro de eso, de que a mayor cadenas es mejor el cStringBuilder, y a menos son casi iguales, a mi te juro y pudo poner un video que a veces tardan lo mismo y otras veces (muy raras) gana el cStringBuilder.

saludos.

Psyke1

  • Megabyte
  • ***
  • Mensajes: 130
  • Reputación: +11/-7
  • VBManiac
    • Ver Perfil
    • h-Sec
Re:Concatenar Strings Super Rapido (StringBuilder)
« Respuesta #35 en: Octubre 13, 2011, 06:57:43 am »
Bueno, creo que ha quedado claro que por ahora para cadenas largas es mejor el StringBuilder. :'(
Tengo una nueva idea a ver que tal... ;)
Por cierto seba: ¿Dónde encontraste esa clase?
Me interesa mucho. :D

DoEvents! :P

seba123neo

  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:Concatenar Strings Super Rapido (StringBuilder)
« Respuesta #36 en: Octubre 13, 2011, 07:00:58 pm »
me tope con esta clase cuando estaba buscando un parseador de JSON para vb, y el proyecto que baje tenia esta clase, pero si buscas la api que usa, la encontras en varios lados. yo la tengo usando ya en un proyecto que importa miles de registros y anda impresionante.

pero esperen, para los que les gusta mas todavia, encontre otra que tarda LA MITAD de lo que tarda esta clase...igualmente yo ya lo tengo usando con esta calse y no la voy a cambiar por esta que es mas rapida, no usa api, usa MidB$.

despues la publico con resultados.

Psyke1

  • Megabyte
  • ***
  • Mensajes: 130
  • Reputación: +11/-7
  • VBManiac
    • Ver Perfil
    • h-Sec
Re:Concatenar Strings Super Rapido (StringBuilder)
« Respuesta #37 en: Octubre 15, 2011, 05:00:55 pm »
No quiero ser pesado... pero encontré la manera de superar a StringBuilder incluso con bucles laaargos.

Descarga del proyecto con mi clase actualizada:
Código: [Seleccionar]
http://www.mediafire.com/?8y83xtdg29p3en3
Resultado (1.000.000 vueltas), le saco casi la mitad de tiempo.


DoEvents! :P

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Concatenar Strings Super Rapido (StringBuilder)
« Respuesta #38 en: Octubre 15, 2011, 05:32:06 pm »
Super rapido es todo es a la mitad del tiempo, De acuerdo al orden del boton.

668,798750618205
360,106002695255
632,348110103271
366,55267136063
629,386064110521
364,428015312464
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

seba123neo

  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:Concatenar Strings Super Rapido (StringBuilder)
« Respuesta #39 en: Octubre 15, 2011, 05:58:34 pm »
barbaro, aca publico la que dije que tambien le saca la mitad a la cStringuilder sin usar api, usando MidB$ (se llama cFastCat), tambien hice test con las 3 clases, 5 repeticiones cada una.

en verdad la nueva cConcatenator de Psyke1 le saca casi la mitad a cStringBuilder, pero esta nueva cFastCat le saca casi la mitad a cConcatenator.



el link de la clase cFastCat, esta en un proyecto de PSC que compara las diferentes formas de concatenacion:

Fastest String Concatenation Yet In Visual Basic

saludos.




Psyke1

  • Megabyte
  • ***
  • Mensajes: 130
  • Reputación: +11/-7
  • VBManiac
    • Ver Perfil
    • h-Sec
Re:Concatenar Strings Super Rapido (StringBuilder)
« Respuesta #40 en: Octubre 15, 2011, 09:25:41 pm »
Que interesante seba!

Pero no me doy por vencido, mañana pruebo otra cosa... hmmmm

DoEvents! :P

79137913

  • Megabyte
  • ***
  • Mensajes: 185
  • Reputación: +21/-4
  • 4 Esquinas
    • Ver Perfil
    • Eco.Resumen Resumenes Cs. Economicas
Re:Concatenar Strings Super Rapido (StringBuilder)
« Respuesta #41 en: Octubre 19, 2011, 12:13:07 pm »
HOLA!!!

Perdon por revivir...

Aca arme un codigo con esa idea de MidB, despues me dicen que tan rapido le fue?

Código: [Seleccionar]
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!!!
« última modificación: Octubre 19, 2011, 12:20:06 pm por 79137913 »
"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*                                                          Resumenes Cs.Economicas

Waldo

  • Gigabyte
  • ****
  • Mensajes: 264
  • Reputación: +22/-0
    • Ver Perfil
Re:Concatenar Strings Super Rapido (StringBuilder)
« Respuesta #42 en: Octubre 20, 2014, 10:41:19 am »
Perdon por revivir este post, pero ya paso mucho tiempo y los links no funcionan :(
Alguien me puede pasar el codigo de las clases que se hablaba en el hilo?

Muchas gracias

seba123neo

  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:Concatenar Strings Super Rapido (StringBuilder)
« Respuesta #43 en: Octubre 30, 2014, 11:22:57 pm »
Perdon por revivir este post, pero ya paso mucho tiempo y los links no funcionan :(
Alguien me puede pasar el codigo de las clases que se hablaba en el hilo?

Muchas gracias

ya corregi el link. gracias por avisar.  8)

Waldo

  • Gigabyte
  • ****
  • Mensajes: 264
  • Reputación: +22/-0
    • Ver Perfil
Re:Concatenar Strings Super Rapido (StringBuilder)
« Respuesta #44 en: Octubre 31, 2014, 09:54:22 am »
Hola Seba, hice pruebas y llegué a la conclusion que las diferentes clases, o formas de concatenar, gana una u otra segun el largo.

string a concatenar: 'http://vbaccelerator.com'

valores en mSeg

Veces       Std de VB    VbAcc     otra (movememory)
100          0/1                 0              8
1000        11                  1              12
10000       380                22           25
100000       --               1045         60


Conclusion mia, como creo que nunca voy a concatenar mas de 1000 veces para mi gana la de VbAccelerator