| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- MODULE AccTest; (* Access Benchmark *)
- IMPORT InitCompilerMods;
- FROM DBIndxes IMPORT DBIndex, InitIndex, CloseIndex, FindPositionCh;
- FROM ModBase3 IMPORT Replace,DBFile,InitDBF,OpenDBF,DefaultFixUp;
- FROM Timing IMPORT BeginTimer, ShowUsage;
- FROM Rand IMPORT RandomInit, RandomCard;
- (* FROM Lib IMPORT RANDOM;*)
- IMPORT StringIO;
- IMPORT StrConv;
- VAR
- counter:CARDINAL;
- string:ARRAY[0..79] OF CHAR;
- PROCEDURE RandStr(VAR S : ARRAY OF CHAR);
- (* Generate a string of random letters with a random length *)
- VAR
- I : CARDINAL;
- Len : CARDINAL;
- BEGIN
- Len := 1 + (*RandomCard*)RandomCard(HIGH(S)+1) ; (* random 1 to 30 Len *)
- FOR I := 0 TO Len - 1 DO
- S[I] := CHR((*RandomCard*)RandomCard(26)+65); (* random letters *)
- END (* for *);
- FOR I := Len TO HIGH(S) DO (* ModBase requires space padded keys *)
- S[I] := ' '; (* instead of a 0C terminated string *)
- END (* if *);
- END RandStr;
- CONST
- KeyLen = 30;
- Buffers = 400;
- TYPE
- KeyStr = ARRAY [0..KeyLen-1] OF CHAR;
- VAR
- DBF : DBFile;
- NDX : DBIndex;
- Name : KeyStr;
- Found : BOOLEAN;
- BEGIN
- BeginTimer(); (* BeginTimer() timer counting *)
- RandomInit(1);
- counter:=0;
- InitDBF('Modbase.DBF',DBF,0,FALSE,TRUE,FALSE,DefaultFixUp);
- IF OpenDBF(DBF) THEN END;
- InitIndex("ModBase.NDX", NDX,DBF, Buffers,FALSE,TRUE,TRUE);
- REPEAT (* generate random keys *)
- RandStr(Name);
- FindPositionCh(NDX, Name, Found);
- INC(counter);
- UNTIL NOT Found; (* until not in index *)
- CloseIndex(NDX);
- DEC(counter);
- StrConv.CardinalToStr(counter,0,string);
- StringIO.WriteStr(StringIO.outp,string);
- StringIO.WriteEol(StringIO.outp,' Keys found');
- ShowUsage(' Accsesstest time'); (* display elaped time in seconds *)
- END AccTest.
|