Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Xbase commands Vrs Sql commands
Message
From
10/05/2005 17:53:29
 
 
To
10/05/2005 16:20:58
General information
Forum:
Visual FoxPro
Category:
Databases,Tables, Views, Indexing and SQL syntax
Environment versions
Visual FoxPro:
VFP 6 SP5
Database:
Visual FoxPro
Miscellaneous
Thread ID:
01011885
Message ID:
01012630
Views:
18
>>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.
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform