Sure, what the heck.
I made a couple of changes as I went, just to see some different things. e.g.
- I used a 100,000 record table instead of a cursor
- For all but the first test, I used INT(RAND()*100000) instead of 699
to make sure I was always moving to a different record.
- I left the LOCATE loop alone, except for the change above
- I made a couple of changes to the SEEK() loop.
e.g., Instead of flipping the order on and off, I left it set.
SET ORDER TO pID
lnTime = SECONDS()
FOR lnJ = 1 TO 10000
SET ORDER TO pID
SEEK(699)
SET ORDER TO
ENDFOR
PIII 600 130M ram.
Anyway, I found some interesting results, especially the last 2 tests
where I used SET KEY TO instead of a SEEK
** AS IS
Locate: 1.77 seconds vs. Seek: 0.16 seconds.
Locate: 1.52 seconds vs. Seek: 0.16 seconds.
Locate: 1.63 seconds vs. Seek: 0.17 seconds.
Locate: 1.53 seconds vs. Seek: 0.16 seconds.
Locate: 1.52 seconds vs. Seek: 0.16 seconds.
Locate: 1.73 seconds vs. Seek: 0.17 seconds.
Locate: 1.84 seconds vs. Seek: 0.16 seconds.
Locate: 1.52 seconds vs. Seek: 0.16 seconds.
Locate: 1.79 seconds vs. Seek: 0.16 seconds.
Locate: 1.53 seconds vs. Seek: 0.16 seconds.
*** SET ORDER out of loop
Locate: 1.81 seconds vs. Seek: 0.12 seconds.
Locate: 1.51 seconds vs. Seek: 0.12 seconds.
Locate: 1.59 seconds vs. Seek: 0.13 seconds.
Locate: 1.52 seconds vs. Seek: 0.12 seconds.
Locate: 1.53 seconds vs. Seek: 0.11 seconds.
Locate: 1.59 seconds vs. Seek: 0.13 seconds.
Locate: 1.52 seconds vs. Seek: 0.12 seconds.
Locate: 1.53 seconds vs. Seek: 0.11 seconds.
Locate: 1.59 seconds vs. Seek: 0.13 seconds.
Locate: 1.52 seconds vs. Seek: 0.12 seconds.
*** NO order set
*** =SEEK(x, "test", "pid")
Locate: 1.79 seconds vs. Seek: 0.15 seconds.
Locate: 1.53 seconds vs. Seek: 0.15 seconds.
Locate: 1.63 seconds vs. Seek: 0.17 seconds.
Locate: 1.52 seconds vs. Seek: 0.15 seconds.
Locate: 1.53 seconds vs. Seek: 0.15 seconds.
Locate: 1.72 seconds vs. Seek: 0.16 seconds.
Locate: 1.52 seconds vs. Seek: 0.16 seconds.
Locate: 1.52 seconds vs. Seek: 0.15 seconds.
Locate: 1.79 seconds vs. Seek: 0.16 seconds.
Locate: 1.56 seconds vs. Seek: 0.15 seconds.
*** SET ORDER in loop
*** SET KEY TO instead of SEEK()
Locate: 1.78 seconds vs. SET KEY: 0.07 seconds.
Locate: 1.53 seconds vs. SET KEY: 0.07 seconds.
Locate: 1.52 seconds vs. SET KEY: 0.07 seconds.
Locate: 1.78 seconds vs. SET KEY: 0.07 seconds.
Locate: 1.52 seconds vs. SET KEY: 0.07 seconds.
Locate: 1.53 seconds vs. SET KEY: 0.07 seconds.
Locate: 1.79 seconds vs. SET KEY: 0.07 seconds.
Locate: 1.53 seconds vs. SET KEY: 0.06 seconds.
Locate: 1.53 seconds vs. SET KEY: 0.07 seconds.
Locate: 1.80 seconds vs. SET KEY: 0.06 seconds.
*** SET ORDER out of loop
*** SET KEY TO instead of SEEK()
Locate: 1.57 seconds vs. SET KEY: 0.02 seconds.
Locate: 1.52 seconds vs. SET KEY: 0.03 seconds.
Locate: 1.52 seconds vs. SET KEY: 0.03 seconds.
Locate: 1.69 seconds vs. SET KEY: 0.03 seconds.
Locate: 1.51 seconds vs. SET KEY: 0.03 seconds.
Locate: 1.52 seconds vs. SET KEY: 0.03 seconds.
Locate: 1.71 seconds vs. SET KEY: 0.02 seconds.
Locate: 1.53 seconds vs. SET KEY: 0.02 seconds.
Locate: 1.53 seconds vs. SET KEY: 0.03 seconds.
Locate: 1.66 seconds vs. SET KEY: 0.03 seconds.
Insanity: Doing the same thing over and over and expecting different results.