Welcome To The Home Of The Visual FoxPro Experts  
home. signup. forum. archives. search. google. articles. downloads. faq. members. weblogs. file info. rss.
 From: Mike Yearwood
  Where is Mike Yearwood?
 Toronto
 Canada
 Mike Yearwood
 To: Pete Sass
  Where is Pete Sass?
 Marathon, Ontario
 Canada
 Pete Sass
 Tags
Subject: RE: C++ compiler
Thread ID: 415740 Message ID: 416137 # Views: 37 # Ratings: 1
Version: Visual FoxPro 9 SP2 Category: 3rd Party Software
Date: Monday, December 22, 2014 3:01:11 PM         
   


> >
> > In my experience LOCATE (go top) or LOCATE .f. (go bottom) is faster than GO BOTTOM.
> >
> > Mike Gagnon
>
>
> Hi Mike,
>
> I raised this question as several years ago I played around with this especially
> in large tables where on the navigation buttons I had one command button - Goto Top
> and another command button - Goto Bottom
>
> I re-ran this test again only on a mega-sized dbf with 6 million records in it
> and no index key active.
>
> Here is the simply code I used:
>
* --GOTOEnd.prg
> USE SPEED2		&& 6,000,000 record table with 6 character fields filled with data.
> 
> * --- Move to last record via LOCATE = .F.
> st = SECONDS()
> LOCATE = .F.
> et = SECONDS()
> lnElapse = et - st
> = MESSAGEBOX("LOCATE = .F. time: " + ALLTRIM(STR(lnElapse,10,4)))
> 
> GOTO TOP
> 
> * --- Move to last record via GOTO BOTTOM
> st = SECONDS()
> GOTO BOTTOM
> et = SECONDS()
> lnElapse = et - st
> = MESSAGEBOX("GOTO Bottom time: " + ALLTRIM(STR(lnElapse,10,4)))
> 
> * --- Flip the navigation around to ensure that the one that runs first
> * --- or second has no bearing on the time.
> GOTO TOP
> 
> * --- Move to last record via GOTO BOTTOM
> st = SECONDS()
> GOTO BOTTOM
> et = SECONDS()
> lnElapse = et - st
> = MESSAGEBOX("GOTO Bottom time: " + ALLTRIM(STR(lnElapse,10,4)))
> 
> GOTO TOP
> 
> * --- Move to last record via LOCATE = .F.
> st = SECONDS()
> LOCATE = .F.
> et = SECONDS()
> lnElapse = et - st
> = MESSAGEBOX("LOCATE = .F. time: " + ALLTRIM(STR(lnElapse,10,4)))
> 
> USE

>
> My timing results from the 4 elapse times above are shown below:
>
>
>
>
>
> If I set order to tagname so an index is active I get the same results.
> I close out of VFP and re-ran to unsure nothing cached and got the same results.
>
> So I guess if the LOCATE = .F. is faster, I cannot measure the difference moving through
> a 6 million record table index or non-indexed.
>
> Pete "the IceMan", from the Great White North of Canada.
> www.marathongriffincomputers.com

Gentlemen, you're forgetting a very significant part of the experiment. You must set a filter and/or you must have a large number of deleted records at the physical top and/or bottom of the table with set deleted on.

In that situation - which many people have making it a real-world test - you will see that GO TOP/BOTTOM is un-optimized and therefore takes a very long time versus LOCATE. I'm not sure where LOCATE = .F. came from. That is a typo. It must be LOCATE FOR .F.

The experiment was presented in my first FoxPro Advisor article back in 1995.

Mike Yearwood
Microsoft MVP Visual FoxPro 2008, 2009
We have enough youth. We need a fountain of smart!
There may be many ways to skin a cat, but there are very few right ways to do it.

ENTIRE THREAD

C++ compiler Posted by Mike Yearwood @ 12/11/2014 9:47:42 PM
RE: C++ compiler Posted by Tony Vignone @ 12/11/2014 10:18:16 PM
RE: C++ compiler Posted by michael johnson @ 12/12/2014 3:15:14 AM
RE: C++ compiler Posted by Mike Yearwood @ 12/12/2014 4:40:18 PM
RE: C++ compiler Posted by Chuanbing Chen @ 12/12/2014 8:01:24 AM
RE: C++ compiler Posted by Pete Sass @ 12/12/2014 12:41:53 PM
RE: C++ compiler Posted by Pete Sass @ 12/13/2014 5:29:47 PM
RE: C++ compiler Posted by Tony Vignone @ 12/13/2014 8:27:53 PM
RE: C++ compiler Posted by Chuanbing Chen @ 12/14/2014 3:44:09 AM
RE: C++ compiler Posted by Mike Yearwood @ 12/15/2014 4:02:35 PM
RE: C++ compiler Posted by Tony Vignone @ 12/16/2014 2:10:42 PM
RE: C++ compiler Posted by Mike Yearwood @ 12/16/2014 6:00:18 PM
RE: C++ compiler Posted by Tony Vignone @ 12/16/2014 7:37:14 PM
RE: C++ compiler Posted by Pete Sass @ 12/17/2014 3:27:15 AM
RE: C++ compiler Posted by Mike Yearwood @ 12/17/2014 3:50:23 PM
RE: C++ compiler Posted by Pete Sass @ 12/17/2014 6:09:24 PM
RE: C++ compiler Posted by Mike Yearwood @ 12/18/2014 3:22:37 PM
RE: C++ compiler Posted by Pete Sass @ 12/18/2014 4:55:58 PM
RE: C++ compiler Posted by Mike Yearwood @ 12/18/2014 7:16:44 PM
RE: C++ compiler Posted by Pete Sass @ 12/18/2014 7:53:51 PM
RE: C++ compiler Posted by Chuanbing Chen @ 12/19/2014 12:48:30 AM
RE: C++ compiler Posted by Pete Sass @ 12/19/2014 11:57:43 PM
RE: C++ compiler Posted by Mike Gagnon @ 12/20/2014 2:09:13 AM
RE: C++ compiler Posted by Pete Sass @ 12/20/2014 3:18:09 PM
RE: C++ compiler Posted by Vilhelm-Ion Praisach @ 12/20/2014 6:53:41 PM
RE: C++ compiler Posted by Pete Sass @ 12/20/2014 8:25:14 PM
RE: C++ compiler Posted by Vilhelm-Ion Praisach @ 12/20/2014 9:18:10 PM
RE: C++ compiler Posted by Mike Yearwood @ 12/22/2014 3:01:11 PM
RE: C++ compiler Posted by Pete Sass @ 12/22/2014 3:57:28 PM
RE: C++ compiler Posted by Vilhelm-Ion Praisach @ 12/22/2014 5:54:52 PM
RE: C++ compiler Posted by Mike Yearwood @ 12/22/2014 9:38:06 PM
RE: C++ compiler Posted by Chuanbing Chen @ 12/23/2014 1:03:49 AM
RE: C++ compiler Posted by Mike Yearwood @ 12/22/2014 3:42:43 PM