Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Select slow
Message
De
07/09/2006 10:06:54
Mike Yearwood
Toronto, Ontario, Canada
 
 
À
07/09/2006 09:50:56
Suhas Hegde
Dental Surgeon
Sirsi, Inde
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Titre:
Versions des environnements
Visual FoxPro:
VFP 6 SP5
Divers
Thread ID:
01149759
Message ID:
01151782
Vues:
39
>>>>>>>>
>>>>>>>>An Index caching overload effect ?
>>>>>>>>
>>>>>>>>try, and post this time:
>>>>>>>>
>>>>>>>>use bhav_data
>>>>>>>>SET EXACT ON
>>>>>>>>=lOOKUP(symbol, m.THISVALUE,symbol)
>>>>>>>>SELECT date,open,high,low,close,tottrdqty,sma9,sma12,sma26 FROM bhav_data;
>>>>>>>>where symbol = m.THISVALUE  INTO CURSOR tempDETAIL nofilter
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>Minimum time taken is 9 secs
>>>>>>>
>>>>>>>but if i run the second time with the same value in thisvalue it runs under .5 secs
>>>>>>>
>>>>>>>like
>>>>>>>
>>>>>>>First run with thisvalue = 'ABCD' -- 10 secs
>>>>>>>second run with thisvalue = 'dfsd' -- 10 secs
>>>>>>>third run with thisvalue = 'ABCD' -- .5 secs
>>>>>>>
>>>>>>>that is wilhout cloing the table
>>>>>>
>>>>>>this confirm the caching effect.
>>>>>>
>>>>>>try
>>>>>>
>>>>>>SELECT date,open,high,low,close,tottrdqty,sma9,sma12,sma26 FROM bhav_data;
>>>>>>where symbol = m.THISVALUE AND symbol = symbol INTO CURSOR tempDETAIL nofilter
>>>>>>
>>>>>
>>>>>No the result is the same. the above doesnt make any difference.
>>>>>Can u hilight what u mean by cashing effect ? what is going on ?
>>>>
>>>>VFP load data into an internal cache ( a buffer memory).
>>>>
>>>>try this ( it minimize and clear the buffer, then the execution time is more stable ?):
>>>>
>>>>
>>>>SYS(3050, 1, 1) minimize the buffer size
>>>>
>>>>sys(1104) && unload the buffer
>>>>SELECT .... WHERE .. = m.thisvalue INTO ...
>>>>
>>>
>>>
>>>No help
>>>same effect
>>
>>
>>>I put the SYS(3050, 1, 1) in init of the form or should i put it before the query ?
>>
>>One time is sufficient
>>>sys(1104)
>>>SELECT .... WHERE .. = m.thisvalue INTO
>>
>>Rerun VFP, and post the output of this:
>>
>>for k=1 to 5
>>  sys(1104)
>>  t1=seconds()
>>  SELECT .... WHERE .. = m.thisvalue INTO
>>  ? seconds()-m.t1
>>next
>>
>
>
>returned
>
>9.838
>0.0339
>0.0149
>0.0149
>0.017


9.838 - VFP reads data from hard drive into RAM.

.0339 - VFP uses data in RAM - CACHE - not read from hard drive.
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform