Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Xbase commands Vrs Sql commands
Message
De
10/05/2005 17:53:29
 
 
À
10/05/2005 16:20:58
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Versions des environnements
Visual FoxPro:
VFP 6 SP5
Database:
Visual FoxPro
Divers
Thread ID:
01011885
Message ID:
01012630
Vues:
19
>>You used VFP9 and you think m. is not important!
>
>Another very simple testrun:
>

Olaf, try this:
LOCAL lnCount, lnMemvar, tt

CREATE CURSOR TT (F L NOT NULL )

FOR k=1 TO 254
	SELECT *,.t. FROM tt INTO CURSOR tt
NEXT
? FCOUNT()

FOR k=1 TO 10000000
NEXT

tt=SECONDS()
FOR lnCount=1 TO 1000000
    lnMemvar = lnMemvar
    lnMemvar = lnMemvar
    lnMemvar = lnMemvar
    lnMemvar = lnMemvar
    lnMemvar = lnMemvar
    lnMemvar = lnMemvar
    lnMemvar = lnMemvar
    lnMemvar = lnMemvar
    lnMemvar = lnMemvar
    lnMemvar = lnMemvar
    lnMemvar = lnMemvar
    lnMemvar = lnMemvar
    lnMemvar = lnMemvar
    lnMemvar = lnMemvar
    lnMemvar = lnMemvar
    lnMemvar = lnMemvar
    lnMemvar = lnMemvar
    lnMemvar = lnMemvar
    lnMemvar = lnMemvar
    lnMemvar = lnMemvar
    lnMemvar = lnMemvar
    lnMemvar = lnMemvar
    lnMemvar = lnMemvar
    lnMemvar = lnMemvar
    lnMemvar = lnMemvar
    lnMemvar = lnMemvar
ENDFOR lnCount
?SECONDS()-tt

tt=SECONDS()
FOR lnCount=1 TO 1000000
    lnMemvar =  m.lnMemvar
    lnMemvar =  m.lnMemvar
    lnMemvar =  m.lnMemvar
    lnMemvar =  m.lnMemvar
    lnMemvar =  m.lnMemvar
    lnMemvar =  m.lnMemvar
    lnMemvar =  m.lnMemvar
    lnMemvar =  m.lnMemvar
    lnMemvar =  m.lnMemvar
    lnMemvar =  m.lnMemvar
    lnMemvar =  m.lnMemvar
    lnMemvar =  m.lnMemvar
    lnMemvar =  m.lnMemvar
    lnMemvar =  m.lnMemvar
    lnMemvar =  m.lnMemvar
    lnMemvar =  m.lnMemvar
    lnMemvar =  m.lnMemvar
    lnMemvar =  m.lnMemvar
    lnMemvar =  m.lnMemvar
    lnMemvar =  m.lnMemvar
    lnMemvar =  m.lnMemvar
    lnMemvar =  m.lnMemvar
    lnMemvar =  m.lnMemvar
    lnMemvar =  m.lnMemvar
    lnMemvar =  m.lnMemvar
    lnMemvar =  m.lnMemvar
ENDFOR lnCount
?SECONDS()-tt
>
>LOCAL lnCount, lnMemvar, tt
>
CREATE CURSOR TT (F L)
FOR k=1 to 
>m.tt=SECONDS()
>FOR m.lnCount=1 TO 1000000
>    m.lnMemvar = 1
>    m.lnMemvar = 1
>    m.lnMemvar = 1
>    m.lnMemvar = 1
>    m.lnMemvar = 1
>    m.lnMemvar = 1
>    m.lnMemvar = 1
>    m.lnMemvar = 1
>    m.lnMemvar = 1
>    m.lnMemvar = 1
>    m.lnMemvar = 1
>    m.lnMemvar = 1
>    m.lnMemvar = 1
>    m.lnMemvar = 1
>    m.lnMemvar = 1
>    m.lnMemvar = 1
>    m.lnMemvar = 1
>    m.lnMemvar = 1
>    m.lnMemvar = 1
>    m.lnMemvar = 1
>    m.lnMemvar = 1
>    m.lnMemvar = 1
>    m.lnMemvar = 1
>    m.lnMemvar = 1
>    m.lnMemvar = 1
>    m.lnMemvar = 1
>ENDFOR m.lnCount
>?SECONDS()-m.tt
>
>I put so much lines into the loop to lower the overhead of the loop itself.
>
>This took 13.4 seconds on my old Athlon A 600 Mhz CPU machine. And it took 13.1 secs without m. I'm sick of such optimization tips. I'm also not a vfp novice.
>
>Set Talk On during operations scanning through tables, replacing single records or even just creating an index causes messages being written to the status bar for each replace. That takes up time! See now, why it is right to say that this matters more than using or not using m.? I'm open to any test script you can show me that proves the speed up m. could cause. Maybe it's dependant on how many workareas are used.
>
>It's true that 10 million records may make much of a difference compared to 3 millions, okay. I put the record number up and saw a serious dropdown in performance, the time needed doesn't scale linearly. But well, this makes the question what is faster a question of the amount of data and how it's spread. Normally you would have the data ordered by the dates, as it grows in time. Both SQL and xBase would profit of that!
>
>Bye, Olaf.
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform