home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / TPL60N11.ZIP / TESTPRGS.ZIP / ARITEST.PAS next >
Encoding:
Pascal/Delphi Source File  |  1992-03-02  |  6.2 KB  |  217 lines

  1. {$A+,B-,D-,E-,F-,G-,I-,L-,N-,O-,R-,S-,V-,X-}
  2.  
  3. USES Time;
  4.  
  5. VAR L: INTEGER;
  6.     I, J, ExecutionTime,
  7.     StorageTime, StorageTime2,
  8. zaehler,    StorageTime3, Start: LONGINT;
  9.     X,Y, Z: REAL;
  10.     A, B, C: ARRAY [1..2900] OF REAL;
  11.     D: ARRAY [1..2900] OF LONGINT;
  12.  
  13.  
  14. FUNCTION Draw: INTEGER;
  15. BEGIN
  16.   IF Random < 0.5 THEN
  17.     Draw := -1
  18.   ELSE
  19.     Draw := 1;
  20. END;
  21.  
  22. BEGIN
  23.    WriteLn;
  24.    WriteLn ('Time for basic arithmetic functions');
  25.    WriteLn;
  26.    Write   ('Operation             │   Time TP ');
  27. {$IFDEF VER55}
  28.    Write   ('5.5');
  29. {$ENDIF}
  30. {$IFDEF VER50}
  31.    Write   ('5.0');
  32. {$ENDIF}
  33. {$IFDEF VER60}
  34.    Write   ('6.0');
  35. {$ENDIF}
  36.    WriteLn;
  37.    WriteLn ('──────────────────────┼───────────────');
  38.  
  39.    RandSeed := 13;
  40.  
  41.    Write ('Please wait! Initializing ...');
  42.  
  43.    FOR L := 1 TO 2900 DO BEGIN
  44.       A [L] := Exp (Random * 80-40);
  45.    END;
  46.    FOR L := 1 TO 2900 DO BEGIN
  47.       B [L] := Exp (Random * 8.8-4.4) * Draw;
  48.    END;
  49.    FOR L := 1 TO 2900 DO BEGIN
  50.       C [L] := Exp (Random * 20 - 10) * Draw;
  51.    END;
  52.    FOR L := 1 TO 2900 DO BEGIN
  53.       D [L] := Trunc (C[L]);
  54.       IF D [L] = 0 THEN
  55.          Inc (D[L]);
  56.    END;
  57.  
  58.    Write (#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8);
  59.  
  60.    Start := Clock;
  61.    FOR L := 1 TO 2900 DO BEGIN
  62.       I := J;
  63.    END;
  64.    StorageTime3 := Clock - Start;
  65.  
  66.    Start := Clock;
  67.    FOR L := 1 TO 2900 DO BEGIN
  68.       Y := X;
  69.    END;
  70.    StorageTime := Clock - Start;
  71.  
  72.    Start := Clock;
  73.    FOR L := 1 TO 2900 DO BEGIN
  74.       Y := X;
  75.       X := Y;
  76.    END;
  77.    StorageTime2 := Round (0.75*(Clock - Start));
  78.  
  79.    Start := Clock;
  80.    FOR L := 1 TO 2900 DO BEGIN
  81.       I := (D [L] * D [2901-L]);
  82.    END;
  83.    ExecutionTime := Clock - Start - StorageTime3;
  84.    WriteLn ('LONG-Mul              │', ExecutionTime/2.9:11:1, ' µs');
  85.    Start := Clock;
  86.    FOR L := 1 TO 2900 DO BEGIN
  87.       I := (D [L] DIV D [2901-L]);
  88.    END;
  89.    ExecutionTime := Clock - Start - StorageTime3;
  90.    WriteLn ('LONG-Div              │', ExecutionTime/2.9:11:1, ' µs');
  91.    Start := Clock;
  92.    FOR L := 1 TO 2900 DO BEGIN
  93.       I := Abs (D [L]);
  94.    END;
  95.    ExecutionTime := Clock - Start - StorageTime3;
  96.    WriteLn ('LONG-Abs              │', ExecutionTime/2.9:11:1, ' µs');
  97.  
  98.  
  99.    Start := Clock;
  100.    FOR L := 1 TO 2900 DO BEGIN
  101.       Y := D [L];
  102.    END;
  103.    ExecutionTime := Clock - Start - StorageTime;
  104.    WriteLn ('REAL-Float            │', ExecutionTime/2.9:11:1, ' µs');
  105.    Start := Clock;
  106.    FOR L := 1 TO 2900 DO BEGIN
  107.       Y := (C [L] + C [2901-L]);
  108.    END;
  109.    ExecutionTime := Clock - Start - StorageTime2;
  110.    WriteLn ('REAL-Add              │', ExecutionTime/2.9:11:1, ' µs');
  111.    Start := Clock;
  112.    FOR L := 1 TO 2900 DO BEGIN
  113.       Y := (C [L] - C [2901-L]);
  114.    END;
  115.    ExecutionTime := Clock - Start - StorageTime2;
  116.    WriteLn ('REAL-Sub              │', ExecutionTime/2.9:11:1, ' µs');
  117.    Start := Clock;
  118.    FOR L := 1 TO 2900 DO BEGIN
  119.       Y := (C [L] * C [2901-L]);
  120.    END;
  121.    ExecutionTime := Clock - Start - StorageTime2;
  122.    WriteLn ('REAL-Mul              │', ExecutionTime/2.9:11:1, ' µs');
  123.    FOR L := 1 TO 2900 DO BEGIN
  124.       D [L] := D [L] DIV 7440;
  125.    END;
  126.    Start := Clock;
  127.    FOR L := 1 TO 2900 DO BEGIN
  128.       Y := (C [L] * D [2901-L]);
  129.    END;
  130.    ExecutionTime := Clock - Start - StorageTime2;
  131.    WriteLn ('REAL-Mul (Short)      │', ExecutionTime/2.9:11:1, ' µs');
  132.    Start := Clock;
  133.    FOR L := 1 TO 2900 DO BEGIN
  134.       Y := (C [L] / C [2901-L]);
  135.    END;
  136.    ExecutionTime := Clock - Start - StorageTime2;
  137.    WriteLn ('REAL-Div              │', ExecutionTime/2.9:11:1, ' µs');
  138.    Start := Clock;
  139.    FOR L := 1 TO 2900 DO BEGIN
  140.       Y := Sqr(C [L]);
  141.    END;
  142.    ExecutionTime := Clock - Start - StorageTime;
  143.    WriteLn ('REAL-Sqr              │', ExecutionTime/2.9:11:1, ' µs');
  144.    FOR L := 1 TO 2900 DO BEGIN
  145.       C [L] := D [L];
  146.    END;
  147.    Start := Clock;
  148.    FOR L := 1 TO 2900 DO BEGIN
  149.       Y := Sqr(C [L]);
  150.    END;
  151.    ExecutionTime := Clock - Start - StorageTime;
  152.    WriteLn ('REAL-Sqr (Short)      │', ExecutionTime/2.9:11:1, ' µs');
  153.    FOR L := 1 TO 2900 DO BEGIN
  154.       C [L] := Exp (Random * 20 - 10) * Draw;
  155.    END;
  156.    Start := Clock;
  157.    FOR L := 1 TO 2900 DO BEGIN
  158.       Y := Int ( C[L]);
  159.    END;
  160.    ExecutionTime := Clock - Start - StorageTime;
  161.    WriteLn ('REAL-Int              │', ExecutionTime/2.9:11:1, ' µs');
  162.    Start := Clock;
  163.    FOR L := 1 TO 2900 DO BEGIN
  164.       Y := Frac (C [L]);
  165.    END;
  166.    ExecutionTime := Clock - Start - StorageTime;
  167.    WriteLn ('REAL-Frac             │', ExecutionTime/2.9:11:1, ' µs');
  168.    Start := Clock;
  169.    FOR L := 1 TO 2900 DO BEGIN
  170.       I := Trunc (C [L]);
  171.    END;
  172.    ExecutionTime := Clock - Start - StorageTime3;
  173.    WriteLn ('REAL-Trunc            │', ExecutionTime/2.9:11:1, ' µs');
  174.    Start := Clock;
  175.    FOR L := 1 TO 2900 DO BEGIN
  176.       I := Round (C [L]);
  177.    END;
  178.    ExecutionTime := Clock - Start - StorageTime3;
  179.    WriteLn ('REAL-Round            │', ExecutionTime/2.9:11:1, ' µs');
  180.    Start := Clock;
  181.    FOR L := 1 TO 2900 DO BEGIN
  182.       Y := Sqrt (A [L]);
  183.    END;
  184.    ExecutionTime := Clock - Start - StorageTime;
  185.    WriteLn ('REAL-Sqrt             │', ExecutionTime/2.9:11:1, ' µs');
  186.    Start := Clock;
  187.    FOR L := 1 TO 2900 DO BEGIN
  188.       Y := Ln  (A [L]);
  189.    END;
  190.    ExecutionTime := Clock - Start - StorageTime;
  191.    WriteLn ('REAL-Ln               │', ExecutionTime/2.9:11:1, ' µs');
  192.    Start := Clock;
  193.    FOR L := 1 TO 2900 DO BEGIN
  194.       Y := Exp (B [L]);
  195.    END;
  196.    ExecutionTime := Clock - Start - StorageTime;
  197.    WriteLn ('REAL-Exp              │', ExecutionTime/2.9:11:1, ' µs');
  198.    Start := Clock;
  199.    FOR L := 1 TO 2900 DO BEGIN
  200.       Y := Sin (B[L]);
  201.    END;
  202.    ExecutionTime := Clock - Start - StorageTime;
  203.    WriteLn ('REAL-Sin              │', ExecutionTime/2.9:11:1, ' µs');
  204.    Start := Clock;
  205.    FOR L := 1 TO 2900 DO BEGIN
  206.       Y := Cos (B[L]);
  207.    END;
  208.    ExecutionTime := Clock - Start - StorageTime;
  209.    WriteLn ('REAL-Cos              │', ExecutionTime/2.9:11:1, ' µs');
  210.    Start := Clock;
  211.    FOR L := 1 TO 2900 DO BEGIN
  212.       Y := ArcTan (C[L]);
  213.    END;
  214.    ExecutionTime := Clock - Start - StorageTime;
  215.    WriteLn ('REAL-ArcTan           │', ExecutionTime/2.9:11:1, ' µs');
  216. END.
  217.