*--------------------------------------------------------------------- * Program.: TESTVIEW.PRG * Author..: Mark Bucciarelli 04/13/99 * Abstract: Try to clear indexes from memory. * Changes.: *--------------------------------------------------------------------- LOCAL lnStart, lnEnd, lcSelect OPEN DATA (GETFILE("dbc")) lcSelect = "SELECT * FROM MMWO WHERE cWoAutoId='98012507' " ; + "AND cSite = '' AND cEmployee = '' INTO CURSOR TEMP NOFILTER" ClearMemory(1000) lnStart = SECONDS() &lcSelect lnEnd = SECONDS() lnTotal2a = lnStart - lnEnd lnStart = SECONDS() &lcSelect lnEnd = SECONDS() lnTotal2b = lnStart - lnEnd ?"with clear: " + STR(lnTotal2a,8,3) + " " + STR(lnTotal2b,8,3) Function ClearMemory LPARAMETERS tnCnt LOCAL lcOldOnError, llDone, lnIdx, lcVariable, lnCnt lnCnt = iif(empty(tnCnt), 100, tnCnt) lcOldOnError = ON("ERROR") ON ERROR llDone = .T. * 10 Meg = 10 Meg * 1024 kBytes/Meg * 1024 Bytes/kByte * = 10,485,760 Bytes. So we need 161 strings of 65,000 * characters to take up 10 megs of memory. llDone = .F. lnIdx = 1 DO WHILE !llDone AND lnIdx < lnCnt lcVariable = "String" + LTRIM(STR(lnIdx)) LOCAL &lcVariable &lcVariable = REPLICATE("00000000", 65000) lnIdx = lnIdx + 1 ENDDO && !llDone ON ERROR &lcOldOnError RETURN lnIdx ENDPROC