home *** CD-ROM | disk | FTP | other *** search
/ Programmer's ROM - The Computer Language Library / programmersrom.iso / ada / test / piwgb.src < prev    next >
Encoding:
Text File  |  1988-05-03  |  144.5 KB  |  5,198 lines

  1. ::::::::::
  2. piwgb831.inc
  3. ::::::::::
  4. --
  5. -- PIWG TAPE_8_31_86, Part B
  6. --
  7. D000001.ADA
  8. D000002.ADA
  9. D000003.ADA
  10. D000004.ADA
  11. E000001.ADA
  12. E000002.ADA
  13. E000004.ADA
  14. F000001.ADA
  15. F000002.ADA
  16. G000001.ADA
  17. G000002.ADA
  18. G000003.ADA
  19. G000004.ADA
  20. G000005.ADA
  21. G000006.ADA
  22. G000007.ADA
  23. GETPIWG.SUB
  24. L000001.ADA
  25. L000002.ADA
  26. L000003.ADA
  27. P000001.ADA
  28. P000002.ADA
  29. P000003.ADA
  30. P000004.ADA
  31. P000005.ADA
  32. P000006.ADA
  33. P000007.ADA
  34. P000010.ADA
  35. P000011.ADA
  36. P000012.ADA
  37. P000013.ADA
  38. READ.ME
  39. T000001.ADA
  40. T000002.ADA
  41. T000003.ADA
  42. T000004.ADA
  43. T000005.ADA
  44. T000006.ADA
  45. T000007.ADA
  46. TAPE.LOG
  47. TAPEDIST.LTR
  48. WCOMPILE.COM
  49. ::::::::::
  50. D000001.ADA
  51. ::::::::::
  52.  
  53. -- PERFORMANCE MEASUREMENT : Elaboration, allocation and freeing of
  54. --                           a dynamic array
  55.  
  56. package DYNAMIC_ARRAY_PACKAGE_1 is
  57.   DYNAMIC_SIZE : INTEGER ;
  58.   type DYNAMIC_ARRAY is array ( INTEGER range <> ) of INTEGER ;
  59.   LOCAL_ARRAY : DYNAMIC_ARRAY ( 1..1000 ) ;
  60.   procedure PROC_CONTROL ;
  61.   procedure PROC_TEST ;
  62. end DYNAMIC_ARRAY_PACKAGE_1 ;
  63.  
  64. with DYNAMIC_ARRAY_PACKAGE_1 ; use DYNAMIC_ARRAY_PACKAGE_1 ;
  65. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  66. with ITERATION ; -- obtain stable measurement
  67. with PIWG_IO ; -- output results
  68.  
  69. procedure D000001 is  -- main procedure to execute
  70.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  71.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  72.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  73.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  74.   STABLE : BOOLEAN ; -- true when measurement stable
  75.  
  76. begin
  77.  
  78.   DYNAMIC_SIZE := 1000 ;
  79.  
  80.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  81.  
  82.   delay 0.5 ;  -- wait for stable enviornment on some machines
  83.  
  84.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  85.  
  86.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  87.  
  88. --
  89. -- Control loop
  90. --
  91.     ITERATION.START_CONTROL ;
  92.     for J in 1 .. ITERATION_COUNT loop
  93.       GLOBAL := 0 ;
  94.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  95.         PROC_CONTROL ;
  96.       end loop ;
  97.     end loop ;
  98.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  99.  
  100. --
  101. -- Test loop
  102. --
  103.     ITERATION.START_TEST ;
  104.     for J in 1 .. ITERATION_COUNT loop
  105.       GLOBAL := 0 ;
  106.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  107.         PROC_TEST ; -- this has control global increment and call inside
  108.       end loop ;
  109.     end loop ;
  110.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  111.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  112.     exit when STABLE ;
  113.   end loop ;
  114. --
  115.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  116.  
  117. --
  118. -- Printout
  119. --
  120.   PIWG_IO.PIWG_OUTPUT ( "D000001" , "Allocation" ,
  121.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  122.     " Dynamic array allocation, use and deallocation time measurement " ,
  123.     " Dynamic array elaboration , 1000 integers in a procedure" ,
  124.     " get space and free it in the procedure on each call" ) ;
  125. end D000001 ;
  126.  
  127. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ;
  128. package body DYNAMIC_ARRAY_PACKAGE_1 is
  129.  
  130.   procedure PROC_CONTROL is
  131.   begin
  132.     GLOBAL := GLOBAL + A_ONE ;
  133.     LOCAL_ARRAY ( GLOBAL ) := GLOBAL ;
  134.     REMOTE ;
  135.     GLOBAL := LOCAL_ARRAY ( GLOBAL ) ;
  136.   end ;
  137.  
  138.   procedure PROC_TEST is
  139.     PROC_ARRAY : DYNAMIC_ARRAY ( 1..DYNAMIC_SIZE ) ;
  140.   begin
  141.     GLOBAL := GLOBAL + A_ONE ;
  142.     PROC_ARRAY ( GLOBAL ) := GLOBAL ;
  143.     REMOTE ;
  144.     GLOBAL := PROC_ARRAY ( GLOBAL ) ;
  145.   end PROC_TEST ;
  146.  
  147. end DYNAMIC_ARRAY_PACKAGE_1 ;
  148. ::::::::::
  149. D000002.ADA
  150. ::::::::::
  151.  
  152. -- PERFORMANCE MEASUREMENT : Elaboration, allocation and freeing of
  153. --                           a dynamic array initialized with others
  154.  
  155. package DYNAMIC_ARRAY_PACKAGE_2 is
  156.   DYNAMIC_SIZE : INTEGER ;
  157.   type DYNAMIC_ARRAY is array ( INTEGER range <> ) of INTEGER ;
  158.   LOCAL_ARRAY : DYNAMIC_ARRAY ( 1..1000 ) := (OTHERS=>1);
  159.   procedure PROC_CONTROL ;
  160.   procedure PROC_TEST ;
  161. end DYNAMIC_ARRAY_PACKAGE_2 ;
  162.  
  163. with DYNAMIC_ARRAY_PACKAGE_2 ; use DYNAMIC_ARRAY_PACKAGE_2 ;
  164. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  165. with ITERATION ; -- obtain stable measurement
  166. with PIWG_IO ; -- output results
  167.  
  168. procedure D000002 is  -- main procedure to execute
  169.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  170.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  171.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  172.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  173.   STABLE : BOOLEAN ; -- true when measurement stable
  174.  
  175. begin
  176.  
  177.   DYNAMIC_SIZE := 1000 ;
  178.  
  179.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  180.  
  181.   delay 0.5 ;  -- wait for stable enviornment on some machines
  182.  
  183.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  184.  
  185.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  186.  
  187. --
  188. -- Control loop
  189. --
  190.     ITERATION.START_CONTROL ;
  191.     for J in 1 .. ITERATION_COUNT loop
  192.       GLOBAL := 0 ;
  193.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  194.         PROC_CONTROL ; -- control call
  195.       end loop ;
  196.     end loop ;
  197.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  198.  
  199. --
  200. -- Test loop
  201. --
  202.  
  203.     ITERATION.START_TEST ;
  204.     for J in 1 .. ITERATION_COUNT loop
  205.       GLOBAL := 0 ;
  206.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  207.         PROC_TEST ; -- this has control global increment and call inside
  208.       end loop ;
  209.     end loop ;
  210.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  211.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  212.     exit when STABLE ;
  213.   end loop ;
  214. --
  215.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  216.  
  217. --
  218. -- Printout
  219. --
  220.   PIWG_IO.PIWG_OUTPUT ( "D000002" , "Allocation" ,
  221.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  222.     " Dynamic array elaboration and initialization time measurement " ,
  223.     " allocation, initialization, use and deallocation " ,
  224.     " 1000 integers initialized by  others=>1 " ) ;
  225. end D000002 ;
  226.  
  227. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ;
  228. package body DYNAMIC_ARRAY_PACKAGE_2 is
  229.  
  230.   procedure PROC_CONTROL is
  231.   begin
  232.     GLOBAL := GLOBAL + A_ONE ;
  233.     LOCAL_ARRAY ( GLOBAL ) := GLOBAL ;
  234.     REMOTE ;
  235.     GLOBAL := LOCAL_ARRAY ( GLOBAL ) ;
  236.   end ;
  237.  
  238.   procedure PROC_TEST is
  239.     PROC_ARRAY : DYNAMIC_ARRAY ( 1..DYNAMIC_SIZE ) := ( others => 1 ) ;
  240.   begin
  241.     GLOBAL := GLOBAL + A_ONE ;
  242.     PROC_ARRAY ( GLOBAL ) := GLOBAL ;
  243.     REMOTE ;
  244.     GLOBAL := PROC_ARRAY ( GLOBAL ) ;
  245.   end PROC_TEST ;
  246.  
  247. end DYNAMIC_ARRAY_PACKAGE_2 ;
  248. ::::::::::
  249. D000003.ADA
  250. ::::::::::
  251.  
  252. -- PERFORMANCE MEASUREMENT : Elaboration, allocation and freeing of
  253. --                           record containing a dynamic array
  254.  
  255. package DYNAMIC_ARRAY_PACKAGE_3 is
  256.   DYNAMIC_SIZE : INTEGER ;
  257.   type DYNAMIC_ARRAY is array ( INTEGER range <> ) of INTEGER ;
  258.   type DYNAMIC_RECORD ( SIZE : INTEGER ) is
  259.     record
  260.       INSIDE_ARRAY : DYNAMIC_ARRAY ( 1..SIZE ) ;
  261.     end record ;
  262.   LOCAL_ARRAY : DYNAMIC_RECORD ( 1000 ) ;
  263.   procedure PROC_CONTROL ;
  264.   procedure PROC_TEST ;
  265. end DYNAMIC_ARRAY_PACKAGE_3 ;
  266.  
  267. with DYNAMIC_ARRAY_PACKAGE_3 ; use DYNAMIC_ARRAY_PACKAGE_3 ;
  268. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  269. with ITERATION ; -- obtain stable measurement
  270. with PIWG_IO ; -- output results
  271.  
  272. procedure D000003 is  -- main procedure to execute
  273.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  274.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  275.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  276.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  277.   STABLE : BOOLEAN ; -- true when measurement stable
  278.  
  279. begin
  280.  
  281.   DYNAMIC_SIZE := 1000 ;
  282.  
  283.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  284.  
  285.   delay 0.5 ;  -- wait for stable enviornment on some machines
  286.  
  287.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  288.  
  289.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  290.  
  291. --
  292. -- Control loop
  293. --
  294.     ITERATION.START_CONTROL ;
  295.     for J in 1 .. ITERATION_COUNT loop
  296.       GLOBAL := 0 ;
  297.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  298.         PROC_CONTROL ;
  299.       end loop ;
  300.     end loop ;
  301.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  302.  
  303.  
  304. --
  305. -- Test loop
  306. --
  307.  
  308.     ITERATION.START_TEST ;
  309.     for J in 1 .. ITERATION_COUNT loop
  310.       GLOBAL := 0 ;
  311.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  312.         PROC_TEST ; -- this has control global increment and call inside
  313.       end loop ;
  314.     end loop ;
  315.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  316.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  317.     exit when STABLE ;
  318.   end loop ;
  319. --
  320.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  321.  
  322. --
  323. -- Printout
  324. --
  325.   PIWG_IO.PIWG_OUTPUT ( "D000003" , "Allocation" ,
  326.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  327.     " Dynamic record allocation and deallocation time measurement " ,
  328.     " elaborating, allocating and deallocating " ,
  329.     " record containing a dynamic array of 1000 integers " ) ;
  330. end D000003 ;
  331.  
  332. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ;
  333. package body DYNAMIC_ARRAY_PACKAGE_3 is
  334.  
  335.   procedure PROC_CONTROL is
  336.   begin
  337.     GLOBAL := GLOBAL + A_ONE ;
  338.     LOCAL_ARRAY.INSIDE_ARRAY ( GLOBAL ) := GLOBAL ;
  339.     REMOTE ;
  340.     GLOBAL := LOCAL_ARRAY.INSIDE_ARRAY ( GLOBAL ) ;
  341.   end ;
  342.  
  343.   procedure PROC_TEST is
  344.     PROC_ARRAY : DYNAMIC_RECORD ( DYNAMIC_SIZE ) ;
  345.   begin
  346.     GLOBAL := GLOBAL + A_ONE ;
  347.     PROC_ARRAY.INSIDE_ARRAY ( GLOBAL ) := GLOBAL ;
  348.     REMOTE ;
  349.     GLOBAL := PROC_ARRAY.INSIDE_ARRAY ( GLOBAL ) ;
  350.   end PROC_TEST ;
  351.  
  352. end DYNAMIC_ARRAY_PACKAGE_3 ;
  353. ::::::::::
  354. D000004.ADA
  355. ::::::::::
  356.  
  357. -- PERFORMANCE MEASUREMENT : Elaboration, allocation and freeing of
  358. --                           record containing a dynamic array
  359.  
  360. package DYNAMIC_ARRAY_PACKAGE_4 is
  361.   DYNAMIC_SIZE : INTEGER ;
  362.   type DYNAMIC_ARRAY is array ( INTEGER range <> ) of INTEGER ;
  363.   type DYNAMIC_RECORD ( SIZE : INTEGER ) is
  364.     record
  365.       INSIDE_ARRAY : DYNAMIC_ARRAY ( 1..SIZE ) ;
  366.     end record ;
  367.   LOCAL_ARRAY : DYNAMIC_RECORD ( 1000 ) := ( 1000 , ( others => 1 ) ) ;
  368.   procedure PROC_CONTROL ;
  369.   procedure PROC_TEST ;
  370. end DYNAMIC_ARRAY_PACKAGE_4 ;
  371.  
  372. with DYNAMIC_ARRAY_PACKAGE_4 ; use DYNAMIC_ARRAY_PACKAGE_4 ;
  373. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  374. with ITERATION ; -- obtain stable measurement
  375. with PIWG_IO ; -- output results
  376.  
  377. procedure D000004 is  -- main procedure to execute
  378.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  379.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  380.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  381.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  382.   STABLE : BOOLEAN ; -- true when measurement stable
  383.  
  384. begin
  385.  
  386.   DYNAMIC_SIZE := 1000 ;
  387.  
  388.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  389.  
  390.   delay 0.5 ;  -- wait for stable enviornment on some machines
  391.  
  392.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  393.  
  394.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  395.  
  396. --
  397. -- Control loop
  398. --
  399.     ITERATION.START_CONTROL ;
  400.     for J in 1 .. ITERATION_COUNT loop
  401.       GLOBAL := 0 ;
  402.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  403.         PROC_CONTROL ;
  404.       end loop ;
  405.     end loop ;
  406.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  407.  
  408.  
  409. --
  410. -- Test loop
  411. --
  412.  
  413.     ITERATION.START_TEST ;
  414.     for J in 1 .. ITERATION_COUNT loop
  415.       GLOBAL := 0 ;
  416.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  417.         PROC_TEST ; -- this has control global increment and call inside
  418.       end loop ;
  419.     end loop ;
  420.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  421.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  422.     exit when STABLE ;
  423.   end loop ;
  424. --
  425.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  426.  
  427. --
  428. -- Printout
  429. --
  430.   PIWG_IO.PIWG_OUTPUT ( "D000004" , "Allocation" ,
  431.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  432.     " Dynamic record allocation and deallocation time measurement " ,
  433.     " elaborating, initializing by ( DYNAMIC_SIZE,(others=>1)) " ,
  434.     " record containing a dynamic array of 1000 integers " ) ;
  435. end D000004 ;
  436.  
  437. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ;
  438. package body DYNAMIC_ARRAY_PACKAGE_4 is
  439.  
  440.   procedure PROC_CONTROL is
  441.   begin
  442.     GLOBAL := GLOBAL + A_ONE ;
  443.     LOCAL_ARRAY.INSIDE_ARRAY ( GLOBAL ) := GLOBAL ;
  444.     REMOTE ;
  445.     GLOBAL := LOCAL_ARRAY.INSIDE_ARRAY ( GLOBAL ) ;
  446.   end ;
  447.  
  448.   procedure PROC_TEST is
  449.     PROC_ARRAY : DYNAMIC_RECORD ( DYNAMIC_SIZE ) := 
  450.                                 ( DYNAMIC_SIZE , ( others => 1 ) ) ;
  451.   begin
  452.     GLOBAL := GLOBAL + A_ONE ;
  453.     PROC_ARRAY.INSIDE_ARRAY ( GLOBAL ) := GLOBAL ;
  454.     REMOTE ;
  455.     GLOBAL := PROC_ARRAY.INSIDE_ARRAY ( GLOBAL ) ;
  456.   end PROC_TEST ;
  457.  
  458. end DYNAMIC_ARRAY_PACKAGE_4 ;
  459. ::::::::::
  460. E000001.ADA
  461. ::::::::::
  462.  
  463. -- PERFORMANCE MEASUREMENT : exception raise and handle time
  464. --                           exception in loop
  465.  
  466. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  467. with ITERATION ; -- obtain stable measurement
  468. with PIWG_IO ; -- output results
  469.  
  470. procedure E000001 is  -- main procedure to execute
  471.  
  472.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  473.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  474.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  475.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  476.   STABLE : BOOLEAN ; -- true when measurement stable
  477.   MY_EXCEPTION : exception ;
  478.  
  479. --
  480.  
  481. begin
  482.  
  483.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  484.  
  485.   delay 0.5 ;  -- wait for stable enviornment on some machines
  486.  
  487.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  488.  
  489.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  490.  
  491. --
  492. -- Control loop
  493. --
  494.     ITERATION.START_CONTROL ;
  495.     for J in 1 .. ITERATION_COUNT loop
  496.       GLOBAL := 0 ;
  497.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  498.         begin
  499.           if A_ONE = 1 then
  500.             GLOBAL := GLOBAL + A_ONE ;
  501.             REMOTE ;
  502.           else
  503.             GLOBAL := GLOBAL + A_ONE ;
  504.             REMOTE ;
  505.             raise MY_EXCEPTION ;
  506.           end if ;
  507.         exception
  508.           when MY_EXCEPTION =>
  509.             null ;
  510.         end ;
  511.       end loop ;
  512.     end loop ;
  513.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  514.  
  515.  
  516. --
  517. -- Test loop
  518. --
  519. -- establish exception raise and handle time
  520.  
  521.     ITERATION.START_TEST ;
  522.     for J in 1 .. ITERATION_COUNT loop
  523.       GLOBAL := 0 ;
  524.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  525.         begin
  526.           if A_ONE = 2 then
  527.             GLOBAL := GLOBAL + A_ONE ;
  528.             REMOTE ;
  529.           else
  530.             GLOBAL := GLOBAL + A_ONE ;
  531.             REMOTE ;
  532.             raise MY_EXCEPTION ;
  533.           end if ;
  534.         exception
  535.           when MY_EXCEPTION =>
  536.             null ;
  537.         end ;
  538.       end loop ;
  539.     end loop ;
  540.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  541.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  542.     exit when STABLE ;
  543.   end loop ;
  544. --
  545.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  546.  
  547.  
  548. --
  549. -- Printout
  550. --
  551.   PIWG_IO.PIWG_OUTPUT ( "E000001" , "Exception" ,
  552.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  553.      " Time to raise and handle an exception " ,
  554.      " Exception defined locally and handled locally " ,
  555.      " " ) ;
  556.  
  557.  
  558. end E000001 ;
  559. ::::::::::
  560. E000002.ADA
  561. ::::::::::
  562.  
  563. -- PERFORMANCE MEASUREMENT : exception raise and handle time
  564. --                           exception in procedure 
  565.  
  566. package EXCEPT_PACK_2 is
  567.  
  568.   MY_EXCEPTION : exception ;
  569.   SWITCH : BOOLEAN ; -- controls return or raise exception
  570.  
  571.   procedure PROC_1 ( SWITCH : BOOLEAN ) ; -- either returns or raises exception
  572.  
  573. end EXCEPT_PACK_2 ;
  574.  
  575. with EXCEPT_PACK_2 ; use EXCEPT_PACK_2 ;
  576. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  577. with ITERATION ; -- obtain stable measurement
  578. with PIWG_IO ; -- output results
  579.  
  580. procedure E000002 is  -- main procedure to execute
  581.  
  582.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  583.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  584.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  585.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  586.   STABLE : BOOLEAN ; -- true when measurement stable
  587.  
  588. begin
  589.  
  590.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  591.  
  592.   delay 0.5 ;  -- wait for stable enviornment on some machines
  593.  
  594.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  595.  
  596.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  597.  
  598. --
  599. -- Control loop
  600. --
  601.     if A_ONE = 2 then
  602.       SWITCH := TRUE ;
  603.     else
  604.       SWITCH := FALSE ;
  605.     end if ;
  606.  
  607.     ITERATION.START_CONTROL ;
  608.     for J in 1 .. ITERATION_COUNT loop
  609.       GLOBAL := 0 ;
  610.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  611. --                     this has control global increment and call inside
  612.         begin
  613.           PROC_1 ( SWITCH ) ; -- FALSE  no exception raised
  614.         exception
  615.           when MY_EXCEPTION =>
  616.             null ;
  617.         end ;
  618.       end loop ;
  619.     end loop ;
  620.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  621.  
  622. --
  623. -- Test loop
  624. --
  625. -- establish exception raise and handle time
  626.  
  627.     if A_ONE = 1 then
  628.       SWITCH := TRUE ;
  629.     else
  630.       SWITCH := FALSE ;
  631.     end if ;
  632.  
  633.     ITERATION.START_TEST ;
  634.     for J in 1 .. ITERATION_COUNT loop
  635.       GLOBAL := 0 ;
  636.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  637. --                     this has control global increment and call inside
  638.         begin
  639.           PROC_1 ( SWITCH ) ; -- TRUE exception will be raised
  640.         exception
  641.           when MY_EXCEPTION =>
  642.             null ;
  643.         end ;
  644.       end loop ;
  645.     end loop ;
  646.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  647.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  648.     exit when STABLE ;
  649.   end loop ;
  650. --
  651.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  652.  
  653. --
  654. -- Printout
  655. --
  656.   PIWG_IO.PIWG_OUTPUT ( "E000002" , "Exception" ,
  657.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  658.     " Exception raise and handle timing measurement" ,
  659.     " when exception is in a procedure in a package" ,
  660.     " " ) ;
  661. end E000002 ;
  662.  
  663. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ;
  664. package body EXCEPT_PACK_2 is -- compare to E000001, diff is propegation
  665.  
  666.   procedure PROC_1 ( SWITCH : BOOLEAN ) is
  667.   begin
  668.     if SWITCH then
  669.       GLOBAL := GLOBAL + 1 ;
  670.       REMOTE ;
  671.       raise MY_EXCEPTION ;
  672.     else
  673.       GLOBAL := GLOBAL + 1 ;
  674.       REMOTE ;
  675.       return ;
  676.     end if ;
  677.   exception
  678.     when PROGRAM_ERROR =>
  679.       PROC_1 ( SWITCH ) ;
  680.   end PROC_1 ;
  681.  
  682. end EXCEPT_PACK_2 ;
  683. ::::::::::
  684. E000004.ADA
  685. ::::::::::
  686.  
  687. -- PERFORMANCE MEASUREMENT : exception raise and handle time
  688. --                           exception in procedure 4 deep
  689.  
  690. package EXCEPT_PACK_4 is
  691.  
  692.   MY_EXCEPTION : exception ;
  693.   SWITCH : BOOLEAN ; -- controls return or raise exception
  694.  
  695.   procedure PROC_1 ( SWITCH : BOOLEAN ) ; -- either returns or raises exception
  696.  
  697.   procedure PROC_2 ( SWITCH : BOOLEAN ) ; -- calls PROC_1
  698.  
  699.   procedure PROC_3 ( SWITCH : BOOLEAN ) ; -- calls PROC_2
  700.  
  701.   procedure PROC_4 ( SWITCH : BOOLEAN ) ; -- calls PROC_3
  702.  
  703. end EXCEPT_PACK_4 ;
  704.  
  705. with EXCEPT_PACK_4 ; use EXCEPT_PACK_4 ;
  706. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  707. with ITERATION ; -- obtain stable measurement
  708. with PIWG_IO ; -- output results
  709.  
  710. procedure E000004 is  -- main procedure to execute
  711.  
  712.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  713.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  714.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  715.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  716.   STABLE : BOOLEAN ; -- true when measurement stable
  717.  
  718. begin
  719.  
  720.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  721.  
  722.   delay 0.5 ;  -- wait for stable enviornment on some machines
  723.  
  724.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  725.  
  726.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  727.  
  728. --
  729. -- Control loop
  730. --
  731.     if A_ONE = 2 then
  732.       SWITCH := TRUE ;
  733.     else
  734.       SWITCH := FALSE ;
  735.     end if ;
  736.  
  737.     ITERATION.START_CONTROL ;
  738.     for J in 1 .. ITERATION_COUNT loop
  739.       GLOBAL := 0 ;
  740.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  741. --                     this has control global increment and call inside
  742.         begin
  743.           PROC_4 ( SWITCH ) ;
  744.         exception
  745.           when MY_EXCEPTION =>
  746.             null ;
  747.         end ;
  748.       end loop ;
  749.     end loop ;
  750.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  751.  
  752.  
  753. --
  754. -- Test loop
  755. --
  756. -- establish exception raise and handle time
  757.  
  758.     if A_ONE = 1 then
  759.       SWITCH := TRUE ;
  760.     else
  761.       SWITCH := FALSE ;
  762.     end if ;
  763.  
  764.     ITERATION.START_TEST ;
  765.     for J in 1 .. ITERATION_COUNT loop
  766.       GLOBAL := 0 ;
  767.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  768. --                     this has control global increment and call inside
  769.         begin
  770.           PROC_4 ( SWITCH ) ;
  771.         exception
  772.           when MY_EXCEPTION =>
  773.             null ;
  774.         end ;
  775.       end loop ;
  776.     end loop ;
  777.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  778.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  779.     exit when STABLE ;
  780.   end loop ;
  781. --
  782.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  783.  
  784. --
  785. -- Printout
  786. --
  787.   PIWG_IO.PIWG_OUTPUT ( "E000004" , "Procedure" ,
  788.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  789.     " Exception raise and handle timing measurement " ,
  790.     " when exception is in a package, 4 deep " ,
  791.     " " ) ;
  792. end E000004 ;
  793.  
  794. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ;
  795. package body EXCEPT_PACK_4 is -- compare to E000002, diff is propegation
  796.   procedure PROC_4 ( SWITCH : BOOLEAN ) is
  797.   begin
  798.     PROC_3 ( SWITCH ) ;
  799.   end PROC_4 ;
  800.  
  801.   procedure PROC_3 ( SWITCH : BOOLEAN ) is
  802.   begin
  803.     PROC_2 ( SWITCH ) ;
  804.   end PROC_3 ;
  805.  
  806.   procedure PROC_2 ( SWITCH : BOOLEAN ) is
  807.   begin
  808.     PROC_1 ( SWITCH ) ;
  809.   end PROC_2 ;
  810.  
  811.   procedure PROC_1 ( SWITCH : BOOLEAN ) is
  812.   begin
  813.     GLOBAL := GLOBAL + 1 ;
  814.     REMOTE ;
  815.     if SWITCH then
  816.       raise MY_EXCEPTION ;
  817.     else
  818.       return ;
  819.     end if ;
  820.   end PROC_1 ;
  821. end EXCEPT_PACK_4 ;
  822. ::::::::::
  823. F000001.ADA
  824. ::::::::::
  825. -- PERFORMANCE MEASUREMENT : Coding Style Feature
  826. --                           Logical equation vs if test
  827.  
  828. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ;
  829. with ITERATION ;
  830. with PIWG_IO ;
  831.  
  832. procedure F000001 is  -- main procedure to execute
  833.  
  834.   CPU_TIME : DURATION ;
  835.   WALL_TIME : DURATION ;
  836.   CHECK_TIMES : constant := 100 ;
  837.   ITERATION_COUNT : INTEGER ;
  838.   ITS_OK : BOOLEAN ;
  839.   FLAG : BOOLEAN ;
  840.   VALUE : INTEGER ;
  841. --
  842.  
  843. begin
  844.  
  845.   VALUE := 50 ;
  846.   FLAG := TRUE ;
  847.  
  848.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  849.  
  850.   delay 0.5 ;  -- wait for stable enviornment on some machines
  851.  
  852.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  853.  
  854.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  855.  
  856. --
  857. -- Control loop
  858. --
  859.     ITERATION.START_CONTROL ;
  860.     for J in 1 .. ITERATION_COUNT loop
  861.       GLOBAL := 0 ;
  862.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  863.         GLOBAL := GLOBAL + A_ONE ;
  864. --        FLAG := VALUE < GLOBAL ; -- feature being measured
  865.         REMOTE ;
  866.         FLAG := not FLAG ;
  867.       end loop ;
  868.     end loop ;
  869.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  870.  
  871.     if FLAG then -- be sure FLAG computed
  872.       GLOBAL := 1 ;
  873.       REMOTE ;
  874.     end if ;
  875.  
  876. --
  877. -- Test loop
  878. --
  879.     ITERATION.START_TEST ;
  880.     for J in 1 .. ITERATION_COUNT loop
  881.       GLOBAL := 0 ;
  882.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  883.         GLOBAL := GLOBAL + A_ONE ;
  884.         FLAG := VALUE < GLOBAL ; -- feature being measured
  885.         REMOTE ;
  886.         FLAG := not FLAG ;
  887.       end loop ;
  888.     end loop ;
  889.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  890.  
  891.     if FLAG then -- be sure FLAG computed
  892.       GLOBAL := 1 ;
  893.       REMOTE ;
  894.     end if ;
  895.  
  896.     ITERATION.TEST_STABLE ( ITERATION_COUNT , ITS_OK ) ;
  897.     exit when ITS_OK ;
  898.   end loop ;
  899. --
  900.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  901.  
  902. --
  903. -- Printout
  904. --
  905.   PIWG_IO.PIWG_OUTPUT ( "F000001" , "Style" ,
  906.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  907.      " Time to set a boolean flag using a logical equation" ,
  908.      " a local and a global integer are compared " ,
  909.      " compare this test with F000002" ) ;
  910.  
  911. end F000001 ;
  912. ::::::::::
  913. F000002.ADA
  914. ::::::::::
  915. -- PERFORMANCE MEASUREMENT : Coding Style Feature
  916. --                           Logical equation vs if test
  917. --                           F000001 and F000002 are a pair
  918.  
  919. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ;
  920. with ITERATION ;
  921. with PIWG_IO ;
  922.  
  923. procedure F000002 is  -- main procedure to execute
  924.  
  925.   CPU_TIME : DURATION ;
  926.   WALL_TIME : DURATION ;
  927.   CHECK_TIMES : constant := 100 ;
  928.   ITERATION_COUNT : INTEGER ;
  929.   ITS_OK : BOOLEAN ;
  930.   FLAG : BOOLEAN ;
  931.   VALUE : INTEGER ;
  932. --
  933.  
  934. begin
  935.  
  936.   VALUE := 50 ;
  937.   FLAG := TRUE ;
  938.  
  939.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  940.  
  941.   delay 0.5 ;  -- wait for stable enviornment on some machines
  942.  
  943.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  944.  
  945.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  946.  
  947. --
  948. -- Control loop
  949. --
  950.     ITERATION.START_CONTROL ;
  951.     for J in 1 .. ITERATION_COUNT loop
  952.       GLOBAL := 0 ;
  953.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  954.         GLOBAL := GLOBAL + A_ONE ;
  955.         REMOTE ;
  956.         FLAG := not FLAG ;
  957.       end loop ;
  958.     end loop ;
  959.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  960.  
  961.     if FLAG then -- be sure FLAG computed
  962.       GLOBAL := 1 ;
  963.       REMOTE ;
  964.     end if ;
  965.  
  966. --
  967. -- Test loop
  968. --
  969.     ITERATION.START_TEST ;
  970.     for J in 1 .. ITERATION_COUNT loop
  971.       GLOBAL := 0 ;
  972.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  973.         GLOBAL := GLOBAL + A_ONE ;
  974.         if VALUE < GLOBAL then -- feature being measured
  975.           FLAG := TRUE ;
  976.         else
  977.           FLAG := FALSE ;
  978.         end if ;
  979. --               FLAG := VALUE < GLOBAL ; -- equivalent computation
  980.         REMOTE ;
  981.         FLAG := not FLAG ;
  982.       end loop ;
  983.     end loop ;
  984.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  985.  
  986.     if FLAG then -- be sure FLAG computed
  987.       GLOBAL := 1 ;
  988.       REMOTE ;
  989.     end if ;
  990.  
  991.     ITERATION.TEST_STABLE ( ITERATION_COUNT , ITS_OK ) ;
  992.     exit when ITS_OK ;
  993.   end loop ;
  994. --
  995.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  996.  
  997. --
  998. -- Printout
  999. --
  1000.   PIWG_IO.PIWG_OUTPUT ( "F000002" , "Style" ,
  1001.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  1002.      " Time to set a boolean flag using an 'if' test" ,
  1003.      " a local and a global integer are compared " ,
  1004.      " compare this test with F000001" ) ;
  1005.  
  1006. end F000002 ;
  1007. ::::::::::
  1008. G000001.ADA
  1009. ::::::::::
  1010.  
  1011. -- PERFORMANCE MEASUREMENT : function GET_LINE timing
  1012.  
  1013. with TEXT_IO ; use TEXT_IO ;
  1014. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  1015. with ITERATION ; -- obtain stable measurement
  1016. with PIWG_IO ; -- output results
  1017.  
  1018. procedure G000001 is  -- main procedure to execute
  1019.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  1020.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  1021.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  1022.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  1023.   STABLE : BOOLEAN ; -- true when measurement stable
  1024.   SCRATCH_FILE : FILE_TYPE ;
  1025.   SCRATCH_STRING : STRING ( 1..20 ) := "abcdefghijklmnopqrst";
  1026.   SCRATCH_LENGTH : NATURAL ;
  1027.  
  1028. begin
  1029. --
  1030. --  Build file for " GET_LINE " test
  1031. --
  1032.   CREATE ( SCRATCH_FILE , OUT_FILE , "SCRATCH1" ) ;
  1033.   for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  1034.     PUT_LINE ( SCRATCH_FILE , SCRATCH_STRING ) ;
  1035.   end loop ;
  1036.   CLOSE ( SCRATCH_FILE ) ;
  1037.   OPEN ( SCRATCH_FILE , IN_FILE , "SCRATCH1" ) ;
  1038.  
  1039.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  1040.  
  1041.   delay 0.5 ;  -- wait for stable enviornment on some machines
  1042.  
  1043.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  1044.  
  1045.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  1046.  
  1047. --
  1048. -- Control loop
  1049. --
  1050.     ITERATION.START_CONTROL ;
  1051.     for J in 1 .. ITERATION_COUNT loop
  1052.       GLOBAL := 0 ;
  1053.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  1054.         GLOBAL := GLOBAL + A_ONE ; 
  1055.         REMOTE ;                   
  1056.       end loop ;
  1057.       RESET ( SCRATCH_FILE ) ;
  1058.     end loop ;
  1059.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  1060.  
  1061. --
  1062. -- Test loop
  1063. --
  1064. -- establish the time for the GET_LINE pocdedure on 20 character strings
  1065.  
  1066.     ITERATION.START_TEST ;
  1067.     for J in 1 .. ITERATION_COUNT loop
  1068.       GLOBAL := 0 ;
  1069.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  1070.         GLOBAL := GLOBAL + A_ONE ; 
  1071.         REMOTE ;                   
  1072.         GET_LINE ( SCRATCH_FILE , SCRATCH_STRING , SCRATCH_LENGTH ) ;
  1073.       end loop ;
  1074.       RESET ( SCRATCH_FILE ) ;
  1075.     end loop ;
  1076.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  1077.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  1078.     exit when STABLE ;
  1079.   end loop ;
  1080. --
  1081.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  1082.  
  1083.   CLOSE ( SCRATCH_FILE ) ;
  1084. --
  1085. -- Printout
  1086. --
  1087.   PIWG_IO.PIWG_OUTPUT ( "G000001" , "Input/Output" ,
  1088.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  1089.      " TEXT_IO.GET_LINE reading 20 characters, time measured " ,
  1090.      " A scratch file is written, then read and reset " ,
  1091.      " " ) ;
  1092.  
  1093. end G000001 ;
  1094. ::::::::::
  1095. G000002.ADA
  1096. ::::::::::
  1097.  
  1098. -- PERFORMANCE MEASUREMENT : function GET timing
  1099.  
  1100. with TEXT_IO ; use TEXT_IO ;
  1101. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  1102. with ITERATION ; -- obtain stable measurement
  1103. with PIWG_IO ; -- output results
  1104.  
  1105. procedure G000002 is  -- main procedure to execute
  1106.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  1107.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  1108.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  1109.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  1110.   STABLE : BOOLEAN ; -- true when measurement stable
  1111.   SCRATCH_FILE : FILE_TYPE ;
  1112.   SCRATCH_STRING : STRING ( 1..20 ) := "abcdefghijklmnopqrst";
  1113.   SCRATCH_LENGTH : NATURAL ;
  1114.   SCRATCH_CHAR : CHARACTER := 'a' ;
  1115. --
  1116.  
  1117. begin
  1118. --
  1119. --  Build file for "GET" test
  1120. --
  1121.   CREATE ( SCRATCH_FILE , OUT_FILE , "SCRATCH2" ) ;
  1122.   for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  1123.     PUT_LINE ( SCRATCH_FILE , SCRATCH_STRING ) ;
  1124.   end loop ;
  1125.   CLOSE ( SCRATCH_FILE ) ;
  1126.   OPEN ( SCRATCH_FILE , IN_FILE , "SCRATCH2" ) ;
  1127.  
  1128.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  1129.  
  1130.   delay 0.5 ;  -- wait for stable enviornment on some machines
  1131.  
  1132.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  1133.  
  1134.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  1135.  
  1136. --
  1137. -- Control loop
  1138. --
  1139.     ITERATION.START_CONTROL ;
  1140.     for J in 1 .. ITERATION_COUNT loop
  1141.       GLOBAL := 0 ;
  1142.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  1143.         GLOBAL := GLOBAL + A_ONE ; 
  1144.         REMOTE ;                   
  1145. --        GET ( SCRATCH_FILE , SCRATCH_CHAR ) ; -- measured
  1146.         for I in 1..20 loop
  1147.           SCRATCH_STRING ( I ) := SCRATCH_CHAR ;
  1148.         end loop ;
  1149.       end loop ;
  1150.       RESET ( SCRATCH_FILE ) ;
  1151.     end loop ;
  1152.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  1153.  
  1154.  
  1155. --
  1156. -- Test loop
  1157. --
  1158. -- establish the time for the GET pocdedure on 20 character strings
  1159.  
  1160.     ITERATION.START_TEST ;
  1161.     for J in 1 .. ITERATION_COUNT loop
  1162.       GLOBAL := 0 ;
  1163.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  1164.         GLOBAL := GLOBAL + A_ONE ; 
  1165.         REMOTE ;                   
  1166.         for I in 1..20 loop
  1167.           GET ( SCRATCH_FILE , SCRATCH_CHAR ) ;
  1168.           SCRATCH_STRING ( I ) := SCRATCH_CHAR ;
  1169.         end loop ;
  1170.       end loop ;
  1171.       RESET ( SCRATCH_FILE ) ;
  1172.     end loop ;
  1173.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  1174.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  1175.     exit when STABLE ;
  1176.   end loop ;
  1177. --
  1178.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  1179.  
  1180.   CLOSE ( SCRATCH_FILE ) ;
  1181. --
  1182. -- Printout
  1183. --
  1184.   PIWG_IO.PIWG_OUTPUT ( "G000002" , "Input/Output" ,
  1185.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  1186.      " TEXT_IO.GET called 20 times per line, time measured " ,
  1187.      " a scratch file is written, then read and reset " ,
  1188.      " Compare to G000001 for about same number of characters " ) ;
  1189.  
  1190. end G000002 ;
  1191. ::::::::::
  1192. G000003.ADA
  1193. ::::::::::
  1194.  
  1195. -- PERFORMANCE MEASUREMENT : function PUT_LINE timing
  1196.  
  1197. with TEXT_IO ; use TEXT_IO ;
  1198. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  1199. with ITERATION ; -- obtain stable measurement
  1200. with PIWG_IO ; -- output results
  1201.  
  1202. procedure G000003 is  -- main procedure to execute
  1203.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  1204.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  1205.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  1206.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  1207.   STABLE : BOOLEAN ; -- true when measurement stable
  1208.   SCRATCH_FILE : FILE_TYPE ;
  1209.   SCRATCH_STRING : STRING ( 1..20 ) := "abcdefghijklmnopqrst";
  1210.   SCRATCH_LENGTH : NATURAL ;
  1211.  
  1212. begin
  1213. --
  1214. --  Open file for " PUT_LINE " test
  1215. --
  1216.   CREATE ( SCRATCH_FILE , OUT_FILE , "SCRATCH3" ) ;
  1217.  
  1218.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  1219.  
  1220.   delay 0.5 ;  -- wait for stable enviornment on some machines
  1221.  
  1222.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  1223.  
  1224.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  1225.  
  1226. --
  1227. -- Control loop
  1228. --
  1229.     ITERATION.START_CONTROL ;
  1230.     for J in 1 .. ITERATION_COUNT loop
  1231.       GLOBAL := 0 ;
  1232.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  1233.         GLOBAL := GLOBAL + A_ONE ; 
  1234.         REMOTE ;                   
  1235.       end loop ;
  1236.       RESET ( SCRATCH_FILE ) ;
  1237.     end loop ;
  1238.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  1239.  
  1240. --
  1241. -- Test loop
  1242. --
  1243. -- establish the time for the PUT_LINE pocdedure on 20 character strings
  1244.  
  1245.     ITERATION.START_TEST ;
  1246.     for J in 1 .. ITERATION_COUNT loop
  1247.       GLOBAL := 0 ;
  1248.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  1249.         GLOBAL := GLOBAL + A_ONE ; 
  1250.         REMOTE ;                   
  1251.         PUT_LINE ( SCRATCH_FILE , SCRATCH_STRING ) ;
  1252.       end loop ;
  1253.       RESET ( SCRATCH_FILE ) ;
  1254.     end loop ;
  1255.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  1256.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  1257.     exit when STABLE ;
  1258.   end loop ;
  1259. --
  1260.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  1261.  
  1262.   CLOSE ( SCRATCH_FILE ) ;
  1263. --
  1264. -- Printout
  1265. --
  1266.   PIWG_IO.PIWG_OUTPUT ( "G000003" , "Input/Output" ,
  1267.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  1268.      " TEXT_IO.PUT_LINE for 20 characters, timing measurment" ,
  1269.      " a scratch file is opened, written and reset" ,
  1270.      " " ) ;
  1271. end G000003 ;
  1272. ::::::::::
  1273. G000004.ADA
  1274. ::::::::::
  1275.  
  1276. -- PERFORMANCE MEASUREMENT : function PUT timing
  1277.  
  1278. with TEXT_IO ; use TEXT_IO ;
  1279. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  1280. with ITERATION ; -- obtain stable measurement
  1281. with PIWG_IO ; -- output results
  1282.  
  1283. procedure G000004 is  -- main procedure to execute
  1284.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  1285.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  1286.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  1287.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  1288.   STABLE : BOOLEAN ; -- true when measurement stable
  1289.   SCRATCH_FILE : FILE_TYPE ;
  1290.   SCRATCH_STRING : STRING ( 1..20 ) := "abcdefghijklmnopqrst";
  1291.   SCRATCH_LENGTH : NATURAL ;
  1292.   SCRATCH_CHAR : CHARACTER := 'a';
  1293. --
  1294.  
  1295. begin
  1296. --
  1297. --  Build file for "PUT" test
  1298. --
  1299.    CREATE ( SCRATCH_FILE , OUT_FILE , "SCRATCH4" ) ;
  1300.  
  1301.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  1302.  
  1303.   delay 0.5 ;  -- wait for stable enviornment on some machines
  1304.  
  1305.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  1306.  
  1307.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  1308.  
  1309. --
  1310. -- Control loop
  1311. --
  1312.     ITERATION.START_CONTROL ;
  1313.     for J in 1 .. ITERATION_COUNT loop
  1314.       GLOBAL := 0 ;
  1315.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  1316.         GLOBAL := GLOBAL + A_ONE ; 
  1317.         REMOTE ;                   
  1318.         for I in 1..20 loop
  1319. --          PUT ( SCRATCH_FILE , SCRATCH_CHAR ) ; -- measured
  1320.           SCRATCH_STRING ( I ) := SCRATCH_CHAR ;
  1321.         end loop ;
  1322.       end loop ;
  1323.       RESET ( SCRATCH_FILE ) ;
  1324.     end loop ;
  1325.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  1326.  
  1327.  
  1328. --
  1329. -- Test loop
  1330. --
  1331. -- establish the time for the PUT pocdedure on 20 character strings
  1332.  
  1333.  
  1334.     ITERATION.START_TEST ;
  1335.     for J in 1 .. ITERATION_COUNT loop
  1336.       GLOBAL := 0 ;
  1337.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  1338.         GLOBAL := GLOBAL + A_ONE ;
  1339.         REMOTE ;
  1340.         for I in 1..20 loop
  1341.           PUT ( SCRATCH_FILE , SCRATCH_CHAR ) ;
  1342.           SCRATCH_STRING ( I ) := SCRATCH_CHAR ;
  1343.         end loop ;
  1344.       end loop ;
  1345.       RESET ( SCRATCH_FILE ) ;
  1346.     end loop ;
  1347.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  1348.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  1349.     exit when STABLE ;
  1350.   end loop ;
  1351. --
  1352.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  1353.  
  1354.   CLOSE ( SCRATCH_FILE ) ;
  1355. --
  1356. -- Printout
  1357. --
  1358.   PIWG_IO.PIWG_OUTPUT ( "G000004" , "Input/Output" ,
  1359.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  1360.      " TEXT_IO.PUT 20 times with one character, time measurement" ,
  1361.      " a scratch file is written, reset and rewritten " ,
  1362.      " compare, approximately, to G000003" ) ;
  1363. end G000004 ;
  1364. ::::::::::
  1365. G000005.ADA
  1366. ::::::::::
  1367.  
  1368. -- PERFORMANCE MEASUREMENT : function GET timing ( INTERNAL )
  1369.  
  1370. with TEXT_IO ; use TEXT_IO ;
  1371. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  1372. with ITERATION ; -- obtain stable measurement
  1373. with PIWG_IO ; -- output results
  1374.  
  1375. procedure G000005 is  -- main procedure to execute
  1376.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  1377.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  1378.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  1379.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  1380.   STABLE : BOOLEAN ; -- true when measurement stable
  1381.   SCRATCH_STRING : STRING ( 1..6 ) := "100   ";
  1382.   SCRATCH_LENGTH : NATURAL ;
  1383.   SCRATCH_VALUE  : INTEGER ;
  1384.   package INT_IO is new INTEGER_IO ( INTEGER ) ; use INT_IO ;
  1385.  
  1386. begin
  1387.  
  1388.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  1389.  
  1390.   delay 0.5 ;  -- wait for stable enviornment on some machines
  1391.  
  1392.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  1393.  
  1394.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  1395.  
  1396. --
  1397. -- Control loop
  1398. --
  1399.     ITERATION.START_CONTROL ;
  1400.     for J in 1 .. ITERATION_COUNT loop
  1401.       GLOBAL := 0 ;
  1402.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  1403.         GLOBAL := GLOBAL + A_ONE ; 
  1404.         REMOTE ;                   
  1405.         PUT ( SCRATCH_STRING , INSIDE_LOOP ) ;
  1406.       end loop ;
  1407.     end loop ;
  1408.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  1409.  
  1410.  
  1411. --
  1412. -- Test loop
  1413. --
  1414. -- establish the time for the GET pocdedure on an integer
  1415.  
  1416.     ITERATION.START_TEST ;
  1417.     for J in 1 .. ITERATION_COUNT loop
  1418.       GLOBAL := 0 ;
  1419.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  1420.         GLOBAL := GLOBAL + A_ONE ; 
  1421.         REMOTE ;                   
  1422.         PUT ( SCRATCH_STRING , INSIDE_LOOP ) ;
  1423.         GET ( SCRATCH_STRING , SCRATCH_VALUE , SCRATCH_LENGTH ) ;
  1424.       end loop ;
  1425.     end loop ;
  1426.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  1427.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  1428.     exit when STABLE ;
  1429.   end loop ;
  1430. --
  1431.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  1432.  
  1433. --
  1434. -- Printout
  1435. --
  1436.   PIWG_IO.PIWG_OUTPUT ( "G000005" , "Input/Output" ,
  1437.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  1438.      " TEXT_IO.GET an integer from a local string, timing measurement" ,
  1439.      " use TEXT_IO.PUT to convert 1..100 to a string " ,
  1440.      " then use TEXT_IO.GET to get the number back" ) ;
  1441.  
  1442. end G000005 ;
  1443. ::::::::::
  1444. G000006.ADA
  1445. ::::::::::
  1446.  
  1447. -- PERFORMANCE MEASUREMENT : function GET timing ( INTERNAL FLOAT)
  1448.  
  1449. with TEXT_IO ; use TEXT_IO ;
  1450. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  1451. with ITERATION ; -- obtain stable measurement
  1452. with PIWG_IO ; -- output results
  1453.  
  1454. procedure G000006 is  -- main procedure to execute
  1455.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  1456.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  1457.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  1458.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  1459.   STABLE : BOOLEAN ; -- true when measurement stable
  1460.   SCRATCH_STRING : STRING ( 1..20 ) := "0.010               ";
  1461.   SCRATCH_LENGTH : NATURAL ;
  1462.   SCRATCH_VALUE  : FLOAT ;
  1463.   package FLT_IO is new FLOAT_IO ( FLOAT ) ; use FLT_IO ;
  1464. --
  1465.  
  1466. begin
  1467.  
  1468.  
  1469.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  1470.  
  1471.   delay 0.5 ;  -- wait for stable enviornment on some machines
  1472.  
  1473.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  1474.  
  1475.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  1476.  
  1477. --
  1478. -- Control loop
  1479. --
  1480.     ITERATION.START_CONTROL ;
  1481.     for J in 1 .. ITERATION_COUNT loop
  1482.       GLOBAL := 0 ;
  1483.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  1484.         GLOBAL := GLOBAL + A_ONE ; 
  1485.         REMOTE ;                   
  1486.         SCRATCH_VALUE := FLOAT ( INSIDE_LOOP ) / 1000.0 ;
  1487.         PUT ( SCRATCH_STRING , SCRATCH_VALUE ) ;
  1488.       end loop ;
  1489.     end loop ;
  1490.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  1491.  
  1492.  
  1493. --
  1494. -- Test loop
  1495. --
  1496. -- establish the time for the GET pocdedure on a FLOAT number
  1497.  
  1498.     ITERATION.START_TEST ;
  1499.     for J in 1 .. ITERATION_COUNT loop
  1500.       GLOBAL := 0 ;
  1501.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  1502.         GLOBAL := GLOBAL + A_ONE ;
  1503.         REMOTE ;
  1504.         SCRATCH_VALUE := FLOAT ( INSIDE_LOOP ) / 1000.0 ;
  1505.         PUT ( SCRATCH_STRING , SCRATCH_VALUE ) ;
  1506.         GET ( SCRATCH_STRING , SCRATCH_VALUE , SCRATCH_LENGTH ) ;
  1507.       end loop ;
  1508.     end loop ;
  1509.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  1510.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  1511.     exit when STABLE ;
  1512.   end loop ;
  1513. --
  1514.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  1515.  
  1516. --
  1517. -- Printout
  1518. --
  1519.   PIWG_IO.PIWG_OUTPUT ( "G000006" , "Input/Output" ,
  1520.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  1521.      " TEXT_IO.GET getting a floating point fraction from a local string" ,
  1522.      " Timing measurement on 0.001 to 0.01 range of numbers" ,
  1523.      " compare, approximately, to G000005 for integer vs float" ) ;
  1524.  
  1525. end G000006 ;
  1526. ::::::::::
  1527. G000007.ADA
  1528. ::::::::::
  1529.  
  1530. -- PERFORMANCE MEASUREMENT : opening files
  1531.  
  1532. with TEXT_IO ; use TEXT_IO ;
  1533. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  1534. with ITERATION ; -- obtain stable measurement
  1535. with PIWG_IO ; -- output results
  1536.  
  1537. procedure G000007 is  -- main procedure to execute
  1538.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  1539.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  1540.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  1541.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  1542.   STABLE : BOOLEAN ; -- true when measurement stable
  1543.   SCRATCH : FILE_TYPE ;
  1544.  
  1545. begin
  1546.  
  1547.    CREATE ( SCRATCH , OUT_FILE , "SCRATCH7" );
  1548.    PUT_LINE ( SCRATCH , " just stuff " ) ;
  1549.    CLOSE ( SCRATCH ) ;
  1550.  
  1551.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  1552.  
  1553.   delay 0.5 ;  -- wait for stable enviornment on some machines
  1554.  
  1555.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  1556.  
  1557.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  1558.  
  1559. --
  1560. -- Control loop
  1561. --
  1562.     ITERATION.START_CONTROL ;
  1563.     for J in 1 .. ITERATION_COUNT loop
  1564.       GLOBAL := 0 ;
  1565.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  1566.         GLOBAL := GLOBAL + A_ONE ; 
  1567.         REMOTE ;                   
  1568.       end loop ;
  1569.     end loop ;
  1570.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  1571.  
  1572. --
  1573. -- Test loop
  1574. --
  1575. -- establish the time to open a file
  1576.  
  1577.     ITERATION.START_TEST ;
  1578.     for J in 1 .. ITERATION_COUNT loop
  1579.       GLOBAL := 0 ;
  1580.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  1581.         GLOBAL := GLOBAL + A_ONE ;
  1582.         REMOTE ;
  1583.         OPEN ( SCRATCH , IN_FILE , "SCRATCH7" ) ;
  1584.         CLOSE ( SCRATCH ) ;
  1585.       end loop ;
  1586.     end loop ;
  1587.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  1588.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  1589.     exit when STABLE ;
  1590.   end loop ;
  1591. --
  1592.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  1593.  
  1594. --
  1595. -- Printout
  1596. --
  1597.   PIWG_IO.PIWG_OUTPUT ( "G000007" , "Input/Output" ,
  1598.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  1599.      " Open and close an existing file, time measurement" ,
  1600.      " A scratch file is created and closed " ,
  1601.      " The scratch file is opened IN_FILE and closed in a loop" ) ;
  1602.  
  1603. end G000007 ;
  1604. ::::::::::
  1605. GETPIWG.SUB
  1606. ::::::::::
  1607. @ftp ada20.isi.edu
  1608. login anonymous
  1609. a
  1610. cd <info-ada.piwg>
  1611. get A000001.ADA *
  1612. get A000002.ADA *
  1613. get A000011.ADA *
  1614. get A000012.ADA *
  1615. get A000013.ADA *
  1616. get A000014.ADA *
  1617. get A000015.ADA *
  1618. get A000016.ADA *
  1619. get A000021.ADA *
  1620. get A000022.ADA *
  1621. get A000031.ADA *
  1622. get A000032.ADA *
  1623. get A000033.ADA *
  1624. get A000041.ADA *
  1625. get A000042.ADA *
  1626. get A000043.ADA *
  1627. get A000044.ADA *
  1628. get A000049.ADA *
  1629. get A000051.ADA *
  1630. get A000052.ADA *
  1631. get A000053.ADA *
  1632. get A000054.ADA *
  1633. get A000055.ADA *
  1634. get A000091.ADA *
  1635. get A000092.ADA *
  1636. get A000093.ADA *
  1637. get A000094.ADA *
  1638. get A000098.ADA *
  1639. get A000099.ADA *
  1640. get A000100.ADA *
  1641. get A000101.ADA *
  1642. get A000102.ADA *
  1643. get A000103.ADA *
  1644. get A000104.ADA *
  1645. get A000105.ADA *
  1646. get A000106.ADA *
  1647. get A000107.ADA *
  1648. get ACOMPILE.CLI *
  1649. get ACOMPILE.COM *
  1650. get ACOMPILE.LR1 *
  1651. get C000001.ADA *
  1652. get C000002.ADA *
  1653. get C000003.ADA *
  1654. get COMPILE.CLI *
  1655. get COMPILE.COM *
  1656. get COMPILE.L78 *
  1657. get COMPILE.L86 *
  1658. get COPY.COM *
  1659. get COPY.R10 *
  1660. get D000001.ADA *
  1661. get D000002.ADA *
  1662. get D000003.ADA *
  1663. get D000004.ADA *
  1664. get E000001.ADA *
  1665. get E000002.ADA *
  1666. get E000004.ADA *
  1667. get F000001.ADA *
  1668. get F000002.ADA *
  1669. get G000001.ADA *
  1670. get G000002.ADA *
  1671. get G000003.ADA *
  1672. get G000004.ADA *
  1673. get G000005.ADA *
  1674. get G000006.ADA *
  1675. get G000007.ADA *
  1676. get L000001.ADA *
  1677. get L000002.ADA *
  1678. get L000003.ADA *
  1679. get P000001.ADA *
  1680. get P000002.ADA *
  1681. get P000003.ADA *
  1682. get P000004.ADA *
  1683. get P000005.ADA *
  1684. get P000006.ADA *
  1685. get P000007.ADA *
  1686. get P000010.ADA *
  1687. get P000011.ADA *
  1688. get P000012.ADA *
  1689. get P000013.ADA *
  1690. get READ.ME *
  1691. get T000001.ADA *
  1692. get T000002.ADA *
  1693. get T000003.ADA *
  1694. get T000004.ADA *
  1695. get T000005.ADA *
  1696. get T000006.ADA *
  1697. get T000007.ADA *
  1698. get TAPE.LOG *
  1699. get TAPEDIST.LTR *
  1700. get WCOMPILE.COM *
  1701. get Z000001.ADA *
  1702. get Z000002.ADA *
  1703. get Z000003.ADA *
  1704. get Z000004.ADA *
  1705. get Z000005.ADA *
  1706. get Z000006.ADA *
  1707. get Z000007.ADA *
  1708. get Z000008.ADA *
  1709. get Z000009.ADA *
  1710. get Z000010.ADA *
  1711. get Z000011.ADA *
  1712. get Z000012.ADA *
  1713. get Z000013.ADA *
  1714. get Z000014.ADA *
  1715. get Z000015.ADA *
  1716. get Z000016.ADA *
  1717. get Z000016A.ADA *
  1718. get Z000017.ADA *
  1719. get Z000017A.ADA *
  1720. get Z000018.ADA *
  1721. get Z000020.ADA *
  1722. get Z000021.ADA *
  1723. get Z000022.ADA *
  1724. get Z000023.ADA *
  1725. get Z000110.ADA *
  1726. get Z000111.ADA *
  1727. get Z000111.COM *
  1728. get Z000111D.CLI *
  1729. get Z000111D.COM *
  1730. get Z000112.ADA *
  1731. get Z000113.ADA *
  1732. get Z000114.ADA *
  1733. get Z00011D.L86 *
  1734. get Z000121.ADA *
  1735. get Z000122.ADA *
  1736. get Z000123.ADA *
  1737. get Z000124.ADA *
  1738. get Z000131.ADA *
  1739. get Z000132.ADA *
  1740. get Z000133.ADA *
  1741. get Z000134.ADA *
  1742. get Z000141.ADA *
  1743. get Z000142.ADA *
  1744. get Z000143.ADA *
  1745. get Z000151.ADA *
  1746. get Z000152.ADA *
  1747. get Z000153.ADA *
  1748. get Z000161.ADA *
  1749. get Z000162.ADA *
  1750. get Z000171.ADA *
  1751. get Z000172.ADA *
  1752. get Z000173.ADA *
  1753. get Z000181.ADA *
  1754. get Z000182.ADA *
  1755. get Z000183.ADA *
  1756. get Z000184.ADA *
  1757. get Z000191.ADA *
  1758. get Z000192.ADA *
  1759. get Z000193.ADA *
  1760. get Z000201.ADA *
  1761. get Z000202.ADA *
  1762. get Z000203.ADA *
  1763. get Z000211.ADA *
  1764. get Z000212.ADA *
  1765. get Z000213.ADA *
  1766. get Z000221.ADA *
  1767. get Z000222.ADA *
  1768. get Z000223.ADA *
  1769. get Z000224.ADA *
  1770. get Z000231.ADA *
  1771. get Z000232.ADA *
  1772. get Z000233.ADA *
  1773. get Z000234.ADA *
  1774. get Z000241.ADA *
  1775. get Z000242.ADA *
  1776. get Z000243.ADA *
  1777. get Z000244.ADA *
  1778. get Z000254.ADA *
  1779. get Z000264.ADA *
  1780. get Z000274.ADA *
  1781. get Z000281.ADA *
  1782. get Z000282.ADA *
  1783. get Z000283.ADA *
  1784. get Z000284.ADA *
  1785. get Z000291.ADA *
  1786. get Z000292.ADA *
  1787. get Z000293.ADA *
  1788. get Z000294.ADA *
  1789. get Z000295.ADA *
  1790. get Z000301.ADA *
  1791. get Z000302.ADA *
  1792. get Z000303.ADA *
  1793. get Z000304.ADA *
  1794. get Z000311.ADA *
  1795. get Z000312.ADA *
  1796. get Z000313.ADA *
  1797. get Z000314.ADA *
  1798. get Z000315.ADA *
  1799. get ZCOMPILE.CLI *
  1800. get ZCOMPILE.COM *
  1801. get ZCOMPILE.ICC *
  1802. get ZCOMPILE.L86 *
  1803. quit
  1804. ::::::::::
  1805. L000001.ADA
  1806. ::::::::::
  1807.  
  1808. -- PERFORMANCE MEASUREMENT : Measure simple "for" loop time
  1809. --                           loop is run 100 times
  1810. --                           time reported is for once through
  1811.  
  1812. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  1813. with ITERATION ; -- obtain stable measurement
  1814. with PIWG_IO ; -- output results
  1815.  
  1816. procedure L000001 is  -- main procedure to execute
  1817.  
  1818.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  1819.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  1820.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  1821.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  1822.   STABLE : BOOLEAN ; -- true when measurement stable
  1823.   CASE_COUNT : constant := 100 ;
  1824.  
  1825. begin
  1826.  
  1827.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  1828.  
  1829.   delay 0.5 ;  -- wait for stable enviornment on some machines
  1830.  
  1831.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  1832.  
  1833.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  1834.  
  1835. --
  1836. -- Control loop
  1837. --
  1838.     ITERATION.START_CONTROL ;
  1839.     for J in 1 .. ITERATION_COUNT loop
  1840.       GLOBAL := 0 ;
  1841.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  1842.         GLOBAL := GLOBAL + A_ONE ; -- something to do
  1843.         REMOTE ;                   -- that can not be pulled out of loop
  1844.         GLOBAL := GLOBAL + A_ONE ; -- repeated here 100 times
  1845.         REMOTE ;
  1846.         GLOBAL := GLOBAL + A_ONE ;
  1847.         REMOTE ;
  1848.         GLOBAL := GLOBAL + A_ONE ;
  1849.         REMOTE ;
  1850.         GLOBAL := GLOBAL + A_ONE ;
  1851.         REMOTE ;
  1852.         GLOBAL := GLOBAL + A_ONE ;
  1853.         REMOTE ;
  1854.         GLOBAL := GLOBAL + A_ONE ;
  1855.         REMOTE ;
  1856.         GLOBAL := GLOBAL + A_ONE ;
  1857.         REMOTE ;
  1858.         GLOBAL := GLOBAL + A_ONE ;
  1859.         REMOTE ;
  1860.         GLOBAL := GLOBAL + A_ONE ;
  1861.         REMOTE ;
  1862.         GLOBAL := GLOBAL + A_ONE ;
  1863.         REMOTE ;
  1864.         GLOBAL := GLOBAL + A_ONE ;
  1865.         REMOTE ;
  1866.         GLOBAL := GLOBAL + A_ONE ;
  1867.         REMOTE ;
  1868.         GLOBAL := GLOBAL + A_ONE ;
  1869.         REMOTE ;
  1870.         GLOBAL := GLOBAL + A_ONE ;
  1871.         REMOTE ;
  1872.         GLOBAL := GLOBAL + A_ONE ;
  1873.         REMOTE ;
  1874.         GLOBAL := GLOBAL + A_ONE ;
  1875.         REMOTE ;
  1876.         GLOBAL := GLOBAL + A_ONE ;
  1877.         REMOTE ;
  1878.         GLOBAL := GLOBAL + A_ONE ;
  1879.         REMOTE ;
  1880.         GLOBAL := GLOBAL + A_ONE ;
  1881.         REMOTE ;
  1882.         GLOBAL := GLOBAL + A_ONE ;
  1883.         REMOTE ;
  1884.         GLOBAL := GLOBAL + A_ONE ;
  1885.         REMOTE ;
  1886.         GLOBAL := GLOBAL + A_ONE ;
  1887.         REMOTE ;
  1888.         GLOBAL := GLOBAL + A_ONE ;
  1889.         REMOTE ;
  1890.         GLOBAL := GLOBAL + A_ONE ;
  1891.         REMOTE ;
  1892.         GLOBAL := GLOBAL + A_ONE ;
  1893.         REMOTE ;
  1894.         GLOBAL := GLOBAL + A_ONE ;
  1895.         REMOTE ;
  1896.         GLOBAL := GLOBAL + A_ONE ;
  1897.         REMOTE ;
  1898.         GLOBAL := GLOBAL + A_ONE ;
  1899.         REMOTE ;
  1900.         GLOBAL := GLOBAL + A_ONE ;
  1901.         REMOTE ;
  1902.         GLOBAL := GLOBAL + A_ONE ;
  1903.         REMOTE ;
  1904.         GLOBAL := GLOBAL + A_ONE ;
  1905.         REMOTE ;
  1906.         GLOBAL := GLOBAL + A_ONE ;
  1907.         REMOTE ;
  1908.         GLOBAL := GLOBAL + A_ONE ;
  1909.         REMOTE ;
  1910.         GLOBAL := GLOBAL + A_ONE ;
  1911.         REMOTE ;
  1912.         GLOBAL := GLOBAL + A_ONE ;
  1913.         REMOTE ;
  1914.         GLOBAL := GLOBAL + A_ONE ;
  1915.         REMOTE ;
  1916.         GLOBAL := GLOBAL + A_ONE ;
  1917.         REMOTE ;
  1918.         GLOBAL := GLOBAL + A_ONE ;
  1919.         REMOTE ;
  1920.         GLOBAL := GLOBAL + A_ONE ;
  1921.         REMOTE ;
  1922.         GLOBAL := GLOBAL + A_ONE ;
  1923.         REMOTE ;
  1924.         GLOBAL := GLOBAL + A_ONE ;
  1925.         REMOTE ;
  1926.         GLOBAL := GLOBAL + A_ONE ;
  1927.         REMOTE ;
  1928.         GLOBAL := GLOBAL + A_ONE ;
  1929.         REMOTE ;
  1930.         GLOBAL := GLOBAL + A_ONE ;
  1931.         REMOTE ;
  1932.         GLOBAL := GLOBAL + A_ONE ;
  1933.         REMOTE ;
  1934.         GLOBAL := GLOBAL + A_ONE ;
  1935.         REMOTE ;
  1936.         GLOBAL := GLOBAL + A_ONE ;
  1937.         REMOTE ;
  1938.         GLOBAL := GLOBAL + A_ONE ;
  1939.         REMOTE ;
  1940.         GLOBAL := GLOBAL + A_ONE ;
  1941.         REMOTE ;
  1942.         GLOBAL := GLOBAL + A_ONE ;
  1943.         REMOTE ;
  1944.         GLOBAL := GLOBAL + A_ONE ;
  1945.         REMOTE ;
  1946.         GLOBAL := GLOBAL + A_ONE ;
  1947.         REMOTE ;
  1948.         GLOBAL := GLOBAL + A_ONE ;
  1949.         REMOTE ;
  1950.         GLOBAL := GLOBAL + A_ONE ;
  1951.         REMOTE ;
  1952.         GLOBAL := GLOBAL + A_ONE ;
  1953.         REMOTE ;
  1954.         GLOBAL := GLOBAL + A_ONE ;
  1955.         REMOTE ;
  1956.         GLOBAL := GLOBAL + A_ONE ;
  1957.         REMOTE ;
  1958.         GLOBAL := GLOBAL + A_ONE ;
  1959.         REMOTE ;
  1960.         GLOBAL := GLOBAL + A_ONE ;
  1961.         REMOTE ;
  1962.         GLOBAL := GLOBAL + A_ONE ;
  1963.         REMOTE ;
  1964.         GLOBAL := GLOBAL + A_ONE ;
  1965.         REMOTE ;
  1966.         GLOBAL := GLOBAL + A_ONE ;
  1967.         REMOTE ;
  1968.         GLOBAL := GLOBAL + A_ONE ;
  1969.         REMOTE ;
  1970.         GLOBAL := GLOBAL + A_ONE ;
  1971.         REMOTE ;
  1972.         GLOBAL := GLOBAL + A_ONE ;
  1973.         REMOTE ;
  1974.         GLOBAL := GLOBAL + A_ONE ;
  1975.         REMOTE ;
  1976.         GLOBAL := GLOBAL + A_ONE ;
  1977.         REMOTE ;
  1978.         GLOBAL := GLOBAL + A_ONE ;
  1979.         REMOTE ;
  1980.         GLOBAL := GLOBAL + A_ONE ;
  1981.         REMOTE ;
  1982.         GLOBAL := GLOBAL + A_ONE ;
  1983.         REMOTE ;
  1984.         GLOBAL := GLOBAL + A_ONE ;
  1985.         REMOTE ;
  1986.         GLOBAL := GLOBAL + A_ONE ;
  1987.         REMOTE ;
  1988.         GLOBAL := GLOBAL + A_ONE ;
  1989.         REMOTE ;
  1990.         GLOBAL := GLOBAL + A_ONE ;
  1991.         REMOTE ;
  1992.         GLOBAL := GLOBAL + A_ONE ;
  1993.         REMOTE ;
  1994.         GLOBAL := GLOBAL + A_ONE ;
  1995.         REMOTE ;
  1996.         GLOBAL := GLOBAL + A_ONE ;
  1997.         REMOTE ;
  1998.         GLOBAL := GLOBAL + A_ONE ;
  1999.         REMOTE ;
  2000.         GLOBAL := GLOBAL + A_ONE ;
  2001.         REMOTE ;
  2002.         GLOBAL := GLOBAL + A_ONE ;
  2003.         REMOTE ;
  2004.         GLOBAL := GLOBAL + A_ONE ;
  2005.         REMOTE ;
  2006.         GLOBAL := GLOBAL + A_ONE ;
  2007.         REMOTE ;
  2008.         GLOBAL := GLOBAL + A_ONE ;
  2009.         REMOTE ;
  2010.         GLOBAL := GLOBAL + A_ONE ;
  2011.         REMOTE ;
  2012.         GLOBAL := GLOBAL + A_ONE ;
  2013.         REMOTE ;
  2014.         GLOBAL := GLOBAL + A_ONE ;
  2015.         REMOTE ;
  2016.         GLOBAL := GLOBAL + A_ONE ;
  2017.         REMOTE ;
  2018.         GLOBAL := GLOBAL + A_ONE ;
  2019.         REMOTE ;
  2020.         GLOBAL := GLOBAL + A_ONE ;
  2021.         REMOTE ;
  2022.         GLOBAL := GLOBAL + A_ONE ;
  2023.         REMOTE ;
  2024.         GLOBAL := GLOBAL + A_ONE ;
  2025.         REMOTE ;
  2026.         GLOBAL := GLOBAL + A_ONE ;
  2027.         REMOTE ;
  2028.         GLOBAL := GLOBAL + A_ONE ;
  2029.         REMOTE ;
  2030.         GLOBAL := GLOBAL + A_ONE ;
  2031.         REMOTE ;
  2032.         GLOBAL := GLOBAL + A_ONE ;
  2033.         REMOTE ;
  2034.         GLOBAL := GLOBAL + A_ONE ;
  2035.         REMOTE ;
  2036.         GLOBAL := GLOBAL + A_ONE ;
  2037.         REMOTE ;
  2038.         GLOBAL := GLOBAL + A_ONE ;
  2039.         REMOTE ;
  2040.         GLOBAL := GLOBAL + A_ONE ;
  2041.         REMOTE ;
  2042.       end loop ;
  2043.     end loop ;
  2044.     GLOBAL := GLOBAL / CASE_COUNT ;
  2045.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  2046.  
  2047. --
  2048. -- Test loop
  2049. --
  2050.     ITERATION.START_TEST ;
  2051.     for J in 1 .. ITERATION_COUNT loop
  2052.       GLOBAL := 0 ;
  2053.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  2054.         for I in 1 .. 100 loop
  2055.           GLOBAL := GLOBAL + A_ONE ; -- same computation as above
  2056.           REMOTE ;                   -- now in loop
  2057.         end loop ;
  2058.       end loop ;
  2059.     end loop ;
  2060.     GLOBAL := GLOBAL / CASE_COUNT ;
  2061.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  2062.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  2063.     exit when STABLE ;
  2064.   end loop ;
  2065. --
  2066.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  2067.   CPU_TIME := DURATION ( CPU_TIME / CASE_COUNT ) ;
  2068.   WALL_TIME := DURATION ( WALL_TIME / CASE_COUNT ) ;
  2069.  
  2070. --
  2071. -- Printout
  2072. --
  2073.   PIWG_IO.PIWG_OUTPUT ( "L000001" , "Iteration" ,
  2074.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  2075.      "Simple ""for"" loop time " ,
  2076.      "for I in 1 .. 100 loop " ,
  2077.      "time reported is for once through loop " ) ;
  2078.  
  2079. end L000001 ;
  2080. ::::::::::
  2081. L000002.ADA
  2082. ::::::::::
  2083.  
  2084. -- PERFORMANCE MEASUREMENT : Measure simple "while" loop time
  2085. --                           loop is run 100 times
  2086. --                           time reported is for once through
  2087.  
  2088. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  2089. with ITERATION ; -- obtain stable measurement
  2090. with PIWG_IO ; -- output results
  2091.  
  2092. procedure L000002 is  -- main procedure to execute
  2093.  
  2094.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  2095.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  2096.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  2097.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  2098.   STABLE : BOOLEAN ; -- true when measurement stable
  2099.   CASE_COUNT : constant := 100 ;
  2100.   I : INTEGER ;
  2101.  
  2102. begin
  2103.  
  2104.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  2105.  
  2106.   delay 0.5 ;  -- wait for stable enviornment on some machines
  2107.  
  2108.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  2109.  
  2110.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  2111.  
  2112. --
  2113. -- Control loop
  2114. --
  2115.     ITERATION.START_CONTROL ;
  2116.     for J in 1 .. ITERATION_COUNT loop
  2117.       GLOBAL := 0 ;
  2118.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  2119.         GLOBAL := GLOBAL + A_ONE ; -- something to do
  2120.         REMOTE ;                   -- that can not be pulled out of loop
  2121.         GLOBAL := GLOBAL + A_ONE ; -- repeated here 100 times
  2122.         REMOTE ;
  2123.         GLOBAL := GLOBAL + A_ONE ;
  2124.         REMOTE ;
  2125.         GLOBAL := GLOBAL + A_ONE ;
  2126.         REMOTE ;
  2127.         GLOBAL := GLOBAL + A_ONE ;
  2128.         REMOTE ;
  2129.         GLOBAL := GLOBAL + A_ONE ;
  2130.         REMOTE ;
  2131.         GLOBAL := GLOBAL + A_ONE ;
  2132.         REMOTE ;
  2133.         GLOBAL := GLOBAL + A_ONE ;
  2134.         REMOTE ;
  2135.         GLOBAL := GLOBAL + A_ONE ;
  2136.         REMOTE ;
  2137.         GLOBAL := GLOBAL + A_ONE ;
  2138.         REMOTE ;
  2139.         GLOBAL := GLOBAL + A_ONE ;
  2140.         REMOTE ;
  2141.         GLOBAL := GLOBAL + A_ONE ;
  2142.         REMOTE ;
  2143.         GLOBAL := GLOBAL + A_ONE ;
  2144.         REMOTE ;
  2145.         GLOBAL := GLOBAL + A_ONE ;
  2146.         REMOTE ;
  2147.         GLOBAL := GLOBAL + A_ONE ;
  2148.         REMOTE ;
  2149.         GLOBAL := GLOBAL + A_ONE ;
  2150.         REMOTE ;
  2151.         GLOBAL := GLOBAL + A_ONE ;
  2152.         REMOTE ;
  2153.         GLOBAL := GLOBAL + A_ONE ;
  2154.         REMOTE ;
  2155.         GLOBAL := GLOBAL + A_ONE ;
  2156.         REMOTE ;
  2157.         GLOBAL := GLOBAL + A_ONE ;
  2158.         REMOTE ;
  2159.         GLOBAL := GLOBAL + A_ONE ;
  2160.         REMOTE ;
  2161.         GLOBAL := GLOBAL + A_ONE ;
  2162.         REMOTE ;
  2163.         GLOBAL := GLOBAL + A_ONE ;
  2164.         REMOTE ;
  2165.         GLOBAL := GLOBAL + A_ONE ;
  2166.         REMOTE ;
  2167.         GLOBAL := GLOBAL + A_ONE ;
  2168.         REMOTE ;
  2169.         GLOBAL := GLOBAL + A_ONE ;
  2170.         REMOTE ;
  2171.         GLOBAL := GLOBAL + A_ONE ;
  2172.         REMOTE ;
  2173.         GLOBAL := GLOBAL + A_ONE ;
  2174.         REMOTE ;
  2175.         GLOBAL := GLOBAL + A_ONE ;
  2176.         REMOTE ;
  2177.         GLOBAL := GLOBAL + A_ONE ;
  2178.         REMOTE ;
  2179.         GLOBAL := GLOBAL + A_ONE ;
  2180.         REMOTE ;
  2181.         GLOBAL := GLOBAL + A_ONE ;
  2182.         REMOTE ;
  2183.         GLOBAL := GLOBAL + A_ONE ;
  2184.         REMOTE ;
  2185.         GLOBAL := GLOBAL + A_ONE ;
  2186.         REMOTE ;
  2187.         GLOBAL := GLOBAL + A_ONE ;
  2188.         REMOTE ;
  2189.         GLOBAL := GLOBAL + A_ONE ;
  2190.         REMOTE ;
  2191.         GLOBAL := GLOBAL + A_ONE ;
  2192.         REMOTE ;
  2193.         GLOBAL := GLOBAL + A_ONE ;
  2194.         REMOTE ;
  2195.         GLOBAL := GLOBAL + A_ONE ;
  2196.         REMOTE ;
  2197.         GLOBAL := GLOBAL + A_ONE ;
  2198.         REMOTE ;
  2199.         GLOBAL := GLOBAL + A_ONE ;
  2200.         REMOTE ;
  2201.         GLOBAL := GLOBAL + A_ONE ;
  2202.         REMOTE ;
  2203.         GLOBAL := GLOBAL + A_ONE ;
  2204.         REMOTE ;
  2205.         GLOBAL := GLOBAL + A_ONE ;
  2206.         REMOTE ;
  2207.         GLOBAL := GLOBAL + A_ONE ;
  2208.         REMOTE ;
  2209.         GLOBAL := GLOBAL + A_ONE ;
  2210.         REMOTE ;
  2211.         GLOBAL := GLOBAL + A_ONE ;
  2212.         REMOTE ;
  2213.         GLOBAL := GLOBAL + A_ONE ;
  2214.         REMOTE ;
  2215.         GLOBAL := GLOBAL + A_ONE ;
  2216.         REMOTE ;
  2217.         GLOBAL := GLOBAL + A_ONE ;
  2218.         REMOTE ;
  2219.         GLOBAL := GLOBAL + A_ONE ;
  2220.         REMOTE ;
  2221.         GLOBAL := GLOBAL + A_ONE ;
  2222.         REMOTE ;
  2223.         GLOBAL := GLOBAL + A_ONE ;
  2224.         REMOTE ;
  2225.         GLOBAL := GLOBAL + A_ONE ;
  2226.         REMOTE ;
  2227.         GLOBAL := GLOBAL + A_ONE ;
  2228.         REMOTE ;
  2229.         GLOBAL := GLOBAL + A_ONE ;
  2230.         REMOTE ;
  2231.         GLOBAL := GLOBAL + A_ONE ;
  2232.         REMOTE ;
  2233.         GLOBAL := GLOBAL + A_ONE ;
  2234.         REMOTE ;
  2235.         GLOBAL := GLOBAL + A_ONE ;
  2236.         REMOTE ;
  2237.         GLOBAL := GLOBAL + A_ONE ;
  2238.         REMOTE ;
  2239.         GLOBAL := GLOBAL + A_ONE ;
  2240.         REMOTE ;
  2241.         GLOBAL := GLOBAL + A_ONE ;
  2242.         REMOTE ;
  2243.         GLOBAL := GLOBAL + A_ONE ;
  2244.         REMOTE ;
  2245.         GLOBAL := GLOBAL + A_ONE ;
  2246.         REMOTE ;
  2247.         GLOBAL := GLOBAL + A_ONE ;
  2248.         REMOTE ;
  2249.         GLOBAL := GLOBAL + A_ONE ;
  2250.         REMOTE ;
  2251.         GLOBAL := GLOBAL + A_ONE ;
  2252.         REMOTE ;
  2253.         GLOBAL := GLOBAL + A_ONE ;
  2254.         REMOTE ;
  2255.         GLOBAL := GLOBAL + A_ONE ;
  2256.         REMOTE ;
  2257.         GLOBAL := GLOBAL + A_ONE ;
  2258.         REMOTE ;
  2259.         GLOBAL := GLOBAL + A_ONE ;
  2260.         REMOTE ;
  2261.         GLOBAL := GLOBAL + A_ONE ;
  2262.         REMOTE ;
  2263.         GLOBAL := GLOBAL + A_ONE ;
  2264.         REMOTE ;
  2265.         GLOBAL := GLOBAL + A_ONE ;
  2266.         REMOTE ;
  2267.         GLOBAL := GLOBAL + A_ONE ;
  2268.         REMOTE ;
  2269.         GLOBAL := GLOBAL + A_ONE ;
  2270.         REMOTE ;
  2271.         GLOBAL := GLOBAL + A_ONE ;
  2272.         REMOTE ;
  2273.         GLOBAL := GLOBAL + A_ONE ;
  2274.         REMOTE ;
  2275.         GLOBAL := GLOBAL + A_ONE ;
  2276.         REMOTE ;
  2277.         GLOBAL := GLOBAL + A_ONE ;
  2278.         REMOTE ;
  2279.         GLOBAL := GLOBAL + A_ONE ;
  2280.         REMOTE ;
  2281.         GLOBAL := GLOBAL + A_ONE ;
  2282.         REMOTE ;
  2283.         GLOBAL := GLOBAL + A_ONE ;
  2284.         REMOTE ;
  2285.         GLOBAL := GLOBAL + A_ONE ;
  2286.         REMOTE ;
  2287.         GLOBAL := GLOBAL + A_ONE ;
  2288.         REMOTE ;
  2289.         GLOBAL := GLOBAL + A_ONE ;
  2290.         REMOTE ;
  2291.         GLOBAL := GLOBAL + A_ONE ;
  2292.         REMOTE ;
  2293.         GLOBAL := GLOBAL + A_ONE ;
  2294.         REMOTE ;
  2295.         GLOBAL := GLOBAL + A_ONE ;
  2296.         REMOTE ;
  2297.         GLOBAL := GLOBAL + A_ONE ;
  2298.         REMOTE ;
  2299.         GLOBAL := GLOBAL + A_ONE ;
  2300.         REMOTE ;
  2301.         GLOBAL := GLOBAL + A_ONE ;
  2302.         REMOTE ;
  2303.         GLOBAL := GLOBAL + A_ONE ;
  2304.         REMOTE ;
  2305.         GLOBAL := GLOBAL + A_ONE ;
  2306.         REMOTE ;
  2307.         GLOBAL := GLOBAL + A_ONE ;
  2308.         REMOTE ;
  2309.         GLOBAL := GLOBAL + A_ONE ;
  2310.         REMOTE ;
  2311.         GLOBAL := GLOBAL + A_ONE ;
  2312.         REMOTE ;
  2313.         GLOBAL := GLOBAL + A_ONE ;
  2314.         REMOTE ;
  2315.         GLOBAL := GLOBAL + A_ONE ;
  2316.         REMOTE ;
  2317.         GLOBAL := GLOBAL + A_ONE ;
  2318.         REMOTE ;
  2319.       end loop ;
  2320.     end loop ;
  2321.     GLOBAL := GLOBAL / CASE_COUNT ;
  2322.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  2323.  
  2324. --
  2325. -- Test loop
  2326. --
  2327.     ITERATION.START_TEST ;
  2328.     for J in 1 .. ITERATION_COUNT loop
  2329.       GLOBAL := 0 ;
  2330.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  2331.         I := 1 ;
  2332.         while I <= 100 loop
  2333.           GLOBAL := GLOBAL + A_ONE ; -- same computation as above
  2334.           REMOTE ;                   -- now in loop
  2335.           I := I + 1 ;
  2336.         end loop ;
  2337.       end loop ;
  2338.     end loop ;
  2339.     GLOBAL := GLOBAL / CASE_COUNT ;
  2340.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  2341.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  2342.     exit when STABLE ;
  2343.   end loop ;
  2344. --
  2345.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  2346.   CPU_TIME := DURATION ( CPU_TIME / CASE_COUNT ) ;
  2347.   WALL_TIME := DURATION ( WALL_TIME / CASE_COUNT ) ;
  2348.  
  2349. --
  2350. -- Printout
  2351. --
  2352.   PIWG_IO.PIWG_OUTPUT ( "L000002" , "Iteration" ,
  2353.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  2354.      "Simple ""while"" loop time " ,
  2355.      "while I <= 100 loop " ,
  2356.      "time reported is for once through loop " ) ;
  2357.  
  2358. end L000002 ;
  2359. ::::::::::
  2360. L000003.ADA
  2361. ::::::::::
  2362.  
  2363. -- PERFORMANCE MEASUREMENT : Measure simple loop with "exit" 
  2364. --                           loop is run 100 times
  2365. --                           time reported is for once through
  2366.  
  2367. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  2368. with ITERATION ; -- obtain stable measurement
  2369. with PIWG_IO ; -- output results
  2370.  
  2371. procedure L000003 is  -- main procedure to execute
  2372.  
  2373.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  2374.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  2375.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  2376.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  2377.   STABLE : BOOLEAN ; -- true when measurement stable
  2378.   CASE_COUNT : constant := 100 ;
  2379.   I : INTEGER ;
  2380.  
  2381. begin
  2382.  
  2383.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  2384.  
  2385.   delay 0.5 ;  -- wait for stable enviornment on some machines
  2386.  
  2387.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  2388.  
  2389.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  2390.  
  2391. --
  2392. -- Control loop
  2393. --
  2394.     ITERATION.START_CONTROL ;
  2395.     for J in 1 .. ITERATION_COUNT loop
  2396.       GLOBAL := 0 ;
  2397.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  2398.         GLOBAL := GLOBAL + A_ONE ; -- something to do
  2399.         REMOTE ;                   -- that can not be pulled out of loop
  2400.         GLOBAL := GLOBAL + A_ONE ; -- repeated here 100 times
  2401.         REMOTE ;
  2402.         GLOBAL := GLOBAL + A_ONE ;
  2403.         REMOTE ;
  2404.         GLOBAL := GLOBAL + A_ONE ;
  2405.         REMOTE ;
  2406.         GLOBAL := GLOBAL + A_ONE ;
  2407.         REMOTE ;
  2408.         GLOBAL := GLOBAL + A_ONE ;
  2409.         REMOTE ;
  2410.         GLOBAL := GLOBAL + A_ONE ;
  2411.         REMOTE ;
  2412.         GLOBAL := GLOBAL + A_ONE ;
  2413.         REMOTE ;
  2414.         GLOBAL := GLOBAL + A_ONE ;
  2415.         REMOTE ;
  2416.         GLOBAL := GLOBAL + A_ONE ;
  2417.         REMOTE ;
  2418.         GLOBAL := GLOBAL + A_ONE ;
  2419.         REMOTE ;
  2420.         GLOBAL := GLOBAL + A_ONE ;
  2421.         REMOTE ;
  2422.         GLOBAL := GLOBAL + A_ONE ;
  2423.         REMOTE ;
  2424.         GLOBAL := GLOBAL + A_ONE ;
  2425.         REMOTE ;
  2426.         GLOBAL := GLOBAL + A_ONE ;
  2427.         REMOTE ;
  2428.         GLOBAL := GLOBAL + A_ONE ;
  2429.         REMOTE ;
  2430.         GLOBAL := GLOBAL + A_ONE ;
  2431.         REMOTE ;
  2432.         GLOBAL := GLOBAL + A_ONE ;
  2433.         REMOTE ;
  2434.         GLOBAL := GLOBAL + A_ONE ;
  2435.         REMOTE ;
  2436.         GLOBAL := GLOBAL + A_ONE ;
  2437.         REMOTE ;
  2438.         GLOBAL := GLOBAL + A_ONE ;
  2439.         REMOTE ;
  2440.         GLOBAL := GLOBAL + A_ONE ;
  2441.         REMOTE ;
  2442.         GLOBAL := GLOBAL + A_ONE ;
  2443.         REMOTE ;
  2444.         GLOBAL := GLOBAL + A_ONE ;
  2445.         REMOTE ;
  2446.         GLOBAL := GLOBAL + A_ONE ;
  2447.         REMOTE ;
  2448.         GLOBAL := GLOBAL + A_ONE ;
  2449.         REMOTE ;
  2450.         GLOBAL := GLOBAL + A_ONE ;
  2451.         REMOTE ;
  2452.         GLOBAL := GLOBAL + A_ONE ;
  2453.         REMOTE ;
  2454.         GLOBAL := GLOBAL + A_ONE ;
  2455.         REMOTE ;
  2456.         GLOBAL := GLOBAL + A_ONE ;
  2457.         REMOTE ;
  2458.         GLOBAL := GLOBAL + A_ONE ;
  2459.         REMOTE ;
  2460.         GLOBAL := GLOBAL + A_ONE ;
  2461.         REMOTE ;
  2462.         GLOBAL := GLOBAL + A_ONE ;
  2463.         REMOTE ;
  2464.         GLOBAL := GLOBAL + A_ONE ;
  2465.         REMOTE ;
  2466.         GLOBAL := GLOBAL + A_ONE ;
  2467.         REMOTE ;
  2468.         GLOBAL := GLOBAL + A_ONE ;
  2469.         REMOTE ;
  2470.         GLOBAL := GLOBAL + A_ONE ;
  2471.         REMOTE ;
  2472.         GLOBAL := GLOBAL + A_ONE ;
  2473.         REMOTE ;
  2474.         GLOBAL := GLOBAL + A_ONE ;
  2475.         REMOTE ;
  2476.         GLOBAL := GLOBAL + A_ONE ;
  2477.         REMOTE ;
  2478.         GLOBAL := GLOBAL + A_ONE ;
  2479.         REMOTE ;
  2480.         GLOBAL := GLOBAL + A_ONE ;
  2481.         REMOTE ;
  2482.         GLOBAL := GLOBAL + A_ONE ;
  2483.         REMOTE ;
  2484.         GLOBAL := GLOBAL + A_ONE ;
  2485.         REMOTE ;
  2486.         GLOBAL := GLOBAL + A_ONE ;
  2487.         REMOTE ;
  2488.         GLOBAL := GLOBAL + A_ONE ;
  2489.         REMOTE ;
  2490.         GLOBAL := GLOBAL + A_ONE ;
  2491.         REMOTE ;
  2492.         GLOBAL := GLOBAL + A_ONE ;
  2493.         REMOTE ;
  2494.         GLOBAL := GLOBAL + A_ONE ;
  2495.         REMOTE ;
  2496.         GLOBAL := GLOBAL + A_ONE ;
  2497.         REMOTE ;
  2498.         GLOBAL := GLOBAL + A_ONE ;
  2499.         REMOTE ;
  2500.         GLOBAL := GLOBAL + A_ONE ;
  2501.         REMOTE ;
  2502.         GLOBAL := GLOBAL + A_ONE ;
  2503.         REMOTE ;
  2504.         GLOBAL := GLOBAL + A_ONE ;
  2505.         REMOTE ;
  2506.         GLOBAL := GLOBAL + A_ONE ;
  2507.         REMOTE ;
  2508.         GLOBAL := GLOBAL + A_ONE ;
  2509.         REMOTE ;
  2510.         GLOBAL := GLOBAL + A_ONE ;
  2511.         REMOTE ;
  2512.         GLOBAL := GLOBAL + A_ONE ;
  2513.         REMOTE ;
  2514.         GLOBAL := GLOBAL + A_ONE ;
  2515.         REMOTE ;
  2516.         GLOBAL := GLOBAL + A_ONE ;
  2517.         REMOTE ;
  2518.         GLOBAL := GLOBAL + A_ONE ;
  2519.         REMOTE ;
  2520.         GLOBAL := GLOBAL + A_ONE ;
  2521.         REMOTE ;
  2522.         GLOBAL := GLOBAL + A_ONE ;
  2523.         REMOTE ;
  2524.         GLOBAL := GLOBAL + A_ONE ;
  2525.         REMOTE ;
  2526.         GLOBAL := GLOBAL + A_ONE ;
  2527.         REMOTE ;
  2528.         GLOBAL := GLOBAL + A_ONE ;
  2529.         REMOTE ;
  2530.         GLOBAL := GLOBAL + A_ONE ;
  2531.         REMOTE ;
  2532.         GLOBAL := GLOBAL + A_ONE ;
  2533.         REMOTE ;
  2534.         GLOBAL := GLOBAL + A_ONE ;
  2535.         REMOTE ;
  2536.         GLOBAL := GLOBAL + A_ONE ;
  2537.         REMOTE ;
  2538.         GLOBAL := GLOBAL + A_ONE ;
  2539.         REMOTE ;
  2540.         GLOBAL := GLOBAL + A_ONE ;
  2541.         REMOTE ;
  2542.         GLOBAL := GLOBAL + A_ONE ;
  2543.         REMOTE ;
  2544.         GLOBAL := GLOBAL + A_ONE ;
  2545.         REMOTE ;
  2546.         GLOBAL := GLOBAL + A_ONE ;
  2547.         REMOTE ;
  2548.         GLOBAL := GLOBAL + A_ONE ;
  2549.         REMOTE ;
  2550.         GLOBAL := GLOBAL + A_ONE ;
  2551.         REMOTE ;
  2552.         GLOBAL := GLOBAL + A_ONE ;
  2553.         REMOTE ;
  2554.         GLOBAL := GLOBAL + A_ONE ;
  2555.         REMOTE ;
  2556.         GLOBAL := GLOBAL + A_ONE ;
  2557.         REMOTE ;
  2558.         GLOBAL := GLOBAL + A_ONE ;
  2559.         REMOTE ;
  2560.         GLOBAL := GLOBAL + A_ONE ;
  2561.         REMOTE ;
  2562.         GLOBAL := GLOBAL + A_ONE ;
  2563.         REMOTE ;
  2564.         GLOBAL := GLOBAL + A_ONE ;
  2565.         REMOTE ;
  2566.         GLOBAL := GLOBAL + A_ONE ;
  2567.         REMOTE ;
  2568.         GLOBAL := GLOBAL + A_ONE ;
  2569.         REMOTE ;
  2570.         GLOBAL := GLOBAL + A_ONE ;
  2571.         REMOTE ;
  2572.         GLOBAL := GLOBAL + A_ONE ;
  2573.         REMOTE ;
  2574.         GLOBAL := GLOBAL + A_ONE ;
  2575.         REMOTE ;
  2576.         GLOBAL := GLOBAL + A_ONE ;
  2577.         REMOTE ;
  2578.         GLOBAL := GLOBAL + A_ONE ;
  2579.         REMOTE ;
  2580.         GLOBAL := GLOBAL + A_ONE ;
  2581.         REMOTE ;
  2582.         GLOBAL := GLOBAL + A_ONE ;
  2583.         REMOTE ;
  2584.         GLOBAL := GLOBAL + A_ONE ;
  2585.         REMOTE ;
  2586.         GLOBAL := GLOBAL + A_ONE ;
  2587.         REMOTE ;
  2588.         GLOBAL := GLOBAL + A_ONE ;
  2589.         REMOTE ;
  2590.         GLOBAL := GLOBAL + A_ONE ;
  2591.         REMOTE ;
  2592.         GLOBAL := GLOBAL + A_ONE ;
  2593.         REMOTE ;
  2594.         GLOBAL := GLOBAL + A_ONE ;
  2595.         REMOTE ;
  2596.         GLOBAL := GLOBAL + A_ONE ;
  2597.         REMOTE ;
  2598.       end loop ;
  2599.     end loop ;
  2600.     GLOBAL := GLOBAL / CASE_COUNT ;
  2601.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  2602.  
  2603. --
  2604. -- Test loop
  2605. --
  2606.     ITERATION.START_TEST ;
  2607.     for J in 1 .. ITERATION_COUNT loop
  2608.       GLOBAL := 0 ;
  2609.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  2610.         I := 1 ;
  2611.         loop
  2612.           GLOBAL := GLOBAL + A_ONE ; -- same computation as above
  2613.           REMOTE ;                   -- now in loop
  2614.           I := I + 1 ;
  2615.           exit when I > 100 ;
  2616.         end loop ;
  2617.       end loop ;
  2618.     end loop ;
  2619.     GLOBAL := GLOBAL / CASE_COUNT ;
  2620.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  2621.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  2622.     exit when STABLE ;
  2623.   end loop ;
  2624. --
  2625.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  2626.   CPU_TIME := DURATION ( CPU_TIME / CASE_COUNT ) ;
  2627.   WALL_TIME := DURATION ( WALL_TIME / CASE_COUNT ) ;
  2628.  
  2629. --
  2630. -- Printout
  2631. --
  2632.   PIWG_IO.PIWG_OUTPUT ( "L000003" , "Iteration" ,
  2633.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  2634.      "Simple ""exit"" loop time " ,
  2635.      " loop I:=I+1; exit when I>100; end loop;" ,
  2636.      "time reported is for once through loop " ) ;
  2637.  
  2638. end L000003 ;
  2639. ::::::::::
  2640. P000001.ADA
  2641. ::::::::::
  2642. -- PERFORMANCE MEASUREMENT : Minimum procedure call and return time
  2643. --                           procedure local
  2644. --                           no parameters
  2645.  
  2646. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ;
  2647. with ITERATION ;
  2648. with PIWG_IO ;
  2649.  
  2650. procedure P000001 is  -- main procedure to execute
  2651.  
  2652.   CPU_TIME : DURATION ;
  2653.   WALL_TIME : DURATION ;
  2654.   CHECK_TIMES : constant := 100 ;
  2655.   ITERATION_COUNT : INTEGER ;
  2656.   ITS_OK : BOOLEAN ;
  2657.  
  2658. --
  2659.  
  2660.   procedure PROC_0 is  -- may be inlined thus zero time
  2661.   begin
  2662.     GLOBAL := GLOBAL + A_ONE ;
  2663.     REMOTE ;
  2664.   end ;
  2665.  
  2666. begin
  2667.  
  2668.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  2669.  
  2670.   delay 0.5 ;  -- wait for stable enviornment on some machines
  2671.  
  2672.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  2673.  
  2674.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  2675.  
  2676. --
  2677. -- Control loop
  2678. --
  2679.     ITERATION.START_CONTROL ;
  2680.     for J in 1 .. ITERATION_COUNT loop
  2681.       GLOBAL := 0 ;
  2682.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  2683.         GLOBAL := GLOBAL + A_ONE ;
  2684.         REMOTE ;
  2685.       end loop ;
  2686.     end loop ;
  2687.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  2688.  
  2689. --
  2690. -- Test loop
  2691. --
  2692.     ITERATION.START_TEST ;
  2693.     for J in 1 .. ITERATION_COUNT loop
  2694.       GLOBAL := 0 ;
  2695.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  2696.         PROC_0 ;  -- this has control global increment and call inside
  2697.       end loop ;
  2698.     end loop ;
  2699.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  2700.     ITERATION.TEST_STABLE ( ITERATION_COUNT , ITS_OK ) ;
  2701.     exit when ITS_OK ;
  2702.   end loop ;
  2703. --
  2704.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  2705.  
  2706. --
  2707. -- Printout
  2708. --
  2709.   PIWG_IO.PIWG_OUTPUT ( "P000001" , "Procedure" ,
  2710.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  2711.      " Procedure call and return time ( may be zero if automatic inlining ) " ,
  2712.      " procedure is local " ,
  2713.      " no parameters " ) ;
  2714.  
  2715. end P000001 ;
  2716. ::::::::::
  2717. P000002.ADA
  2718. ::::::::::
  2719.  
  2720. -- PERFORMANCE MEASUREMENT : procedure call and return time
  2721. --                           no parameters
  2722. --                           procedure local ( not inlinable)
  2723.  
  2724. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  2725. with ITERATION ; -- obtain stable measurement
  2726. with PIWG_IO ; -- output results
  2727.  
  2728. procedure P000002 is  -- main procedure to execute
  2729.  
  2730.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  2731.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  2732.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  2733.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  2734.   STABLE : BOOLEAN ; -- true when measurement stable
  2735.  
  2736. --
  2737.  
  2738.   procedure PROC_0 is
  2739.   begin
  2740.     GLOBAL := GLOBAL + A_ONE ;
  2741.     REMOTE ;
  2742.   exception
  2743.     when NUMERIC_ERROR => -- prevent inlining
  2744.       PROC_0 ; -- can not be called if test working
  2745.   end ;
  2746.  
  2747. begin
  2748.  
  2749.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  2750.  
  2751.   delay 5.0 ;  -- wait for stable enviornment on some machines
  2752.  
  2753.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  2754.  
  2755.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  2756.  
  2757. --
  2758. -- Control loop
  2759. --
  2760.     ITERATION.START_CONTROL ;
  2761.     for J in 1 .. ITERATION_COUNT loop
  2762.       GLOBAL := 0 ;
  2763.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  2764.         GLOBAL := GLOBAL + A_ONE ; 
  2765.         REMOTE ;                   
  2766.       end loop ;
  2767.     end loop ;
  2768.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  2769.  
  2770.  
  2771. --
  2772. -- Test loop
  2773. --
  2774.  
  2775.     ITERATION.START_TEST ;
  2776.     for J in 1 .. ITERATION_COUNT loop
  2777.       GLOBAL := 0 ;
  2778.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  2779.         PROC_0 ; -- this has control global increment and call inside
  2780.       end loop ;
  2781.     end loop ;
  2782.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  2783.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  2784.     exit when STABLE ;
  2785.   end loop ;
  2786. --
  2787.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  2788.  
  2789. --
  2790. -- Printout
  2791. --
  2792.   PIWG_IO.PIWG_OUTPUT ( "P000002", "Procedure",
  2793.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  2794.     " Procedure call and return time" ,
  2795.     " Procedure is local, no parameters " ,
  2796.     " when procedure is not inlinable" ) ;
  2797.  
  2798. end P000002 ;
  2799. ::::::::::
  2800. P000003.ADA
  2801. ::::::::::
  2802.  
  2803. -- PERFORMANCE MEASUREMENT : procedure call and return time
  2804. --                           procedure in package
  2805. --                           no parameters
  2806.  
  2807. package PROC_PACKAGE_3 is
  2808.   procedure PROC_0 ;
  2809. end PROC_PACKAGE_3 ;
  2810.  
  2811. with PROC_PACKAGE_3 ; use PROC_PACKAGE_3 ;
  2812. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  2813. with ITERATION ; -- obtain stable measurement
  2814. with PIWG_IO ; -- output results
  2815.  
  2816. procedure P000003 is  -- main procedure to execute
  2817.  
  2818.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  2819.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  2820.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  2821.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  2822.   STABLE : BOOLEAN ; -- true when measurement stable
  2823.  
  2824. begin
  2825.  
  2826.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  2827.  
  2828.   delay 0.5 ;  -- wait for stable enviornment on some machines
  2829.  
  2830.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  2831.  
  2832.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  2833.  
  2834. --
  2835. -- Control loop
  2836. --
  2837.     ITERATION.START_CONTROL ;
  2838.     for J in 1 .. ITERATION_COUNT loop
  2839.       GLOBAL := 0 ;
  2840.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  2841.         GLOBAL := GLOBAL + A_ONE ; 
  2842.         REMOTE ;                   
  2843.       end loop ;
  2844.     end loop ;
  2845.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  2846.  
  2847. --
  2848. -- Test loop
  2849. --
  2850.     ITERATION.START_TEST ;
  2851.     for J in 1 .. ITERATION_COUNT loop
  2852.       GLOBAL := 0 ;
  2853.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  2854.         PROC_0 ; -- this has control global increment and call inside
  2855.       end loop ;
  2856.     end loop ;
  2857.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  2858.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  2859.     exit when STABLE ;
  2860.   end loop ;
  2861. --
  2862.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  2863.  
  2864. --
  2865. -- Printout
  2866. --
  2867.   PIWG_IO.PIWG_OUTPUT ( "P000003" , "Procedure" ,
  2868.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  2869.      " Procedure call and return time measurement" ,
  2870.      " The procedure is in a separately compiled package " ,
  2871.      " Compare to P000002 " ) ;
  2872.  
  2873. end P000003 ;
  2874.  
  2875. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ;
  2876. package body PROC_PACKAGE_3 is -- compare to P000002 ( local procedure )
  2877.   procedure PROC_0 is
  2878.   begin
  2879.     GLOBAL := GLOBAL + A_ONE ;
  2880.     REMOTE ;
  2881.   end ;
  2882. end PROC_PACKAGE_3 ;
  2883. ::::::::::
  2884. P000004.ADA
  2885. ::::::::::
  2886.  
  2887. -- PERFORMANCE MEASUREMENT : procedure call and return time
  2888. --                           procedure in package
  2889. --                           pragma INLINE used
  2890. --                           no parameters
  2891.  
  2892. package PROC_PACKAGE_4 is
  2893.   procedure PROC_0 ;
  2894.   pragma INLINE ( PROC_0 ) ;
  2895. end PROC_PACKAGE_4 ;
  2896.  
  2897. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ;
  2898. package body PROC_PACKAGE_4 is -- compare to P000001 ( local procedure )
  2899.   procedure PROC_0 is
  2900.   begin
  2901.     GLOBAL := GLOBAL + A_ONE ;
  2902.     REMOTE ;
  2903.   end ;
  2904. end PROC_PACKAGE_4 ;
  2905.  
  2906. with PROC_PACKAGE_4 ; use PROC_PACKAGE_4 ;
  2907. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  2908. with ITERATION ; -- obtain stable measurement
  2909. with PIWG_IO ; -- output results
  2910.  
  2911. procedure P000004 is  -- main procedure to execute
  2912.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  2913.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  2914.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  2915.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  2916.   STABLE : BOOLEAN ; -- true when measurement stable
  2917.  
  2918. begin
  2919.  
  2920.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  2921.  
  2922.   delay 0.5 ;  -- wait for stable enviornment on some machines
  2923.  
  2924.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  2925.  
  2926.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  2927.  
  2928. --
  2929. -- Control loop
  2930. --
  2931.     ITERATION.START_CONTROL ;
  2932.     for J in 1 .. ITERATION_COUNT loop
  2933.       GLOBAL := 0 ;
  2934.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  2935.         GLOBAL := GLOBAL + A_ONE ; 
  2936.         REMOTE ;                   
  2937.       end loop ;
  2938.     end loop ;
  2939.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  2940.  
  2941. --
  2942. -- Test loop
  2943. --
  2944.     ITERATION.START_TEST ;
  2945.     for J in 1 .. ITERATION_COUNT loop
  2946.       GLOBAL := 0 ;
  2947.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  2948.         PROC_0 ; -- this has control global increment and call inside
  2949.       end loop ;
  2950.     end loop ;
  2951.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  2952.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  2953.     exit when STABLE ;
  2954.   end loop ;
  2955. --
  2956.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  2957.  
  2958. --
  2959. -- Printout
  2960. --
  2961.   PIWG_IO.PIWG_OUTPUT ( "P000004" , "Procedure" ,
  2962.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  2963.      " Procedure call and return time measurement" ,
  2964.      " The procedure is in a separately compiled package " ,
  2965.      " pragma INLINE used. Compare to P000001 " ) ;
  2966.  
  2967. end P000004 ;
  2968. ::::::::::
  2969. P000005.ADA
  2970. ::::::::::
  2971.  
  2972. -- PERFORMANCE MEASUREMENT : procedure call and return time
  2973. --                           procedure in package
  2974. --                           one "in" parameter
  2975.  
  2976. package PROC_PACKAGE_5 is
  2977.   procedure PROC_0 ( A : in INTEGER ) ;
  2978. end PROC_PACKAGE_5 ;
  2979.  
  2980. with PROC_PACKAGE_5 ; use PROC_PACKAGE_5 ;
  2981. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  2982. with ITERATION ; -- obtain stable measurement
  2983. with PIWG_IO ; -- output results
  2984.  
  2985. procedure P000005 is  -- main procedure to execute
  2986.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  2987.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  2988.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  2989.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  2990.   STABLE : BOOLEAN ; -- true when measurement stable
  2991.  
  2992. begin
  2993.  
  2994.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  2995.  
  2996.   delay 0.5 ;  -- wait for stable enviornment on some machines
  2997.  
  2998.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  2999.  
  3000.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  3001.  
  3002. --
  3003. -- Control loop
  3004. --
  3005.     ITERATION.START_CONTROL ;
  3006.     for J in 1 .. ITERATION_COUNT loop
  3007.       GLOBAL := 0 ;
  3008.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  3009.         GLOBAL := GLOBAL + A_ONE ; 
  3010.         REMOTE ;                   
  3011.       end loop ;
  3012.     end loop ;
  3013.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  3014.  
  3015. --
  3016. -- Test loop
  3017. --
  3018.     ITERATION.START_TEST ;
  3019.     for J in 1 .. ITERATION_COUNT loop
  3020.       GLOBAL := 0 ;
  3021.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  3022.         PROC_0 ( A_ONE ) ; -- this has control global increment and call inside
  3023.       end loop ;
  3024.     end loop ;
  3025.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  3026.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  3027.     exit when STABLE ;
  3028.   end loop ;
  3029. --
  3030.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  3031.  
  3032. --
  3033. -- Printout
  3034. --
  3035.   PIWG_IO.PIWG_OUTPUT ( "P000005" , "Procedure" ,
  3036.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  3037.      " Procedure call and return time measurement" ,
  3038.      " The procedure is in a separately compiled package " ,
  3039.      " One parameter, in INTEGER " ) ;
  3040.  
  3041. end P000005 ;
  3042.  
  3043.  
  3044. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ;
  3045. package body PROC_PACKAGE_5 is -- compare to P000003
  3046.   procedure PROC_0 ( A : in INTEGER ) is
  3047.   begin
  3048.     GLOBAL := GLOBAL + A ;
  3049.     REMOTE ;
  3050.   end ;
  3051. end PROC_PACKAGE_5 ;
  3052. ::::::::::
  3053. P000006.ADA
  3054. ::::::::::
  3055.  
  3056. -- PERFORMANCE MEASUREMENT : procedure call and return time
  3057. --                           procedure in package
  3058. --                           one "out" parameter
  3059.  
  3060. package PROC_PACKAGE_6 is
  3061.   procedure PROC_0 ( A : out INTEGER ) ;
  3062. end PROC_PACKAGE_6 ;
  3063.  
  3064. with PROC_PACKAGE_6 ; use PROC_PACKAGE_6 ;
  3065. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  3066. with ITERATION ; -- obtain stable measurement
  3067. with PIWG_IO ; -- output results
  3068.  
  3069. procedure P000006 is  -- main procedure to execute
  3070.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  3071.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  3072.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  3073.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  3074.   STABLE : BOOLEAN ; -- true when measurement stable
  3075.   A : INTEGER ;
  3076.  
  3077. begin
  3078.  
  3079.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  3080.  
  3081.   delay 0.5 ;  -- wait for stable enviornment on some machines
  3082.  
  3083.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  3084.  
  3085.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  3086.  
  3087. --
  3088. -- Control loop
  3089. --
  3090.     ITERATION.START_CONTROL ;
  3091.     for J in 1 .. ITERATION_COUNT loop
  3092.       GLOBAL := 0 ;
  3093.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  3094.         A := A_ONE ;
  3095.         GLOBAL := GLOBAL + A ; 
  3096.         REMOTE ;                   
  3097.       end loop ;
  3098.     end loop ;
  3099.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  3100.  
  3101. --
  3102. -- Test loop
  3103. --
  3104.     ITERATION.START_TEST ;
  3105.     for J in 1 .. ITERATION_COUNT loop
  3106.       GLOBAL := 0 ;
  3107.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  3108.         PROC_0 ( A ) ; -- this has REMOTE call inside
  3109.         GLOBAL := GLOBAL + A ; 
  3110.       end loop ;
  3111.     end loop ;
  3112.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  3113.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  3114.     exit when STABLE ;
  3115.   end loop ;
  3116. --
  3117.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  3118.  
  3119. --
  3120. -- Printout
  3121. --
  3122.   PIWG_IO.PIWG_OUTPUT ( "P000006" , "Procedure" ,
  3123.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  3124.      " Procedure call and return time measurement" ,
  3125.      " The procedure is in a separately compiled package " ,
  3126.      " One parameter, out INTEGER " ) ;
  3127.  
  3128. end P000006 ;
  3129.  
  3130.  
  3131. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ;
  3132. package body PROC_PACKAGE_6 is -- compare to P000005
  3133.   procedure PROC_0 ( A : out INTEGER ) is
  3134.   begin
  3135.     A := A_ONE ;
  3136.     REMOTE ;
  3137.   end ;
  3138. end PROC_PACKAGE_6 ;
  3139. ::::::::::
  3140. P000007.ADA
  3141. ::::::::::
  3142.  
  3143. -- PERFORMANCE MEASUREMENT : procedure call and return time
  3144. --                           procedure in package
  3145. --                           one "in out" parameter
  3146.  
  3147. package PROC_PACKAGE_7 is
  3148.   procedure PROC_0 ( A : in out INTEGER ) ;
  3149. end PROC_PACKAGE_7 ;
  3150.  
  3151. with PROC_PACKAGE_7 ; use PROC_PACKAGE_7 ;
  3152. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  3153. with ITERATION ; -- obtain stable measurement
  3154. with PIWG_IO ; -- output results
  3155.  
  3156. procedure P000007 is  -- main procedure to execute
  3157.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  3158.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  3159.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  3160.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  3161.   STABLE : BOOLEAN ; -- true when measurement stable
  3162.   A : INTEGER ;
  3163.  
  3164. begin
  3165.  
  3166.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  3167.  
  3168.   delay 0.5 ;  -- wait for stable enviornment on some machines
  3169.  
  3170.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  3171.  
  3172.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  3173.  
  3174. --
  3175. -- Control loop
  3176. --
  3177.     ITERATION.START_CONTROL ;
  3178.     for J in 1 .. ITERATION_COUNT loop
  3179.       GLOBAL := 0 ;
  3180.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  3181.         GLOBAL := GLOBAL + A_ONE ; 
  3182.         REMOTE ;                   
  3183.       end loop ;
  3184.     end loop ;
  3185.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  3186.  
  3187. --
  3188. -- Test loop
  3189. --
  3190.     ITERATION.START_TEST ;
  3191.     for J in 1 .. ITERATION_COUNT loop
  3192.       GLOBAL := 0 ;
  3193.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  3194.         PROC_0 ( GLOBAL ) ; -- this has control global increment and call inside
  3195.       end loop ;
  3196.     end loop ;
  3197.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  3198.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  3199.     exit when STABLE ;
  3200.   end loop ;
  3201. --
  3202.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  3203.  
  3204. --
  3205. -- Printout
  3206. --
  3207.   PIWG_IO.PIWG_OUTPUT ( "P000007" , "Procedure" ,
  3208.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  3209.      " Procedure call and return time measurement" ,
  3210.      " The procedure is in a separately compiled package " ,
  3211.      " One parameter, in out INTEGER " ) ;
  3212.  
  3213. end P000007 ;
  3214.  
  3215.  
  3216. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ;
  3217. package body PROC_PACKAGE_7 is -- compare to P000005 & 6
  3218.   procedure PROC_0 ( A : in out INTEGER ) is
  3219.   begin
  3220.     A := A + A_ONE ;
  3221.     REMOTE ;
  3222.   end ;
  3223. end PROC_PACKAGE_7 ;
  3224. ::::::::::
  3225. P000010.ADA
  3226. ::::::::::
  3227.  
  3228. -- PERFORMANCE MEASUREMENT : procedure call and return time
  3229. --                           procedure in package
  3230. --                           ten discrete "in" parameters
  3231.  
  3232. package PROC_PACKAGE_10 is
  3233.   procedure PROC_0 ( A1, A2, A3, A4, A5, A6, A7, A8, A9, A10 : in INTEGER ) ;
  3234. end PROC_PACKAGE_10 ;
  3235.  
  3236. with PROC_PACKAGE_10 ; use PROC_PACKAGE_10 ;
  3237. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  3238. with ITERATION ; -- obtain stable measurement
  3239. with PIWG_IO ; -- output results
  3240.  
  3241. procedure P000010 is  -- main procedure to execute
  3242.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  3243.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  3244.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  3245.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  3246.   STABLE : BOOLEAN ; -- true when measurement stable
  3247.   A1 : INTEGER := A_ONE ;
  3248.   A2 : INTEGER := A1 + A_ONE ;
  3249.   A3 : INTEGER := A2 + A_ONE ;
  3250.   A4 : INTEGER := A3 + A_ONE ;
  3251.   A5 : INTEGER := A4 + A_ONE ;
  3252.   A6 : INTEGER := A5 + A_ONE ;
  3253.   A7 : INTEGER := A6 + A_ONE ;
  3254.   A8 : INTEGER := A7 + A_ONE ;
  3255.   A9 : INTEGER := A8 + A_ONE ;
  3256.   A10 : INTEGER := A9 + A_ONE ;
  3257.  
  3258. begin
  3259.  
  3260.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  3261.  
  3262.   delay 0.5 ;  -- wait for stable enviornment on some machines
  3263.  
  3264.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  3265.  
  3266.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  3267.  
  3268. --
  3269. -- Control loop
  3270. --
  3271.     ITERATION.START_CONTROL ;
  3272.     for J in 1 .. ITERATION_COUNT loop
  3273.       GLOBAL := 0 ;
  3274.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  3275.         GLOBAL := GLOBAL + A1+A2+A3+A4+A5+A6+A7-A8-A9-A10 ;
  3276.         REMOTE ;                   
  3277.       end loop ;
  3278.     end loop ;
  3279.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  3280.  
  3281. --
  3282. -- Test loop
  3283. --
  3284.     ITERATION.START_TEST ;
  3285.     for J in 1 .. ITERATION_COUNT loop
  3286.       GLOBAL := 0 ;
  3287.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  3288.         PROC_0 ( A1, A2, A3, A4, A5, A6, A7, A8, A9, A10 ) ;
  3289.         -- this has control global increment and call inside
  3290.       end loop ;
  3291.     end loop ;
  3292.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  3293.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  3294.     exit when STABLE ;
  3295.   end loop ;
  3296. --
  3297.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  3298.  
  3299. --
  3300. -- Printout
  3301. --
  3302.   PIWG_IO.PIWG_OUTPUT ( "P000010" , "Procedure" ,
  3303.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  3304.      " Procedure call and return time measurement" ,
  3305.      " Compare to P000005 " ,
  3306.      " 10 parameters, in INTEGER " ) ;
  3307.  
  3308. end P000010 ;
  3309.  
  3310.  
  3311. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ;
  3312. package body PROC_PACKAGE_10 is -- compare to P000005
  3313.   procedure PROC_0 ( A1, A2, A3, A4, A5, A6, A7, A8, A9, A10 : in INTEGER ) is
  3314.   begin
  3315.     GLOBAL := GLOBAL + A1+A2+A3+A4+A5+A6+A7-A8-A9-A10 ;
  3316.     REMOTE ;
  3317.   end ;
  3318. end PROC_PACKAGE_10 ;
  3319. ::::::::::
  3320. P000011.ADA
  3321. ::::::::::
  3322.  
  3323. -- PERFORMANCE MEASUREMENT : procedure call and return time
  3324. --                           procedure in package
  3325. --                           twenty discrete "in" parameters
  3326.  
  3327. package PROC_PACKAGE_11 is
  3328.   procedure PROC_0 ( A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
  3329.                      A11,A12,A13,A14,A15,A16,A17,A18,A19,A20 : in INTEGER ) ;
  3330. end PROC_PACKAGE_11 ;
  3331.  
  3332. with PROC_PACKAGE_11 ; use PROC_PACKAGE_11 ;
  3333. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  3334. with ITERATION ; -- obtain stable measurement
  3335. with PIWG_IO ; -- output results
  3336.  
  3337. procedure P000011 is  -- main procedure to execute
  3338.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  3339.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  3340.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  3341.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  3342.   STABLE : BOOLEAN ; -- true when measurement stable
  3343.   A1 : INTEGER := A_ONE ;
  3344.   A2 : INTEGER := A1 + A_ONE ;
  3345.   A3 : INTEGER := A2 + A_ONE ;
  3346.   A4 : INTEGER := A3 + A_ONE ;
  3347.   A5 : INTEGER := A4 + A_ONE ;
  3348.   A6 : INTEGER := A5 + A_ONE ;
  3349.   A7 : INTEGER := A6 + A_ONE ;
  3350.   A8 : INTEGER := A7 + A_ONE ;
  3351.   A9 : INTEGER := A8 + A_ONE ;
  3352.   A10 : INTEGER := A9 + A_ONE ;
  3353.   A11 : INTEGER := A10 + A_ONE ;
  3354.   A12 : INTEGER := A11 + A_ONE ;
  3355.   A13 : INTEGER := A12 + A_ONE ;
  3356.   A14 : INTEGER := A13 + A_ONE ;
  3357.   A15 : INTEGER := A14 + A_ONE ;
  3358.   A16 : INTEGER := A15 + A_ONE ;
  3359.   A17 : INTEGER := A16 + A_ONE ;
  3360.   A18 : INTEGER := A17 + A_ONE ;
  3361.   A19 : INTEGER := A18 + A_ONE ;
  3362.   A20 : INTEGER := A19 + A_ONE ;
  3363.  
  3364. begin
  3365.  
  3366.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  3367.  
  3368.   delay 0.5 ;  -- wait for stable enviornment on some machines
  3369.  
  3370.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  3371.  
  3372.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  3373.  
  3374. --
  3375. -- Control loop
  3376. --
  3377.     ITERATION.START_CONTROL ;
  3378.     for J in 1 .. ITERATION_COUNT loop
  3379.       GLOBAL := 0 ;
  3380.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  3381.         GLOBAL := GLOBAL + A1+A2+A3+A4+A5+A6+A7-A8-A9-A10
  3382.               +A20-A19-A18+A17+A16-A15-A14+A13-A12+A11+A_ONE ;
  3383.         REMOTE ;                   
  3384.       end loop ;
  3385.     end loop ;
  3386.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  3387.  
  3388. --
  3389. -- Test loop
  3390. --
  3391.     ITERATION.START_TEST ;
  3392.     for J in 1 .. ITERATION_COUNT loop
  3393.       GLOBAL := 0 ;
  3394.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  3395.         PROC_0 ( A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
  3396.                  A11,A12,A13,A14,A15,A16,A17,A18,A19,A20 ) ;
  3397.         -- this has control global increment and call inside
  3398.       end loop ;
  3399.     end loop ;
  3400.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  3401.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  3402.     exit when STABLE ;
  3403.   end loop ;
  3404. --
  3405.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  3406.  
  3407. --
  3408. -- Printout
  3409. --
  3410.   PIWG_IO.PIWG_OUTPUT ( "P000011" , "Procedure" ,
  3411.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  3412.      " Procedure call and return time measurement" ,
  3413.      " Compare to P000005, P000010 " ,
  3414.      " 20 parameters, in INTEGER " ) ;
  3415.  
  3416. end P000011 ;
  3417.  
  3418.  
  3419. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ;
  3420. package body PROC_PACKAGE_11 is -- compare to P000005 & 10
  3421.   procedure PROC_0 ( A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
  3422.                      A11,A12,A13,A14,A15,A16,A17,A18,A19,A20 : in INTEGER ) is
  3423.   begin
  3424.     GLOBAL := GLOBAL + A1+A2+A3+A4+A5+A6+A7-A8-A9-A10
  3425.               +A20-A19-A18+A17+A16-A15-A14+A13-A12+A11+A_ONE ;
  3426.     REMOTE ;
  3427.   end ;
  3428. end PROC_PACKAGE_11 ;
  3429. ::::::::::
  3430. P000012.ADA
  3431. ::::::::::
  3432.  
  3433. -- PERFORMANCE MEASUREMENT : procedure call and return time
  3434. --                           procedure in package
  3435. --                           ten composite "in" parameters
  3436.  
  3437. package PROC_PACKAGE_12 is
  3438.   type MY_RECORD is
  3439.     record
  3440.       R1 : INTEGER ;
  3441.       R2 : INTEGER ;
  3442.       R3 : INTEGER ;
  3443.     end record ;
  3444.   procedure PROC_0 ( A1, A2, A3, A4, A5, A6, A7, A8, A9, A10 : in MY_RECORD ) ;
  3445. end PROC_PACKAGE_12 ;
  3446.  
  3447. with PROC_PACKAGE_12 ; use PROC_PACKAGE_12 ;
  3448. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  3449. with ITERATION ; -- obtain stable measurement
  3450. with PIWG_IO ; -- output results
  3451.  
  3452. procedure P000012 is  -- main procedure to execute
  3453.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  3454.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  3455.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  3456.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  3457.   STABLE : BOOLEAN ; -- true when measurement stable
  3458.   A : MY_RECORD := ( A_ONE , A_ONE + A_ONE , A_ONE + A_ONE + A_ONE ) ;
  3459.  
  3460. begin
  3461.  
  3462.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  3463.  
  3464.   delay 0.5 ;  -- wait for stable enviornment on some machines
  3465.  
  3466.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  3467.  
  3468.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  3469.  
  3470. --
  3471. -- Control loop
  3472. --
  3473.     ITERATION.START_CONTROL ;
  3474.     for J in 1 .. ITERATION_COUNT loop
  3475.       GLOBAL := 0 ;
  3476.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  3477.         GLOBAL := GLOBAL + A.R1+A.R2+A.R3-A.R1-A.R2-A.R3+A.R1+A.R2
  3478.                           -A.R3+A.R1 ;
  3479.         REMOTE ;                   
  3480.       end loop ;
  3481.     end loop ;
  3482.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  3483.  
  3484. --
  3485. -- Test loop
  3486. --
  3487.     ITERATION.START_TEST ;
  3488.     for J in 1 .. ITERATION_COUNT loop
  3489.       GLOBAL := 0 ;
  3490.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  3491.         PROC_0 ( A, A, A, A, A, A, A, A, A, A ) ;
  3492.         -- this has control global increment and call inside
  3493.       end loop ;
  3494.     end loop ;
  3495.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  3496.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  3497.     exit when STABLE ;
  3498.   end loop ;
  3499. --
  3500.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  3501.  
  3502. --
  3503. -- Printout
  3504. --
  3505.   PIWG_IO.PIWG_OUTPUT ( "P000012" , "Procedure" ,
  3506.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  3507.      " Procedure call and return time measurement" ,
  3508.      " Compare with P000010 ( discrete vs composite parameters ) " ,
  3509.      " 10 paramaters, in MY_RECORD  a three component record" ) ;
  3510.  
  3511. end P000012 ;
  3512.  
  3513.  
  3514. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ;
  3515. package body PROC_PACKAGE_12 is -- compare to P00000
  3516.   procedure PROC_0 ( A1, A2, A3, A4, A5, A6, A7, A8, A9, A10 : in MY_RECORD ) is
  3517.   begin
  3518.     GLOBAL := GLOBAL + A1.R1+A2.R2+A3.R3-A4.R1-A5.R2-A6.R3+A7.R1+A8.R2
  3519.                       -A9.R3+A10.R1 ;
  3520.     REMOTE ;
  3521.   end ;
  3522. end PROC_PACKAGE_12 ;
  3523. ::::::::::
  3524. P000013.ADA
  3525. ::::::::::
  3526.  
  3527. -- PERFORMANCE MEASUREMENT : procedure call and return time
  3528. --                           procedure in package
  3529. --                           twenty composite "in" parameters
  3530.  
  3531. package PROC_PACKAGE_13 is
  3532.   type MY_RECORD is
  3533.     record
  3534.       R1 : INTEGER ;
  3535.       R2 : INTEGER ;
  3536.       R3 : INTEGER ;
  3537.     end record ;
  3538.   procedure PROC_0 ( A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
  3539.                      A11,A12,A13,A14,A15,A16,A17,A18,A19,A20 : in MY_RECORD ) ;
  3540. end PROC_PACKAGE_13 ;
  3541.  
  3542. with PROC_PACKAGE_13 ; use PROC_PACKAGE_13 ;
  3543. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  3544. with ITERATION ; -- obtain stable measurement
  3545. with PIWG_IO ; -- output results
  3546.  
  3547. procedure P000013 is  -- main procedure to execute
  3548.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  3549.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  3550.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  3551.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  3552.   STABLE : BOOLEAN ; -- true when measurement stable
  3553.   A : MY_RECORD := ( A_ONE , A_ONE + A_ONE , A_ONE + A_ONE + A_ONE ) ;
  3554.  
  3555. begin
  3556.  
  3557.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  3558.  
  3559.   delay 0.5 ;  -- wait for stable enviornment on some machines
  3560.  
  3561.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  3562.  
  3563.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  3564.  
  3565. --
  3566. -- Control loop
  3567. --
  3568.     ITERATION.START_CONTROL ;
  3569.     for J in 1 .. ITERATION_COUNT loop
  3570.       GLOBAL := 0 ;
  3571.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  3572.         GLOBAL := GLOBAL + A.R1+A.R2+A.R3-A.R1-A.R2-A.R3+A.R1+A.R2
  3573.                       -A.R3+A.R1+A.R1+A.R2-A.R3+A.R1+A.R2-A.R3
  3574.                       +A.R1+A.R2-A.R3-A.R1+A_ONE ;
  3575.         REMOTE ;                   
  3576.       end loop ;
  3577.     end loop ;
  3578.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  3579.  
  3580. --
  3581. -- Test loop
  3582. --
  3583.     ITERATION.START_TEST ;
  3584.     for J in 1 .. ITERATION_COUNT loop
  3585.       GLOBAL := 0 ;
  3586.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  3587.         PROC_0 ( A, A, A, A, A, A, A, A, A, A,
  3588.                  A, A, A, A, A, A, A, A, A, A ) ;
  3589.         -- this has control global increment and call inside
  3590.       end loop ;
  3591.     end loop ;
  3592.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  3593.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  3594.     exit when STABLE ;
  3595.   end loop ;
  3596. --
  3597.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  3598.  
  3599. --
  3600. -- Printout
  3601. --
  3602.   PIWG_IO.PIWG_OUTPUT ( "P000013" , "Procedure" ,
  3603.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  3604.      " Procedure call and return time measurement" ,
  3605.      " twenty composite 'in' parameters " ,
  3606.      " The package body is compiled after the spec is used" ) ;
  3607.  
  3608. end P000013 ;
  3609.  
  3610.  
  3611. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ;
  3612. package body PROC_PACKAGE_13 is -- compare to P00000
  3613.   procedure PROC_0 ( A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
  3614.                      A11,A12,A13,A14,A15,A16,A17,A18,A19,A20 : in MY_RECORD ) is
  3615.   begin
  3616.     GLOBAL := GLOBAL + A1.R1+A2.R2+A3.R3-A4.R1-A5.R2-A6.R3+A7.R1+A8.R2
  3617.                       -A9.R3+A10.R1+A11.R1+A12.R2-A13.R3+A14.R1+A15.R2-A16.R3
  3618.                       +A17.R1+A18.R2-A19.R3-A20.R1+A_ONE ;
  3619.     REMOTE ;
  3620.   end ;
  3621. end PROC_PACKAGE_13 ;
  3622. ::::::::::
  3623. READ.ME
  3624. ::::::::::
  3625.  
  3626. READ.ME  
  3627.  
  3628. There are three (3) complete runs to be made on each computer/compiler
  3629. combination:
  3630.  
  3631.    1) The first run is typified by ACOMPILE.COM (VAX) or ACOMPILE.CLI
  3632.       ( ROLM/Data General ). Build the necessary script from one of these
  3633.       for your computer/compiler. This first script compiles the feature
  3634.       measurement tests, links them into one executable program,
  3635.       and then executes the tests and prints a report. The minimum times
  3636.       are desired. Runs tests individually if times differ significantly
  3637.       form the combined tests.
  3638.       An alternate form is shown in WCOMPILE.COM and COMPILE.COM ( VAX )
  3639.       These tests may be run one at a time, starting with C000001 and
  3640.       continuing through T000006, with A000091, A000093, A000094 also.
  3641.       For embedded computers, this run must be executed on real hardware.
  3642.       This run is not suitable for simulators.
  3643.       ( COPY.R1000 may help selecting the files for the RATIONAL R1000 and
  3644.         see ACOMPILE.LOGR1000 for an example run )
  3645.       The files with an extension or type with the word LOG in it are
  3646.       random samples of output.
  3647.  
  3648.    2) The second run is typified by ZCOMPILE.COM ( VAX ) or ZCOMPILE.CLI
  3649.       ( ROLM/Data General ) or ZCOMPILE.ICC for the ICC compiler on the
  3650.       GOULD computer. Build the necessary script from one of these
  3651.       for your computer/compiler. This script provides one compilation time
  3652.       measurement for the time to compile, link and execute two programs.
  3653.       The execution time is very small compared to compile time.
  3654.       The "execution" for this run can be performed on a simulator ( the
  3655.       simulation time is not counted as part of the total time )
  3656.  
  3657.    3) The third run is typified by Z000111D.COM ( VAX ) or Z000111D.CLI
  3658.       ( ROLM/Data General ). Build the necessary script from one of these
  3659.       for your computer/compiler. This script provides many compilation
  3660.       time measurements. There are sets of increasingly larger compilations
  3661.       in order to get a feature verses time plot for compilation.
  3662.       There is no linking or execution in this run. Even for embedded
  3663.       computers it is strictly a host computer run.
  3664.       Z000111.COM just prints wall time between each run. Please do the
  3665.       subtractions if Z000111D.COM will not run.
  3666.  
  3667. Generally, compilation order is alphabetical.
  3668. There are a number of choices to be made depending on computer/compiler.
  3669.  
  3670. 1. Choose either A000001 or A000002 for DURATION_IO. A000001 is preferred.
  3671.  
  3672. 2. Choose one of A000011 through A000016 for CPU_TIME_CLOCK. This is
  3673.    computer/operating system dependent.
  3674.  
  3675. 3. Choose one of A000042 through A000044 for PIWG_IO body.
  3676.         A000042 produces printout as it runs ( only one sample per run)
  3677.         A000043 writes times to disk and then A000049 is used to average
  3678.                 and print the results.
  3679.         A000044 saves the time values in memory ( only for embedded computers
  3680.                 that have no TEXT_IO,  some editing will be required )
  3681.  
  3682. 4. Choose from making each procedure C000001 through T000006 a main program
  3683.    or using A000100 as a single main program with A000042
  3684.    or using A000101 and A000102 as a pair of smaller main programs
  3685.    or using A000103 ( like A000100 as a single main program ) with A000049,
  3686.                       and A000043 in place of A000042, PIWG_IO.
  3687.    or using appropriate versions of A000104, A000105, A000106 and A000107
  3688.                       main programs
  3689.  
  3690. The first group of files establishes the basic routines in the program library.
  3691. The complete test suite can be compiled, linked and run from one library.
  3692. All files are of the form  NAME.TYP with TYP being ADA for all Ada source files
  3693.  
  3694. ADA A000001    DURATION_IO instantiation      PICK ONE of these two
  3695. ADA A000002    DURATION_IO using FLOAT_IO for incomplete compilers
  3696.  
  3697. ADA A000011    CPU_TIME_CLOCK.ADA     PICK ONE from this set or do your own
  3698. ADA A000012    CPU_TIME_CLOCK.VAX     --------
  3699. ADA A000013    CPU_TIME_CLOCK.DG      ( manufacturers should help )
  3700. ADA A000014    CPU_TIME_CLOCK.UNIX
  3701. ADA A000015    CPU_TIME_CLOCK.R1000
  3702. ADA A000016    CPU_TIME_CLOCK.ULTRIX
  3703.  
  3704. ADA A000021    REMOTE_GLOBAL_        optimization control package spec
  3705. ADA A000022    REMOTE_GLOBAL         optimization control package body
  3706.  
  3707. ADA A000031    ITERATION_            Iteration control package spec
  3708. ADA A000032    ITERATION             Iteration control package body
  3709.  
  3710. ADA A000041    PIWG_IO_              output package spec ( universal )       
  3711.  
  3712.                                      PICK ONE from group below:
  3713. ADA A000042    PIWG_IO               package body for screen/printer output
  3714. ADA A000043    PIWG_IO               package body for writing to disk
  3715. ADA A000044    PIWG_IO               package body for save in memory, no TEXT_IO
  3716.  
  3717. ADA A000049    A000049               Report printer if A000043 is used.
  3718.  
  3719. ADA A000051    A000051               executable procedure to print WALL and CPU 
  3720.  
  3721. ADA A000052    A000052               A set of 4 executable procedures that
  3722. ADA A000053    A000053               can be used to measure CPU and Wall time
  3723. ADA A000054    A000054               without instrumenting the run begin
  3724. ADA A000055    A000055               measured. Place optional control between
  3725.                                      A000052 and A000053. Place test being
  3726.                                      measured between A000054 and A000055.
  3727.  
  3728. ADA A000091    DHRYSTONE
  3729. ADA A000092    WHETSTONE using manufacturers math routines ( must edit )
  3730. ADA A000093    WHETSTONE using standard Ada math routines
  3731. ADA A000094    HENNESY   benchmarks
  3732.  
  3733. ADA A000098    This is a skeleton procedure that can be copied and edited
  3734.                to construct more tests that have multiple parts.
  3735.  
  3736. ADA A000099    This is a skeleton procedure that can be copied and edited
  3737.                to construct more tests.
  3738.  
  3739. ADA A000100    A000100 This is a top level procedure that calls all the other
  3740.                executable timing tests. It is useful if there is a "MAKE"
  3741.                facility available. ( This may be too big to execute on many
  3742.                computers. Tests may be run individually or this may be split
  3743.                into smaller sets )
  3744.  
  3745. ADA A000101    This and A000102 are A000100 split in two pieces.
  3746.                A000091 .. L000003
  3747. ADA A000102    P000001 .. T000006
  3748.  
  3749. ADA A000103    All test, similar to A000100, with 10 iterations on tests
  3750.                that can be executed in a loop.A000043  PIWG_IO must be
  3751.                chosen to use this test.
  3752. ADA A000104    This is the composite benchmark part of A000100
  3753. ADA A000105    This is the non-I/O non-tasking part of A000100
  3754. ADA A000106    This is the I/O part of A000100
  3755. ADA A000107    This is the tasking part of A000100
  3756.  
  3757.                This group of tests measures task creation related timing.
  3758. ADA C000001
  3759. ADA C000002
  3760. ADA C000003
  3761.  
  3762.                This group of tests measures dynamic elaboration related timing.
  3763. ADA D000001
  3764. ADA D000002
  3765. ADA D000003
  3766. ADA D000004
  3767.  
  3768.                This group of tests measures exception related timing.
  3769. ADA E000001
  3770. ADA E000002
  3771. ADA E000004
  3772.  
  3773.                This group of tests measures coding style related timing.
  3774. ADA F000001
  3775. ADA F000002
  3776.  
  3777.                This group of tests measures TEXT_IO related timing.
  3778. ADA G000001
  3779. ADA G000002
  3780. ADA G000003
  3781. ADA G000004
  3782. ADA G000005
  3783. ADA G000006
  3784. ADA G000007
  3785.  
  3786.                This group of tests measures loop overhead related timing.
  3787. ADA L000001
  3788. ADA L000002
  3789. ADA L000003
  3790.  
  3791.                This group of tests measures procedure call related timing.
  3792. ADA P000001
  3793. ADA P000002
  3794. ADA P000003
  3795. ADA P000004
  3796. ADA P000005
  3797. ADA P000006
  3798. ADA P000007
  3799. ADA P000010
  3800. ADA P000011
  3801. ADA P000012
  3802. ADA P000013
  3803.  
  3804.                This group of tests measures task related timing.
  3805. ADA T000001
  3806. ADA T000002
  3807. ADA T000003
  3808. ADA T000004
  3809. ADA T000005
  3810. ADA T000006
  3811. ADA T000007  this is a check on T000001 that only works on some machines
  3812.  
  3813. The file ACOMPILE.COM is a sample script that runs the above tests.
  3814. The file ACOMPILE.CLI is a sample script for Data General MV series for above
  3815. The file COMPILE.COM is another sample script for the VAX
  3816. The file COMPILE.CLI is a sample script for Data General MV series for above
  3817. The file WCOMPILE.COM is another sample script for an embedded compiler
  3818.                       running on a VAX.
  3819.  
  3820. More on Run 2
  3821.  
  3822. The "Z" tests are for measuring compilation time
  3823.  
  3824. Z000001 through Z000023 are all part of one test, see sample script ZCOMPILE
  3825. see ZCOMPILE.COM for compilation speed test ( the historic Z tests one set )
  3826. see ZCOMPILE.CLI for another sample script.
  3827.     ZCOMPILE.LOG is a sample output
  3828.  
  3829.  
  3830. More on Run 3
  3831.  
  3832. Z000110 through Z000315 are each measured for compile time. ( no link or
  3833. execute )
  3834.  
  3835. see ZOOO111D.COM for compilation speed test ( individually timed )
  3836. see Z000111D.CLI for another sample script.
  3837.     Z000111D.LOG is a sample output
  3838. ::::::::::
  3839. T000001.ADA
  3840. ::::::::::
  3841.  
  3842. -- PERFORMANCE MEASUREMENT : Minimum entry call and return time
  3843. --                           task inside procedure
  3844. --                           1 task 1 entry
  3845. --                           no select, do..end
  3846.  
  3847. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  3848. with ITERATION ; -- obtain stable measurement
  3849. with PIWG_IO ; -- output results
  3850.  
  3851. procedure T000001 is  -- main procedure to execute
  3852.  
  3853.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  3854.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  3855.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  3856.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  3857.   STABLE : BOOLEAN ; -- true when measurement stable
  3858.  
  3859. --
  3860.   task T1 is
  3861.     entry E1 ;
  3862.   end T1 ;
  3863.  
  3864.   task body T1 is
  3865.   begin
  3866.     loop
  3867.       accept E1 do
  3868.         GLOBAL := GLOBAL + A_ONE ;
  3869.         REMOTE ;
  3870.       end E1 ;
  3871.     end loop ;
  3872.   end ;
  3873.  
  3874. begin
  3875.  
  3876.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  3877.  
  3878.   delay 00.5 ;  -- wait for stable enviornment on some machines
  3879.  
  3880.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  3881.  
  3882.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  3883.  
  3884. --
  3885. -- Control loop
  3886. --
  3887.     ITERATION.START_CONTROL ;
  3888.     for J in 1 .. ITERATION_COUNT loop
  3889.       GLOBAL := 0 ;
  3890.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  3891.         GLOBAL := GLOBAL + A_ONE ; 
  3892.         REMOTE ;                   
  3893.       end loop ;
  3894.     end loop ;
  3895.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  3896.  
  3897. --
  3898. -- Test loop
  3899. --
  3900.     ITERATION.START_TEST ;
  3901.     for J in 1 .. ITERATION_COUNT loop
  3902.       GLOBAL := 0 ;
  3903.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  3904.         T1.E1 ; -- this has control global increment and call inside
  3905.       end loop ;
  3906.     end loop ;
  3907.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  3908.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  3909.     exit when STABLE ;
  3910.   end loop ;
  3911. --
  3912.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  3913.  
  3914. --
  3915. -- Printout
  3916. --
  3917.    PIWG_IO.PIWG_OUTPUT ( "T000001" , "Tasking" ,
  3918.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  3919.      " Minimum rendezvous, entry call and return time " ,
  3920.      " 1 task 1 entry , task inside procedure " ,
  3921.      " no select " ) ;
  3922.  
  3923.   abort T1 ;
  3924.  
  3925. end T000001 ;
  3926. ::::::::::
  3927. T000002.ADA
  3928. ::::::::::
  3929.  
  3930. -- PERFORMANCE MEASUREMENT : task entry call and return time, 1 task 1 entry
  3931. --                           task in package, no select
  3932.  
  3933. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ;
  3934. package TASK_PACK_2 is
  3935.   task T1 is
  3936.     entry E1 ;
  3937.   end T1 ;
  3938. end TASK_PACK_2 ;
  3939.  
  3940. with TASK_PACK_2 ; use TASK_PACK_2 ;
  3941. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  3942. with ITERATION ; -- obtain stable measurement
  3943. with PIWG_IO ; -- output results
  3944.  
  3945. procedure T000002 is  -- main procedure to execute
  3946.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  3947.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  3948.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  3949.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  3950.   STABLE : BOOLEAN ; -- true when measurement stable
  3951.  
  3952. begin
  3953.  
  3954.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  3955.  
  3956.   delay 0.5 ;  -- wait for stable enviornment on some machines
  3957.  
  3958.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  3959.  
  3960.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  3961.  
  3962. --
  3963. -- Control loop
  3964. --
  3965.     ITERATION.START_CONTROL ;
  3966.     for J in 1 .. ITERATION_COUNT loop
  3967.       GLOBAL := 0 ;
  3968.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  3969.         GLOBAL := GLOBAL + A_ONE ; 
  3970.         REMOTE ;                   
  3971.       end loop ;
  3972.     end loop ;
  3973.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  3974.  
  3975. --
  3976. -- Test loop
  3977. --
  3978.     ITERATION.START_TEST ;
  3979.     for J in 1 .. ITERATION_COUNT loop
  3980.       GLOBAL := 0 ;
  3981.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  3982.         T1.E1 ; -- this has control global increment and call inside
  3983.       end loop ;
  3984.     end loop ;
  3985.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  3986.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  3987.     exit when STABLE ;
  3988.   end loop ;
  3989. --
  3990.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  3991.  
  3992. --
  3993. -- Printout
  3994. --
  3995.   PIWG_IO.PIWG_OUTPUT ( "T000002" , "Tasking" ,
  3996.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  3997.      " Task entry call and return time measured" ,
  3998.      " One task active, one entry in task, task in a package " ,
  3999.      " no select statement " ) ;
  4000.  
  4001.   abort T1 ;
  4002. end T000002 ;
  4003.  
  4004. package body TASK_PACK_2 is
  4005.   task body T1 is
  4006.   begin
  4007.     loop
  4008.       accept E1 do
  4009.         GLOBAL := GLOBAL + A_ONE ;
  4010.         REMOTE ;
  4011.       end E1 ;
  4012.     end loop ;
  4013.   end ;
  4014. end TASK_PACK_2 ;
  4015. ::::::::::
  4016. T000003.ADA
  4017. ::::::::::
  4018. -- PERFORMANCE MEASUREMENT :  Task entry call and return time measured
  4019. --                            Two tasks active, one entry per task
  4020. --                            tasks in a package
  4021. --                            no select statement 
  4022.  
  4023. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ;
  4024. package TASK_PACK_3 is
  4025.   task T1 is
  4026.     entry E1 ;
  4027.   end T1 ;
  4028.   task T2 is
  4029.     entry E2 ;
  4030.   end T2 ;
  4031. end TASK_PACK_3 ;
  4032.  
  4033. with TASK_PACK_3 ; use TASK_PACK_3 ;
  4034. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  4035. with ITERATION ; -- obtain stable measurement
  4036. with PIWG_IO ; -- output results
  4037.  
  4038. procedure T000003 is  -- main procedure to execute
  4039.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  4040.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  4041.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  4042.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  4043.   STABLE : BOOLEAN ; -- true when measurement stable
  4044.   CASE_COUNT : constant := 2 ;
  4045.  
  4046. begin
  4047.  
  4048.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  4049.  
  4050.   delay 0.5 ;  -- wait for stable enviornment on some machines
  4051.  
  4052.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  4053.  
  4054.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  4055.  
  4056. --
  4057. -- Control loop
  4058. --
  4059.     ITERATION.START_CONTROL ;
  4060.     for J in 1 .. ITERATION_COUNT loop
  4061.       GLOBAL := 0 ;
  4062.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  4063.         GLOBAL := GLOBAL + A_ONE ; 
  4064.         REMOTE ;                   
  4065.       end loop ;
  4066.     end loop ;
  4067.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  4068.  
  4069.  
  4070. --
  4071. -- Test loop
  4072. --
  4073.     ITERATION.START_TEST ;
  4074.     for J in 1 .. ITERATION_COUNT loop
  4075.       GLOBAL := 0 ;
  4076.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  4077.         T1.E1 ; -- this has control global increment and call inside
  4078.         T2.E2 ; -- this has control global increment and call inside
  4079.       end loop ;
  4080.     end loop ;
  4081.     GLOBAL := GLOBAL / CASE_COUNT ;
  4082.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  4083.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  4084.     exit when STABLE ;
  4085.   end loop ;
  4086. --
  4087.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  4088.   CPU_TIME := DURATION ( CPU_TIME / CASE_COUNT ) ;
  4089.   WALL_TIME := DURATION ( WALL_TIME / CASE_COUNT ) ;
  4090. --
  4091. -- Printout
  4092. --
  4093.   PIWG_IO.PIWG_OUTPUT ( "T000003" , "Tasking" ,
  4094.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  4095.      " Task entry call and return time measured" ,
  4096.      " Two tasks active, one entry per task, tasks in a package " ,
  4097.      " no select statement " ) ;
  4098.   abort T1 ;
  4099.   abort T2 ;
  4100. end T000003 ;
  4101.  
  4102. package body TASK_PACK_3 is
  4103.   task body T1 is
  4104.   begin
  4105.     loop
  4106.       accept E1 do
  4107.         GLOBAL := GLOBAL + A_ONE ;
  4108.         REMOTE ;
  4109.       end E1 ;
  4110.     end loop ;
  4111.   end T1 ;
  4112.  
  4113.   task body T2 is
  4114.   begin
  4115.     loop
  4116.       accept E2 do
  4117.         GLOBAL := GLOBAL + A_ONE ;
  4118.         REMOTE ;
  4119.       end E2 ;
  4120.     end loop ;
  4121.   end T2 ;
  4122. end TASK_PACK_3 ;
  4123. ::::::::::
  4124. T000004.ADA
  4125. ::::::::::
  4126. -- PERFORMANCE MEASUREMENT : tasks entry call and return time
  4127. --                           1 task 2 entries
  4128. --                           one select statement
  4129.  
  4130. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ;
  4131. package TASK_PACK_4 is
  4132.   task T1 is
  4133.     entry E1 ;
  4134.     entry E2 ;
  4135.   end T1 ;
  4136. end TASK_PACK_4 ;
  4137.  
  4138. with TASK_PACK_4 ; use TASK_PACK_4 ;
  4139. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  4140. with ITERATION ; -- obtain stable measurement
  4141. with PIWG_IO ; -- output results
  4142.  
  4143. procedure T000004 is  -- main procedure to execute
  4144.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  4145.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  4146.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  4147.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  4148.   STABLE : BOOLEAN ; -- true when measurement stable
  4149.   CASE_COUNT : constant := 2 ;
  4150.  
  4151. begin
  4152.  
  4153.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  4154.  
  4155.   delay 0.5 ;  -- wait for stable enviornment on some machines
  4156.  
  4157.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  4158.  
  4159.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  4160.  
  4161. --
  4162. -- Control loop
  4163. --
  4164.     ITERATION.START_CONTROL ;
  4165.     for J in 1 .. ITERATION_COUNT loop
  4166.       GLOBAL := 0 ;
  4167.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  4168.         GLOBAL := GLOBAL + A_ONE ; 
  4169.         REMOTE ;                   
  4170.       end loop ;
  4171.     end loop ;
  4172.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  4173.  
  4174. --
  4175. -- Test loop
  4176. --
  4177.     ITERATION.START_TEST ;
  4178.     for J in 1 .. ITERATION_COUNT loop
  4179.       GLOBAL := 0 ;
  4180.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  4181.         T1.E1 ; -- this has control global increment and call inside
  4182.         T1.E2 ; -- this has control global increment and call inside
  4183.       end loop ;
  4184.     end loop ;
  4185.     GLOBAL := GLOBAL / CASE_COUNT ;
  4186.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  4187.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  4188.     exit when STABLE ;
  4189.   end loop ;
  4190. --
  4191.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  4192.   CPU_TIME := DURATION ( CPU_TIME / CASE_COUNT ) ;
  4193.   WALL_TIME := DURATION ( WALL_TIME / CASE_COUNT ) ;
  4194.  
  4195. --
  4196. -- Printout
  4197. --
  4198.   PIWG_IO.PIWG_OUTPUT ( "T000004" , "Tasking" ,
  4199.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  4200.      " Task entry call and return time measured" ,
  4201.      " One tasks active, two entries, tasks in a package " ,
  4202.      " using select statement " ) ;
  4203.  
  4204.   abort T1 ;
  4205. end T000004 ;
  4206.  
  4207. package body TASK_PACK_4 is
  4208.   task body T1 is
  4209.   begin
  4210.     loop
  4211.       select
  4212.         accept E1 do
  4213.           GLOBAL := GLOBAL + A_ONE ;
  4214.           REMOTE ;
  4215.         end E1 ;
  4216.       or
  4217.         accept E2 do
  4218.           GLOBAL := GLOBAL + A_ONE ;
  4219.           REMOTE ;
  4220.         end E2 ;
  4221.       end select ;
  4222.     end loop ;
  4223.   end T1 ;
  4224.  
  4225. end TASK_PACK_4 ;
  4226. ::::::::::
  4227. T000005.ADA
  4228. ::::::::::
  4229. -- PERFORMANCE MEASUREMENT :  active entry call and return time
  4230. --                            10 tasks 1 entry each
  4231. --                            no select statement
  4232.  
  4233. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ;
  4234. package TASK_PACK_5 is
  4235.   task T1 is
  4236.     entry E1 ;
  4237.   end T1 ;
  4238.   task T2 is
  4239.     entry E2 ;
  4240.   end T2 ;
  4241.   task T3 is
  4242.     entry E3 ;
  4243.   end T3 ;
  4244.   task T4 is
  4245.     entry E4 ;
  4246.   end T4 ;
  4247.   task T5 is
  4248.     entry E5 ;
  4249.   end T5 ;
  4250.   task T6 is
  4251.     entry E6 ;
  4252.   end T6 ;
  4253.   task T7 is
  4254.     entry E7 ;
  4255.   end T7 ;
  4256.   task T8 is
  4257.     entry E8 ;
  4258.   end T8 ;
  4259.   task T9 is
  4260.     entry E9 ;
  4261.   end T9 ;
  4262.   task T10 is
  4263.     entry E10 ;
  4264.   end T10 ;
  4265. end TASK_PACK_5 ;
  4266.  
  4267. with TASK_PACK_5 ; use TASK_PACK_5 ;
  4268. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  4269. with ITERATION ; -- obtain stable measurement
  4270. with PIWG_IO ; -- output results
  4271.  
  4272. procedure T000005 is  -- main procedure to execute
  4273.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  4274.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  4275.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  4276.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  4277.   STABLE : BOOLEAN ; -- true when measurement stable
  4278.   CASE_COUNT : constant := 10 ;
  4279.  
  4280. begin
  4281.  
  4282.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  4283.  
  4284.   delay 0.5 ;  -- wait for stable enviornment on some machines
  4285.  
  4286.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  4287.  
  4288.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  4289.  
  4290. --
  4291. -- Control loop
  4292. --
  4293.     ITERATION.START_CONTROL ;
  4294.     for J in 1 .. ITERATION_COUNT loop
  4295.       GLOBAL := 0 ;
  4296.       for INSIDE_LOOP in 1 .. INTEGER ( CHECK_TIMES * CASE_COUNT ) loop
  4297.         GLOBAL := GLOBAL + A_ONE ; 
  4298.         REMOTE ;                   
  4299.       end loop ;
  4300.     end loop ;
  4301.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES * CASE_COUNT ) ;
  4302.  
  4303. --
  4304. -- Test loop
  4305. --
  4306.     ITERATION.START_TEST ;
  4307.     for J in 1 .. ITERATION_COUNT loop
  4308.       GLOBAL := 0 ;
  4309.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  4310.  --      each entry has control global increment and call inside
  4311.         T5.E5 ;
  4312.         T7.E7 ;
  4313.         T2.E2 ;
  4314.         T1.E1 ;
  4315.         T10.E10 ;
  4316.         T3.E3 ;
  4317.         T9.E9 ;
  4318.         T8.E8 ;
  4319.         T4.E4 ;
  4320.         T6.E6 ;
  4321.       end loop ;
  4322.     end loop ;
  4323.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES * CASE_COUNT ) ;
  4324.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  4325.     exit when STABLE ;
  4326.   end loop ;
  4327. --
  4328.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  4329.  
  4330. --
  4331. -- Printout
  4332. --
  4333.   PIWG_IO.PIWG_OUTPUT ( "T000005" , "Tasking" ,
  4334.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  4335.      " Task entry call and return time measured" ,
  4336.      " Ten tasks active, one entry per task, tasks in a package " ,
  4337.      " no select statement " ) ;
  4338.  
  4339.   abort T1 ;
  4340.   abort T2 ;
  4341.   abort T3 ;
  4342.   abort T4 ;
  4343.   abort T5 ;
  4344.   abort T6 ;
  4345.   abort T7 ;
  4346.   abort T8 ;
  4347.   abort T9 ;
  4348.   abort T10 ;
  4349. end T000005 ;
  4350.  
  4351. package body TASK_PACK_5 is
  4352.   task body T1 is
  4353.   begin
  4354.     loop
  4355.       accept E1 do
  4356.          GLOBAL := GLOBAL + A_ONE ;
  4357.          REMOTE ;
  4358.       end E1;
  4359.     end loop ;
  4360.   end T1 ;
  4361.  
  4362.   task body T2 is
  4363.   begin
  4364.     loop
  4365.       accept E2 do
  4366.          GLOBAL := GLOBAL + A_ONE ;
  4367.          REMOTE ;
  4368.       end E2;
  4369.     end loop ;
  4370.   end T2 ;
  4371.  
  4372.   task body T3 is
  4373.   begin
  4374.     loop
  4375.       accept E3 do
  4376.          GLOBAL := GLOBAL + A_ONE ;
  4377.          REMOTE ;
  4378.       end E3;
  4379.     end loop ;
  4380.   end T3 ;
  4381.  
  4382.   task body T4 is
  4383.   begin
  4384.     loop
  4385.       accept E4 do
  4386.          GLOBAL := GLOBAL + A_ONE ;
  4387.          REMOTE ;
  4388.       end E4;
  4389.     end loop ;
  4390.   end T4 ;
  4391.  
  4392.   task body T5 is
  4393.   begin
  4394.     loop
  4395.       accept E5 do
  4396.          GLOBAL := GLOBAL + A_ONE ;
  4397.          REMOTE ;
  4398.       end E5;
  4399.     end loop ;
  4400.   end T5 ;
  4401.  
  4402.   task body T6 is
  4403.   begin
  4404.     loop
  4405.       accept E6 do
  4406.          GLOBAL := GLOBAL + A_ONE ;
  4407.          REMOTE ;
  4408.       end E6;
  4409.     end loop ;
  4410.   end T6 ;
  4411.  
  4412.   task body T7 is
  4413.   begin
  4414.     loop
  4415.       accept E7 do
  4416.          GLOBAL := GLOBAL + A_ONE ;
  4417.          REMOTE ;
  4418.       end E7;
  4419.     end loop ;
  4420.   end T7 ;
  4421.  
  4422.   task body T8 is
  4423.   begin
  4424.     loop
  4425.       accept E8 do
  4426.          GLOBAL := GLOBAL + A_ONE ;
  4427.          REMOTE ;
  4428.       end E8;
  4429.     end loop ;
  4430.   end T8 ;
  4431.  
  4432.   task body T9 is
  4433.   begin
  4434.     loop
  4435.       accept E9 do
  4436.          GLOBAL := GLOBAL + A_ONE ;
  4437.          REMOTE ;
  4438.       end E9;
  4439.     end loop ;
  4440.   end T9 ;
  4441.  
  4442.   task body T10 is
  4443.   begin
  4444.     loop
  4445.       accept E10 do
  4446.          GLOBAL := GLOBAL + A_ONE ;
  4447.          REMOTE ;
  4448.       end E10;
  4449.     end loop ;
  4450.   end T10 ;
  4451.  
  4452. end TASK_PACK_5 ;
  4453. ::::::::::
  4454. T000006.ADA
  4455. ::::::::::
  4456. -- PERFORMANCE MEASUREMENT : tasks entry call and return time
  4457. --                           1 task 10 entries
  4458. --                           one select statement
  4459.  
  4460. package TASK_PACK_6 is
  4461.   task T1 is
  4462.     entry E1 ;
  4463.     entry E2 ;
  4464.     entry E3 ;
  4465.     entry E4 ;
  4466.     entry E5 ;
  4467.     entry E6 ;
  4468.     entry E7 ;
  4469.     entry E8 ;
  4470.     entry E9 ;
  4471.     entry E10 ;
  4472.   end T1 ;
  4473. end TASK_PACK_6 ;
  4474.  
  4475. with TASK_PACK_6 ; use TASK_PACK_6 ;
  4476. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  4477. with ITERATION ; -- obtain stable measurement
  4478. with PIWG_IO ; -- output results
  4479.  
  4480.  
  4481. procedure T000006 is  -- main procedure to execute
  4482.  
  4483.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  4484.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  4485.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  4486.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  4487.   STABLE : BOOLEAN ; -- true when measurement stable
  4488.   CASE_COUNT : constant := 10 ;
  4489.  
  4490. begin
  4491.  
  4492.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  4493.  
  4494.   delay 0.5 ;  -- wait for stable enviornment on some machines
  4495.  
  4496.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  4497.  
  4498.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  4499.  
  4500. --
  4501. -- Control loop
  4502. --
  4503.     ITERATION.START_CONTROL ;
  4504.     for J in 1 .. ITERATION_COUNT loop
  4505.       GLOBAL := 0 ;
  4506.       for INSIDE_LOOP in 1 .. INTEGER ( CHECK_TIMES * CASE_COUNT ) loop
  4507.         GLOBAL := GLOBAL + A_ONE ; 
  4508.         REMOTE ;                   
  4509.       end loop ;
  4510.     end loop ;
  4511.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES * CASE_COUNT ) ;
  4512.  
  4513. --
  4514. -- Test loop
  4515. --
  4516.     ITERATION.START_TEST ;
  4517.     for J in 1 .. ITERATION_COUNT loop
  4518.       GLOBAL := 0 ;
  4519.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  4520.         T1.E5 ;
  4521.         T1.E7 ;
  4522.         T1.E2 ;
  4523.         T1.E1 ;
  4524.         T1.E10 ;
  4525.         T1.E3 ;
  4526.         T1.E9 ;
  4527.         T1.E8 ;
  4528.         T1.E4 ;
  4529.         T1.E6 ;
  4530.       end loop ;
  4531.     end loop ;
  4532.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES * CASE_COUNT ) ;
  4533.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  4534.     exit when STABLE ;
  4535.   end loop ;
  4536. --
  4537.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  4538.  
  4539. --
  4540. -- Printout
  4541. --
  4542.   PIWG_IO.PIWG_OUTPUT ( "T000006" , "TASKING" ,
  4543.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  4544.      " Task entry call and return time measurement" ,
  4545.      " One task with ten entries , task in a package " ,
  4546.      " one select statement, compare to T000005 " ) ;
  4547.  
  4548.   abort T1 ;
  4549.  
  4550. end T000006 ;
  4551.  
  4552. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ;
  4553.  
  4554. package body TASK_PACK_6 is
  4555.   task body T1 is
  4556.   begin
  4557.     loop
  4558.       select
  4559.         accept E1 do
  4560.            GLOBAL := GLOBAL + A_ONE ;
  4561.            REMOTE ;
  4562.         end E1;
  4563.       or
  4564.         accept E2 do
  4565.            GLOBAL := GLOBAL + A_ONE ;
  4566.            REMOTE ;
  4567.         end E2;
  4568.       or
  4569.         accept E3 do
  4570.            GLOBAL := GLOBAL + A_ONE ;
  4571.            REMOTE ;
  4572.         end E3;
  4573.       or
  4574.         accept E4 do
  4575.            GLOBAL := GLOBAL + A_ONE ;
  4576.            REMOTE ;
  4577.         end E4;
  4578.       or
  4579.         accept E5 do
  4580.            GLOBAL := GLOBAL + A_ONE ;
  4581.            REMOTE ;
  4582.         end E5;
  4583.       or
  4584.         accept E6 do
  4585.            GLOBAL := GLOBAL + A_ONE ;
  4586.            REMOTE ;
  4587.         end E6;
  4588.       or
  4589.         accept E7 do
  4590.            GLOBAL := GLOBAL + A_ONE ;
  4591.            REMOTE ;
  4592.         end E7;
  4593.       or
  4594.         accept E8 do
  4595.            GLOBAL := GLOBAL + A_ONE ;
  4596.            REMOTE ;
  4597.         end E8;
  4598.       or
  4599.         accept E9 do
  4600.            GLOBAL := GLOBAL + A_ONE ;
  4601.            REMOTE ;
  4602.         end E9;
  4603.       or
  4604.         accept E10 do
  4605.            GLOBAL := GLOBAL + A_ONE ;
  4606.            REMOTE ;
  4607.         end E10;
  4608.       or
  4609.         terminate ;
  4610.       end select ;
  4611.     end loop ;
  4612.   end T1 ;
  4613.  
  4614. end TASK_PACK_6 ;
  4615. ::::::::::
  4616. T000007.ADA
  4617. ::::::::::
  4618.  
  4619. -- PERFORMANCE MEASUREMENT : Minimum entry call and return time
  4620. --                           1 task 1 entry
  4621. --                           no select
  4622. --
  4623. --     This ia a version on T000001 without the " do .. end ; "
  4624. --     This will not work in most implementations because the checking
  4625. --     to be sure the task executions have completed fails.
  4626. --     If this test does run, please report it if the times differ
  4627. --     from T000001.
  4628.  
  4629. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  4630. with ITERATION ; -- obtain stable measurement
  4631. with PIWG_IO ; -- output results
  4632.  
  4633. procedure T000007 is  -- main procedure to execute
  4634.  
  4635.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  4636.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  4637.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  4638.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  4639.   STABLE : BOOLEAN ; -- true when measurement stable
  4640.  
  4641. --
  4642.   task T1 is
  4643.     entry E1 ;
  4644.   end T1 ;
  4645.  
  4646.   task body T1 is
  4647.   begin
  4648.     loop
  4649.       accept E1 ;
  4650.       GLOBAL := GLOBAL + A_ONE ;
  4651.       REMOTE ;
  4652.     end loop ;
  4653.   end ;
  4654.  
  4655. begin
  4656.  
  4657.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  4658.  
  4659.   delay 0.5 ;  -- wait for stable enviornment on some machines
  4660.  
  4661.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  4662.  
  4663.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  4664.  
  4665. --
  4666. -- Control loop
  4667. --
  4668.     ITERATION.START_CONTROL ;
  4669.     for J in 1 .. ITERATION_COUNT loop
  4670.       GLOBAL := 0 ;
  4671.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  4672.         GLOBAL := GLOBAL + A_ONE ; 
  4673.         REMOTE ;                   
  4674.       end loop ;
  4675.     end loop ;
  4676.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  4677.  
  4678. --
  4679. -- Test loop
  4680. --
  4681.     ITERATION.START_TEST ;
  4682.     for J in 1 .. ITERATION_COUNT loop
  4683.       GLOBAL := 0 ;
  4684.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  4685.         T1.E1 ; -- this has control global increment and call inside
  4686.       end loop ;
  4687.     end loop ;
  4688.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  4689.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  4690.     exit when STABLE ;
  4691.   end loop ;
  4692. --
  4693.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  4694.  
  4695. --
  4696. -- Printout
  4697. --
  4698.    PIWG_IO.PIWG_OUTPUT ( "T000007" , "Tasking" ,
  4699.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  4700.      " Minimum rendezvous, entry call and return time " ,
  4701.      " 1 task 1 entry " ,
  4702.      " no select " ) ;
  4703.  
  4704.   abort T1 ;
  4705.  
  4706. end T000007 ;
  4707. ::::::::::
  4708. TAPE.LOG
  4709. ::::::::::
  4710. Volume label:
  4711.     Label: VOL1 Serial: PIWG    Access:  
  4712.     Owner:                 Standard: 3
  4713. x A000001.ADA 1 blocks 81 bytes
  4714. x A000002.ADA 1 blocks 1455 bytes
  4715. x A000011.ADA 1 blocks 359 bytes
  4716. x A000012.ADA 1 blocks 815 bytes
  4717. x A000013.ADA 2 blocks 2552 bytes
  4718. x A000014.ADA 1 blocks 703 bytes
  4719. x A000015.ADA 1 blocks 200 bytes
  4720. x A000016.ADA 2 blocks 2207 bytes
  4721. x A000021.ADA 1 blocks 851 bytes
  4722. x A000022.ADA 1 blocks 932 bytes
  4723. x A000031.ADA 1 blocks 953 bytes
  4724. x A000032.ADA 4 blocks 5553 bytes
  4725. x A000033.ADA 3 blocks 5116 bytes
  4726. x A000041.ADA 1 blocks 1386 bytes
  4727. x A000042.ADA 1 blocks 1337 bytes
  4728. x A000043.ADA 2 blocks 2907 bytes
  4729. x A000044.ADA 1 blocks 843 bytes
  4730. x A000049.ADA 3 blocks 5437 bytes
  4731. x A000051.ADA 1 blocks 1109 bytes
  4732. x A000052.ADA 1 blocks 1419 bytes
  4733. x A000053.ADA 1 blocks 1795 bytes
  4734. x A000054.ADA 1 blocks 1840 bytes
  4735. x A000055.ADA 3 blocks 4034 bytes
  4736. x A000091.ADA 8 blocks 14184 bytes
  4737. x A000092.ADA 7 blocks 12949 bytes
  4738. x A000093.ADA 11 blocks 18814 bytes
  4739. x A000094.ADA 15 blocks 27462 bytes
  4740. x A000098.ADA 2 blocks 2792 bytes
  4741. x A000099.ADA 2 blocks 2581 bytes
  4742. x A000100.ADA 1 blocks 1512 bytes
  4743. x A000101.ADA 1 blocks 714 bytes
  4744. x A000102.ADA 1 blocks 664 bytes
  4745. x A000103.ADA 1 blocks 1735 bytes
  4746. x A000104.ADA 1 blocks 273 bytes
  4747. x A000105.ADA 1 blocks 743 bytes
  4748. x A000106.ADA 1 blocks 301 bytes
  4749. x A000107.ADA 1 blocks 436 bytes
  4750. x ACOMPILE.CLI 1 blocks 928 bytes
  4751. x ACOMPILE.COM 1 blocks 1347 bytes
  4752. x ACOMPILE.LR1 25 blocks 46085 bytes
  4753. x C000001.ADA 2 blocks 2583 bytes
  4754. x C000002.ADA 2 blocks 2628 bytes
  4755. x C000003.ADA 2 blocks 2307 bytes
  4756. x COMPILE.CLI 1 blocks 759 bytes
  4757. x COMPILE.COM 1 blocks 1165 bytes
  4758. x COMPILE.L78 9 blocks 15565 bytes
  4759. x COMPILE.L86 13 blocks 22354 bytes
  4760. x COPY.COM 4 blocks 6256 bytes
  4761. x COPY.R10 2 blocks 1988 bytes
  4762. x D000001.ADA 2 blocks 2811 bytes
  4763. x D000002.ADA 2 blocks 2865 bytes
  4764. x D000003.ADA 2 blocks 2981 bytes
  4765. x D000004.ADA 2 blocks 3098 bytes
  4766. x E000001.ADA 2 blocks 2487 bytes
  4767. x E000002.ADA 2 blocks 3178 bytes
  4768. x E000004.ADA 2 blocks 3453 bytes
  4769. x F000001.ADA 2 blocks 2103 bytes
  4770. x F000002.ADA 2 blocks 2243 bytes
  4771. x G000001.ADA 2 blocks 2551 bytes
  4772. x G000002.ADA 2 blocks 2857 bytes
  4773. x G000003.ADA 2 blocks 2346 bytes
  4774. x G000004.ADA 2 blocks 2642 bytes
  4775. x G000005.ADA 2 blocks 2367 bytes
  4776. x G000006.ADA 2 blocks 2510 bytes
  4777. x G000007.ADA 2 blocks 2184 bytes
  4778. x L000001.ADA 5 blocks 7528 bytes
  4779. x L000002.ADA 5 blocks 7582 bytes
  4780. x L000003.ADA 5 blocks 7616 bytes
  4781. x P000001.ADA 2 blocks 1842 bytes
  4782. x P000002.ADA 2 blocks 2187 bytes
  4783. x P000003.ADA 2 blocks 2327 bytes
  4784. x P000004.ADA 2 blocks 2423 bytes
  4785. x P000005.ADA 2 blocks 2364 bytes
  4786. x P000006.ADA 2 blocks 2397 bytes
  4787. x P000007.ADA 2 blocks 2395 bytes
  4788. x P000010.ADA 2 blocks 2826 bytes
  4789. x P000011.ADA 2 blocks 3477 bytes
  4790. x P000012.ADA 2 blocks 2860 bytes
  4791. x P000013.ADA 2 blocks 3181 bytes
  4792. x READ.ME 5 blocks 8774 bytes
  4793. x T000001.ADA 2 blocks 2237 bytes
  4794. x T000002.ADA 2 blocks 2339 bytes
  4795. x T000003.ADA 2 blocks 2888 bytes
  4796. x T000004.ADA 2 blocks 2764 bytes
  4797. x T000005.ADA 3 blocks 4437 bytes
  4798. x T000006.ADA 3 blocks 3707 bytes
  4799. x T000007.ADA 2 blocks 2418 bytes
  4800. x TAPEDIST.LTR 3 blocks 5013 bytes
  4801. x WCOMPILE.COM 2 blocks 2431 bytes
  4802. x Z000001.ADA 1 blocks 72 bytes
  4803. x Z000002.ADA 2 blocks 3033 bytes
  4804. x Z000003.ADA 3 blocks 5108 bytes
  4805. x Z000004.ADA 7 blocks 12709 bytes
  4806. x Z000005.ADA 7 blocks 11466 bytes
  4807. x Z000006.ADA 4 blocks 6032 bytes
  4808. x Z000007.ADA 1 blocks 1458 bytes
  4809. x Z000008.ADA 8 blocks 13133 bytes
  4810. x Z000009.ADA 7 blocks 12573 bytes
  4811. x Z000010.ADA 4 blocks 5944 bytes
  4812. x Z000011.ADA 8 blocks 14070 bytes
  4813. x Z000012.ADA 12 blocks 20086 bytes
  4814. x Z000013.ADA 5 blocks 7752 bytes
  4815. x Z000014.ADA 6 blocks 10876 bytes
  4816. x Z000015.ADA 2 blocks 2289 bytes
  4817. x Z000016.ADA 5 blocks 7625 bytes
  4818. x Z000016A.ADA 8 blocks 13147 bytes
  4819. x Z000017.ADA 5 blocks 7795 bytes
  4820. x Z000017A.ADA 8 blocks 12780 bytes
  4821. x Z000018.ADA 2 blocks 2032 bytes
  4822. x Z000020.ADA 4 blocks 6106 bytes
  4823. x Z000021.ADA 7 blocks 12174 bytes
  4824. x Z000022.ADA 1 blocks 1555 bytes
  4825. x Z000023.ADA 2 blocks 2698 bytes
  4826. x Z000110.ADA 1 blocks 116 bytes
  4827. x Z000111.ADA 1 blocks 1287 bytes
  4828. x Z000111.COM 2 blocks 2385 bytes
  4829. x Z000111D.CLI 2 blocks 2009 bytes
  4830. x Z000111D.COM 3 blocks 4072 bytes
  4831. x Z00011D.L86 6 blocks 10140 bytes
  4832. x Z000112.ADA 2 blocks 2607 bytes
  4833. x Z000113.ADA 4 blocks 6567 bytes
  4834. x Z000114.ADA 7 blocks 13168 bytes
  4835. x Z000121.ADA 2 blocks 2839 bytes
  4836. x Z000122.ADA 4 blocks 5839 bytes
  4837. x Z000123.ADA 9 blocks 14839 bytes
  4838. x Z000124.ADA 17 blocks 29841 bytes
  4839. x Z000131.ADA 1 blocks 1113 bytes
  4840. x Z000132.ADA 2 blocks 2354 bytes
  4841. x Z000133.ADA 4 blocks 6074 bytes
  4842. x Z000134.ADA 7 blocks 12276 bytes
  4843. x Z000141.ADA 3 blocks 4828 bytes
  4844. x Z000142.ADA 6 blocks 9928 bytes
  4845. x Z000143.ADA 14 blocks 25228 bytes
  4846. x Z000151.ADA 4 blocks 5921 bytes
  4847. x Z000152.ADA 7 blocks 12121 bytes
  4848. x Z000153.ADA 17 blocks 30721 bytes
  4849. x Z000161.ADA 3 blocks 5735 bytes
  4850. x Z000162.ADA 6 blocks 11635 bytes
  4851. x Z000171.ADA 3 blocks 4976 bytes
  4852. x Z000172.ADA 6 blocks 9976 bytes
  4853. x Z000173.ADA 14 blocks 24976 bytes
  4854. x Z000181.ADA 1 blocks 1120 bytes
  4855. x Z000182.ADA 2 blocks 2240 bytes
  4856. x Z000183.ADA 4 blocks 5600 bytes
  4857. x Z000184.ADA 7 blocks 11204 bytes
  4858. x Z000191.ADA 3 blocks 4699 bytes
  4859. x Z000192.ADA 5 blocks 9499 bytes
  4860. x Z000193.ADA 13 blocks 23899 bytes
  4861. x Z000201.ADA 2 blocks 2047 bytes
  4862. x Z000202.ADA 3 blocks 4147 bytes
  4863. x Z000203.ADA 6 blocks 10447 bytes
  4864. x Z000211.ADA 2 blocks 3347 bytes
  4865. x Z000212.ADA 4 blocks 6747 bytes
  4866. x Z000213.ADA 10 blocks 16947 bytes
  4867. x Z000221.ADA 1 blocks 678 bytes
  4868. x Z000222.ADA 1 blocks 1638 bytes
  4869. x Z000223.ADA 2 blocks 3240 bytes
  4870. x Z000224.ADA 4 blocks 6640 bytes
  4871. x Z000231.ADA 1 blocks 1382 bytes
  4872. x Z000232.ADA 2 blocks 2762 bytes
  4873. x Z000233.ADA 4 blocks 6902 bytes
  4874. x Z000234.ADA 8 blocks 13808 bytes
  4875. x Z000241.ADA 1 blocks 718 bytes
  4876. x Z000242.ADA 1 blocks 1418 bytes
  4877. x Z000243.ADA 2 blocks 3518 bytes
  4878. x Z000244.ADA 4 blocks 7021 bytes
  4879. x Z000254.ADA 5 blocks 8261 bytes
  4880. x Z000264.ADA 4 blocks 6461 bytes
  4881. x Z000274.ADA 12 blocks 21462 bytes
  4882. x Z000281.ADA 1 blocks 231 bytes
  4883. x Z000282.ADA 1 blocks 471 bytes
  4884. x Z000283.ADA 1 blocks 1191 bytes
  4885. x Z000284.ADA 2 blocks 2392 bytes
  4886. x Z000291.ADA 1 blocks 532 bytes
  4887. x Z000292.ADA 1 blocks 1082 bytes
  4888. x Z000293.ADA 2 blocks 2732 bytes
  4889. x Z000294.ADA 3 blocks 5484 bytes
  4890. x Z000295.ADA 6 blocks 11184 bytes
  4891. x Z000301.ADA 1 blocks 1117 bytes
  4892. x Z000302.ADA 2 blocks 2287 bytes
  4893. x Z000303.ADA 4 blocks 5797 bytes
  4894. x Z000304.ADA 7 blocks 11650 bytes
  4895. x Z000311.ADA 1 blocks 311 bytes
  4896. x Z000312.ADA 1 blocks 631 bytes
  4897. x Z000313.ADA 1 blocks 1591 bytes
  4898. x Z000314.ADA 2 blocks 3192 bytes
  4899. x Z000315.ADA 4 blocks 6492 bytes
  4900. x ZCOMPILE.CLI 1 blocks 557 bytes
  4901. x ZCOMPILE.COM 1 blocks 1139 bytes
  4902. x ZCOMPILE.ICC 1 blocks 482 bytes
  4903. x ZCOMPILE.L86 2 blocks 2380 bytes
  4904. ::::::::::
  4905. TAPEDIST.LTR
  4906. ::::::::::
  4907.  
  4908.  
  4909.  
  4910.                                                 November 17, 1986
  4911.  
  4912.  
  4913.  
  4914.  
  4915. Dear PIWG Tape Distribution,
  4916.  
  4917.  
  4918.  
  4919.   Enclosed is the tape distribution tree. The root nodes were mailed
  4920.   this letter and a tape at the same time everyone was sent the
  4921.   letter. If you did not get a tape, use the attached tree and mail
  4922.   a tape to your parent node. "Tape" may be disk or other media. The
  4923.   root nodes should make copies of the enclosed tape on the child nodes
  4924.   tape and mail the copies to their child nodes.
  4925.  
  4926.   The tape designation is TAPE_8_31_86. Older tapes are on file and
  4927.   this will not be the last tape. Please submit corrections and
  4928.   suggestions. More tests and improvements will be made as a
  4929.   result of the next PIWG workshop. Another, more complete tape
  4930.   will follow in six months to a year. 96 copies of this benchmark
  4931.   suite are being distributed.
  4932.  
  4933.   The purpose of PIWG is to develop the benchmarks and collect and
  4934.   disseminate results. Please send a copy of computer printout or
  4935.   a copy of the output or fill in the form below and on the back
  4936.   of this letter. It is important to get two sites to run the
  4937.   measurements on each target.
  4938.  
  4939.  
  4940.     To    Jon S. Squire
  4941.           Westinghouse Electric Corp.
  4942.           P.O. Box 746  MS 4760
  4943.           Baltimore, MD 21203
  4944.  
  4945.  
  4946.   Call me or call in results if you wish. (301)765-3748
  4947.  
  4948.  
  4949.  
  4950.  
  4951.  
  4952.                                                  Jon S. Squire, PIWG Chair
  4953.  
  4954.  
  4955. Results of PIWG  TAPE_8_31_86 benchmark runs
  4956.  
  4957. Date      _______________
  4958.  
  4959. Submitted by:
  4960.   name    _______________________________________________________
  4961.  
  4962.   addr    _______________________________________________________
  4963.  
  4964.           _______________________________________________________
  4965.  
  4966.   phone   _______________________________________________________
  4967.  
  4968.  
  4969. Please use FULL nomenclature and versions
  4970.  
  4971. Host      _______________________________________________________
  4972.  
  4973. Target    _______________________________________________________
  4974.  
  4975. Op System _______________________________________________________
  4976.  
  4977. Compiler  _______________________________________________________
  4978.  
  4979.  
  4980. PLEASE send at least one measurement.
  4981. If you can, make a second and third run to determine stability. If more
  4982. than one run is made, supply the average and the number of run averaged.
  4983. Throw out anomalous large or small runs. We want the best repeatable time
  4984. that can be achieved without changing the test suite.
  4985.  
  4986. Test           time                       number of runs(if averaged)
  4987. ----------     ---------                  -----------
  4988. A000091
  4989. Dhrystone      _________ milliseconds     ___
  4990.  
  4991. A000092                  manufacturers math routines
  4992. Whetstone      _________ Average Whetstone rating KWIPS  
  4993.  
  4994. A000093
  4995. Whetstone      _________ Average Whetstone rating KWIPS  
  4996.  
  4997. A000094
  4998. Hennesy 
  4999.    Perm Towers Queens  Intmm     Mm Puzzle  Quick Bubble   Tree    FFT    Ack
  5000.  
  5001.   _____  _____  _____  _____  _____  _____  _____  _____  _____  _____  _____
  5002.  
  5003.  
  5004. Just the CPU time from each test
  5005.  
  5006. C000001        _________ microseconds     ___
  5007.  
  5008. C000002        _________ microseconds     ___
  5009.  
  5010. C000003        _________ microseconds     ___
  5011.  
  5012. D000001        _________ microseconds     ___
  5013.  
  5014. D000002        _________ microseconds     ___
  5015.  
  5016. D000003        _________ microseconds     ___
  5017.  
  5018. D000004        _________ microseconds     ___
  5019.  
  5020. E000001        _________ microseconds     ___
  5021.  
  5022. E000002        _________ microseconds     ___
  5023.  
  5024. E000004        _________ microseconds     ___
  5025.  
  5026. F000001        _________ microseconds     ___
  5027.  
  5028. F000002        _________ microseconds     ___
  5029.  
  5030. G000001        _________ microseconds     ___
  5031.  
  5032. G000002        _________ microseconds     ___
  5033.  
  5034. G000003        _________ microseconds     ___
  5035.  
  5036. G000004        _________ microseconds     ___
  5037.  
  5038. G000005        _________ microseconds     ___
  5039.  
  5040. G000006        _________ microseconds     ___
  5041.  
  5042. G000007        _________ microseconds     ___
  5043.  
  5044. L000001        _________ microseconds     ___
  5045.  
  5046. L000002        _________ microseconds     ___
  5047.  
  5048. L000003        _________ microseconds     ___
  5049.  
  5050. P000001        _________ microseconds     ___
  5051.  
  5052. P000002        _________ microseconds     ___
  5053.  
  5054. P000003        _________ microseconds     ___
  5055.  
  5056. P000004        _________ microseconds     ___
  5057.  
  5058. P000005        _________ microseconds     ___
  5059.  
  5060. P000006        _________ microseconds     ___
  5061.  
  5062. P000007        _________ microseconds     ___
  5063.  
  5064. P000010        _________ microseconds     ___
  5065.  
  5066. P000011        _________ microseconds     ___
  5067.  
  5068. P000012        _________ microseconds     ___
  5069.  
  5070. P000013        _________ microseconds     ___
  5071.  
  5072. T000001        _________ microseconds     ___
  5073.  
  5074. T000002        _________ microseconds     ___
  5075.  
  5076. T000003        _________ microseconds     ___
  5077.  
  5078. T000004        _________ microseconds     ___
  5079.  
  5080. T000005        _________ microseconds     ___
  5081.  
  5082. T000006        _________ microseconds     ___
  5083.  
  5084. T000007        _________ microseconds     ___
  5085.  
  5086. Z000000  CPU TIME  ______________________       ( Historic comparison )
  5087.  
  5088.          WALL TIME ______________________
  5089.  
  5090. Other "Z" Tests   ( Printout is the only practical way )
  5091. ::::::::::
  5092. WCOMPILE.COM
  5093. ::::::::::
  5094. $! 1750A files to compile ( makes 2 down load images )
  5095. $ SET VERIFY
  5096. $ SET NOON
  5097. $ SET DEF [.SIGADA.TAPE_8_31_86.WADALIB]
  5098. $ WADA [-]A000001
  5099. $ WADA [-]A000011
  5100. $ WADA [-]A000021
  5101. $ WADA [-]A000022
  5102. $ WADA [-]A000031
  5103. $ WADA [-]A000032
  5104. $ WADA [-]A000041
  5105. $ WADA [-]A000042
  5106. $ WADA [-]A000091
  5107. $ WADA [-]A000093
  5108. $ WADA/BIG [-]A000094
  5109. $ WADA [-]C000001
  5110. $ WADA [-]C000002
  5111. $ WADA [-]C000003
  5112. $ WADA [-]D000001
  5113. $ WADA [-]D000002
  5114. $ WADA [-]D000003
  5115. $ WADA [-]D000004
  5116. $ WADA [-]E000001
  5117. $ WADA [-]E000002
  5118. $ WADA [-]E000004
  5119. $ WADA [-]F000001
  5120. $ WADA [-]F000002
  5121. $ WADA [-]G000001
  5122. $ WADA [-]G000002
  5123. $ WADA [-]G000003
  5124. $ WADA [-]G000004
  5125. $ WADA [-]G000005
  5126. $ WADA [-]G000006
  5127. $ WADA [-]G000007
  5128. $ WADA [-]L000001
  5129. $ WADA [-]L000002
  5130. $ WADA [-]L000003
  5131. $ WADA [-]P000001
  5132. $ WADA [-]P000002
  5133. $ WADA [-]P000003
  5134. $ WADA [-]P000004
  5135. $ WADA [-]P000005
  5136. $ WADA [-]P000006
  5137. $ WADA [-]P000007
  5138. $ WADA [-]P000010
  5139. $ WADA [-]P000011
  5140. $ WADA [-]P000012
  5141. $ WADA [-]P000013
  5142. $ WADA [-]T000001
  5143. $ WADA [-]T000002
  5144. $ WADA [-]T000003
  5145. $ WADA [-]T000004
  5146. $ WADA [-]T000005
  5147. $ WADA [-]T000006
  5148. $ WADA [-]T000007
  5149. $ WADA/BIG [-]A000104
  5150. $ WLINKADA/MAP=A000104/SYM/EXE=A000104/SYS=CAS$LIB:ADARTPSBC-
  5151.           /LOAD=16#1000# A000104
  5152. $ TOSBC50
  5153. A000104
  5154. $ WADA [-]A000105
  5155. $ WLINKADA/MAP=A000105/SYM/EXE=A000105/SYS=CAS$LIB:ADARTPSBC-
  5156.           /LOAD=16#1000# A000105
  5157. $ TOSBC50
  5158. A000105
  5159. $ WADA [-]A000106
  5160. $ WLINKADA/MAP=A000106/SYM/EXE=A000106/SYS=CAS$LIB:ADARTPSBC-
  5161.           /LOAD=16#1000# A000106
  5162. $ TOSBC50
  5163. A000106
  5164. $ WADA [-]A000107
  5165. $ WLINKADA/MAP=A000107/SYM/EXE=A000107/SYS=CAS$LIB:ADARTPSBC-
  5166.           /LOAD=16#1000# A000107
  5167. $ TOSBC50
  5168. A000107
  5169. $ ! link the tasking tests individually to check for different timing
  5170. $ WLINKADA/MAP=T000001/SYM/EXE=T000001/SYS=CAS$LIB:ADARTPSBC-
  5171.           /LOAD=16#1000# T000001
  5172. $ TOSBC50
  5173. T000001
  5174. $ WLINKADA/MAP=T000002/SYM/EXE=T000002/SYS=CAS$LIB:ADARTPSBC-
  5175.           /LOAD=16#1000# T000002
  5176. $ TOSBC50
  5177. T000002
  5178. $ WLINKADA/MAP=T000003/SYM/EXE=T000003/SYS=CAS$LIB:ADARTPSBC-
  5179.           /LOAD=16#1000# T000003
  5180. $ TOSBC50
  5181. T000003
  5182. $ WLINKADA/MAP=T000004/SYM/EXE=T000004/SYS=CAS$LIB:ADARTPSBC-
  5183.           /LOAD=16#1000# T000004
  5184. $ TOSBC50
  5185. T000004
  5186. $ WLINKADA/MAP=T000005/SYM/EXE=T000005/SYS=CAS$LIB:ADARTPSBC-
  5187.           /LOAD=16#1000# T000005
  5188. $ TOSBC50
  5189. T000005
  5190. $ WLINKADA/MAP=T000006/SYM/EXE=T000006/SYS=CAS$LIB:ADARTPSBC-
  5191.           /LOAD=16#1000# T000006
  5192. $ TOSBC50
  5193. T000006
  5194. $ WLINKADA/MAP=T000007/SYM/EXE=T000007/SYS=CAS$LIB:ADARTPSBC-
  5195.           /LOAD=16#1000# T000007
  5196. $ TOSBC50
  5197. T000007
  5198.