home *** CD-ROM | disk | FTP | other *** search
/ Programmer's ROM - The Computer Language Library / programmersrom.iso / ada / piwg / g000007.ada < prev    next >
Encoding:
Text File  |  1988-05-03  |  2.2 KB  |  76 lines

  1.  
  2. -- PERFORMANCE MEASUREMENT : opening files
  3.  
  4. with TEXT_IO ; use TEXT_IO ;
  5. with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
  6. with ITERATION ; -- obtain stable measurement
  7. with PIWG_IO ; -- output results
  8.  
  9. procedure G000007 is  -- main procedure to execute
  10.   CPU_TIME : DURATION ; -- CPU time for one feature execution
  11.   WALL_TIME : DURATION ; -- WALL time for one feature execution
  12.   CHECK_TIMES : constant := 100 ; -- inside loop count and check
  13.   ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
  14.   STABLE : BOOLEAN ; -- true when measurement stable
  15.   SCRATCH : FILE_TYPE ;
  16.  
  17. begin
  18.  
  19.    CREATE ( SCRATCH , OUT_FILE , "SCRATCH7" );
  20.    PUT_LINE ( SCRATCH , " just stuff " ) ;
  21.    CLOSE ( SCRATCH ) ;
  22.  
  23.   ITERATION.START_CONTROL ;  -- dummy to bring in pages on some machines
  24.  
  25.   delay 0.5 ;  -- wait for stable enviornment on some machines
  26.  
  27.   ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
  28.  
  29.   loop  -- until stable measurement, ITERATION_COUNT increases each time
  30.  
  31. --
  32. -- Control loop
  33. --
  34.     ITERATION.START_CONTROL ;
  35.     for J in 1 .. ITERATION_COUNT loop
  36.       GLOBAL := 0 ;
  37.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  38.         GLOBAL := GLOBAL + A_ONE ; 
  39.         REMOTE ;                   
  40.       end loop ;
  41.     end loop ;
  42.     ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
  43.  
  44. --
  45. -- Test loop
  46. --
  47. -- establish the time to open a file
  48.  
  49.     ITERATION.START_TEST ;
  50.     for J in 1 .. ITERATION_COUNT loop
  51.       GLOBAL := 0 ;
  52.       for INSIDE_LOOP in 1 .. CHECK_TIMES loop
  53.         GLOBAL := GLOBAL + A_ONE ;
  54.         REMOTE ;
  55.         OPEN ( SCRATCH , IN_FILE , "SCRATCH7" ) ;
  56.         CLOSE ( SCRATCH ) ;
  57.       end loop ;
  58.     end loop ;
  59.     ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
  60.     ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
  61.     exit when STABLE ;
  62.   end loop ;
  63. --
  64.   ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
  65.  
  66. --
  67. -- Printout
  68. --
  69.   PIWG_IO.PIWG_OUTPUT ( "G000007" , "Input/Output" ,
  70.                         CPU_TIME , WALL_TIME , ITERATION_COUNT ,
  71.      " Open and close an existing file, time measurement" ,
  72.      " A scratch file is created and closed " ,
  73.      " The scratch file is opened IN_FILE and closed in a loop" ) ;
  74.  
  75. end G000007 ;
  76.