16 Y 32?

16 Y 32?

Postby leandro » Tue Aug 08, 2006 3:23 pm

Amigos del foro tengan todos buen día. :D

El problema es el siguiente: hace un tiempo hice una aplicacion en 16 bits, esta aplicación funciona correctamente y con una velocidad extraordinaria.

Pero resulta que migre a 32 bits y la aplicacion se puso superlenta.

Hice las pruebas de los tiempos y los resultados fueron los siguientes:

16 bits -> 45 segundos
32 bits -> 150 segundos

En ese proceso no hay problema, pero hay procesos que son mucho mas largos y se vuelve muy molesto para el usuario estar esperando 20 minutos a que termine un proceso que se puede hacer en 5 minutos.

Alguien me puede ayudar. Alguna sugerencia, por que sucede esto?, no si tenga algo que ver con las bases de datos, los indices.? Help?
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1676
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

16 y 32?

Postby leandro » Tue Aug 08, 2006 3:33 pm

Bueno amigos... Les cuento que estuve haciendo varias pruebas y llegue a la conclusion que el problema de la velocidad son los filtros..

Ya que me muestra la base de datos sin filtro de una manera rapida pero al efectuar el un filtro en cuando se pone terriblemente lenta la aplicación.

Yo ejecuto los filtros de la siguiente manera:

Code: Select all  Expand view  RUN

SELE MYDBF
SET FILT TO CONTRO="04"
DBGOTOP()
DO WHILE !EOF()

    .......

   SKIP
ENDDO

Se debe hacer de otra manera el mysql, o existe alguna otra solicion para este problema?
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1676
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Postby Antonio Linares » Tue Aug 08, 2006 4:10 pm

Leandro,

Has probado a hacer una llamada a SysRefresh() desde ese do while ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42127
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: 16 Y 32?

Postby jlaguilars » Tue Aug 08, 2006 11:52 pm

Hola, usando índices CDX puedes aplicar SCOPES, o puedes hacer TAGS condicionados, ésto agiliza de una manera muy significativa el proceso, que hasta el pelo se te volará.

Todo lo anterior es mucho mejor que usar 'hard code' por ejemplo:

IF control = '04' <-----

Intentalo y verás.

Saludos

José Luis
User avatar
jlaguilars
 
Posts: 15
Joined: Tue Oct 25, 2005 3:48 pm
Location: Tabasco, México

Postby carlos vargas » Wed Aug 09, 2006 3:12 pm

por experiencia que he tenido [x]harbor+fwh en manejos de tablas en mucho mas rapido en 32 bits que en 16 bits. :-)


donde es mas rapido el 16 bits es en la salida de datos en aplicaciones modo consola. :-( ahi [x]harbour solito es donde pierde. :-(


efectivamente el caso de los filtro con los rdd nativos se manejan de una forma mas lenta. pero cuando se usa el rdd ads (en modo local) los filtros son mucho mas rapidos que en el rdd nativo.

una sugerencia es que utilices los scope para realizar filtros a las tablas, de esta forma la seleccion es muchismo mas rapida.

salu2
carlos vargas
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: 16 y 32?

Postby Manuel Valdenebro » Wed Aug 09, 2006 4:17 pm

leandro wrote:SELE MYDBF
SET FILT TO CONTRO="04"
DBGOTOP()
DO WHILE !EOF()

.......

SKIP
ENDDO


Leandro,

En este caso, yo creo que el filtro está fuera de lugar:

1) La base MyDbf debe tener un índice por el campo control
2) SELE MYDBF
SET INDEX TO control
IF DBSEEK ("O4")
WHILE mydbf->CONTROL = "04"
.......

DBSKIP()
ENDD
ELSE // opcional
ALERT ("PONES LO QUE QUIERAS")
ENDI
Un saludo

Manuel
User avatar
Manuel Valdenebro
 
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Postby leandro » Wed Aug 09, 2006 4:21 pm

Amigos de foro muchas gracias por las respuestas...

Pero... y perdonen la ignorancia... la verdad nunca he usado los scopes ... alguien me puede regalar un ejemplillo. De antemano gracias.
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1676
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Postby Manuel Valdenebro » Wed Aug 09, 2006 4:34 pm

leandro wrote:Amigos de foro muchas gracias por las respuestas...

Pero... y perdonen la ignorancia... la verdad nunca he usado los scopes ... alguien me puede regalar un ejemplillo. De antemano gracias.


Seguramente al escribir tu ultimo mensaje, no has leido el mio (lo hemos escrito practicamente al unísono).

¿Los indices que usas son ntx ó cdx?
Un saludo

Manuel
User avatar
Manuel Valdenebro
 
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

cdx

Postby leandro » Thu Aug 10, 2006 12:03 am

Amigo uso indices CDX...

Gracias
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1676
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Postby Raymundo Islas M. » Thu Aug 10, 2006 12:18 am

Leandro

Como te comentan los demas compañeros, debes tener la base indexada sobre los campos que vas a aplicar el scope, ya despues aplicas esto :

0 -> inicio del rango
1 -> final del rango

o a lo que es igual a decir desde-hasta :wink:


// Para Activar el scope
PAQSDET->( OrdScope( 0, Str( nPaq2Set, 4 ) ) )
PAQSDET->( OrdScope( 1, Str( nPaq2Set, 4 ) ) )
PAQSDET->( DbGoTop() )

// Para desactivarlo
PAQSDET->( OrdScope( 0, NIL ) )
PAQSDET->( OrdScope( 1, NIL ) )
PAQSDET->( DbGoTop() )


Es importante que al final lo desactives, si no, tu sistema va a "ver" solo los registros que apliquen al ultimo scope activado y sobre todo la llave del indexado debe ser identica al del scope.

Espero te sirva

Saludos
FWH 10.6 + xHarbour + Borland 582
User avatar
Raymundo Islas M.
 
Posts: 592
Joined: Tue Mar 14, 2006 11:34 pm
Location: Acapulco, Gro. MEXICO


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 66 guests