home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / pascal / exarray.com / EXTTEST.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1989-08-19  |  1.5 KB  |  64 lines

  1. Program ExtTest;
  2.  
  3. { Don't let the Random access test results fool you.  At 200000 Longints,
  4.   this is still a high load-factor ExtendedArray (22 lobes, 8 in Ram). Try
  5.   it with 2000000 for comparison. }
  6.  
  7. Uses ExtArray,Crt;
  8.  
  9. Const
  10.   NumEl = 200000;
  11.  
  12. Var
  13.   V    : ExtendedArray;
  14.   I,J  : LongInt;
  15.   E    : LongInt;
  16.   Base : Array[0..999] of LongInt;
  17.   W    : Word;
  18.  
  19. Begin
  20.   ClrScr;
  21.   Randomize;
  22.   V.Create;
  23.   WriteLn ('MemAvail Before Initialization = ',MemAvail);
  24.   V.AutoInit (NumEl,SizeOf(LongInt));
  25.   WriteLn (SizeOf(V),' Bytes occupied by Object');
  26.   WriteLn ('MemAvail after Initialization = ',MemAvail);
  27.   Write ('Initializing...');
  28.   For W := 0 to 999 do Base[W] := W;
  29.   For I := NumEl-1 downto 0 do
  30.     Begin
  31.       E := I;
  32.       V.Accept (E,I,SizeOf (LongInt))
  33.     End;
  34.   ClrScr;
  35.   WriteLn ('Timing Tests for Random Access.');
  36.  
  37.   Write ('Press <Return> to begin test of 10000 (RANDOM) Accesses of Standard Array...');
  38.   ReadLn;
  39.   For I := 0 to 9999 do
  40.     Begin
  41.       W := Base[Random(1000)];
  42.       GoToXY (10,13);
  43.       Write ('Accessing Element # ',W);
  44.       ClrEol
  45.     End;
  46.  
  47.   ClrScr;
  48.   Write ('Press <Return> to begin test of 10000 (RANDOM) Accesses of Extended Array...');
  49.   ReadLn;
  50.  
  51.   For I := 0 to 9999 do
  52.     Begin
  53.       J := Longint (Round (Random * NumEl));
  54.       GoToXY (10,13);
  55.       Write ('Accessing Element # ',J);
  56.       ClrEol;
  57.       V.Retrieve (E,J,SizeOf (LongInt))
  58.     End;
  59.  
  60.   Write ('Waiting...');
  61.   ReadLn;
  62.   WriteLn ('Destroying...');
  63.   V.Destroy
  64. End.