Velocidad al indexar cambia entre ambas ejecuciones

Velocidad al indexar cambia entre ambas ejecuciones

Postby diegopolverelli » Mon Dec 17, 2007 9:28 pm

Hola. He notado algo que me pasa con harbour / fwh. El tema es asi: abro un programa que tiene una dll con un browse, que muestra una base de datos de aproximadamente 50.000 registros; lo primero que hago es crear un indice segun este completo o no un campo de dicha base; lo raro es esto: cuando abro el programa por primera vez, me tarda aproximadamente 2 o 3 minutos (tiempo logico porque el index que uso puede ser pesado)... ahora: una vez que veo el browse con los registros, si cierro y abro enseguida el programa otra vez, me abre al instante... ¿puede ser que harbour reutilize indices si estos se abren con cierta diferencia de tiempo? al comienzo del programa hago un:

USE base shared
index on base->campo1+str(base->campo2,8) to c:\indice1 for base->facha=ctod(" / / ") .and. base->codigo<>' '

yo creia que este indice se generaba siempre, pero la diferencia de tiempo entre la primer ejecución y las subsiguientes (siempre que se hagan dentro del minuto posterior a la primer ejecucion) me hace pensar que esto no es asi. ¿alguien sabe como funciona realmente el indice? en este caso me gustaría saber si existe algun parametro para que en ciertos casos no me reutilice el que esta creado.

Gracias. Atte.
diegopolverelli
 
Posts: 149
Joined: Thu Jun 21, 2007 3:26 pm

Postby Antonio Linares » Tue Dec 18, 2007 1:10 am

Diego,

Es más probable que se trate de la propia caché de memoria de Windows:

Como la aplicación acaba de realizar el trabajo, y todos los elementos usados estan accesibles por Windows, el tiempo de acceso a ellos disminuye considerablemente.

De todas formas, ante la duda, prueba a borrar el índice con FErase() antes de usar la DBF
regards, saludos

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

Postby karinha » Tue Dec 18, 2007 3:32 pm

Hola, debes usar el comando: EVAL
Code: Select all  Expand view  RUN
INDEX ON TRANSCOD   TAG 01 TO ITRANS                                 ;
    EVAL ( oMeter1:Set( RecNo() ), CursorWait(), SysRefresh() )    ;
    EVERY 10
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7860
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 45 guests