Cuantas Veces Se Repite Una Cadena En Otra.


Ir a la página Anterior  1, 2, 3

Objetivo: Re: Cuantas Veces Se Repite Una Cadena En Otra.
tercoIDE escribió: [Ver mensaje]
vuott escribió: [Ver mensaje]
tincho escribió: [Ver mensaje]
supongo que C siempre es mas eficiente que gambas.

...más rapido.

mucho mas, C es 10 veces mas rapido que gambas + Fast y 1000 veces que gambas solo

¿Que es gambas + Fast?
Saludos.

Perfil MP  
Objetivo: Re: Cuantas Veces Se Repite Una Cadena En Otra.
http://gambaswiki.org/wiki/doc/jit

traduce codigo gambas a C en runtime y lo corre de esa manera

Perfil MP  
Objetivo: Re: Cuantas Veces Se Repite Una Cadena En Otra.
tercoIDE escribió: [Ver mensaje]
http://gambaswiki.org/wiki/doc/jit
traduce codigo gambas a C en runtime y lo corre de esa manera

Ok, gracias.

Perfil MP  
Objetivo: Re: Cuantas Veces Se Repite Una Cadena En Otra.
...y no quiero hablar de la velocidad de Assembly !

Perfil MP  
Objetivo: Re: Cuantas Veces Se Repite Una Cadena En Otra.
vuott escribió: [Ver mensaje]

Por ejemplo, creando una función externa:

Library "/tmp/lib_Occorrenze"

' int Occorrenze(const char *stringa, const char *substr)
' Ritorna il numero di occorrenze di una sottostringa all'interno di una stringa.
Private Extern Occorrenze(stringa As String, substr As String) As Integer


Public Sub Main()

Dim s, su As String
Dim i As Integer

' Va a generare l'apposita libreria dinamica condivisa esterna:
CreaSo()

' La stringa è la seguente:
s = "mela pera arancia limone pera banana noce mela fico pera noce"

' La sottostringa di cui conoscere il numero di occorrenze:
su = "pera"

i = Occorrenze(s, su)

Print "Numero occorrenze della sottostringa '"; su; "': "; i

End


Private Procedure CreaSo()

' Imposta il sorgente della libreria dinamica condivisa esterna:
File.Save("/tmp/lib_Occorrenze.c", "#include <string>" &
"\n\n" &
"int Occorrenze(const char *stringa, const char *substr) {" &
"\n\n" &
" int i = 0;" &
"\n\n" &
" do {\n" &
" stringa = strstr (stringa, substr);\n" &
" if (stringa) {;\n" &
" ++stringa;\n" &
" ++i;\n" &
" }else{\n break;\n }" &
"\n }\n" &
" while (stringa);" &
"\n\n" &
" return i;\n\n}")


' Genera la libreria dinamica condivisa esterna:
Shell "gcc -o /tmp/lib_Occorrenze.so /tmp/lib_Occorrenze.c -shared -fPIC" Wait

End


Esto que hizo el topo, es EXACTAMENTE como funciona OpenGL hoy en dia:

La CPU le envia codigo C en forma de String a la GPU para que se ocupe de los graficos con su poder de procesamiento, liberando a la cpu para otras tareas. Estoy estudiando el tema para aplicarlo al CAD

Perfil MP  
Objetivo: Re: Cuantas Veces Se Repite Una Cadena En Otra.
TercoIde:


Citar:
Estoy estudiando el tema para aplicarlo al CAD


Ohhh.... super interesante....

Objetivo: Re: Cuantas Veces Se Repite Una Cadena En Otra.
Aquí hay una versión simple.
Public Sub Form_Open()

Print StringCount("Hello World Hello World Hello World Hello World", "WORLD")

End

Public Sub StringCount(sString As String, sToFind As String) As Integer

Dim iPos, iCount As Integer

Do
iPos = InStr(sString, sToFind, iPos, gb.IgnoreCase)
If iPos Then iPos += Len(sToFind) Else Return iCount
Inc iCount
Loop

End

Perfil MP  
Objetivo: Re: Cuantas Veces Se Repite Una Cadena En Otra.
cogier escribió: [Ver mensaje]
Aquí hay una versión simple.


Yo, sin embargo, introduciría estas modificaciones:
Public Sub Main()

Print StringCount("Hello World Hello World Hello World Hello World", "WORLD")

End

Public Sub StringCount(sString As String, sToFind As String) As Integer

Dim iPos, iCount As Integer

Repeat
iPos = InStr(sString, sToFind, iPos, gb.IgnoreCase)
If iPos Then
Inc iPos
Inc iCount
Endif
Until iPos == 0

Return iCount

End

última edición por vuott el Lunes, 11 May 2020, 16:03; editado 1 vez
Perfil MP  
Ir a la página Anterior  1, 2, 3

Página 3 de 3


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4272s (PHP: -75% SQL: 175%)
Consultas SQL: 45 - Debug off - GZIP Activado