home *** CD-ROM | disk | FTP | other *** search
-
- -- PERFORMANCE MEASUREMENT : procedure call and return time
- -- procedure in package
- -- twenty discrete "in" parameters
-
- package PROC_PACKAGE_11 is
- procedure PROC_0 ( A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
- A11,A12,A13,A14,A15,A16,A17,A18,A19,A20 : in INTEGER ) ;
- end PROC_PACKAGE_11 ;
-
- with PROC_PACKAGE_11 ; use PROC_PACKAGE_11 ;
- with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
- with ITERATION ; -- obtain stable measurement
- with PIWG_IO ; -- output results
-
- procedure P000011 is -- main procedure to execute
- CPU_TIME : DURATION ; -- CPU time for one feature execution
- WALL_TIME : DURATION ; -- WALL time for one feature execution
- CHECK_TIMES : constant := 100 ; -- inside loop count and check
- ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
- STABLE : BOOLEAN ; -- true when measurement stable
- A1 : INTEGER := A_ONE ;
- A2 : INTEGER := A1 + A_ONE ;
- A3 : INTEGER := A2 + A_ONE ;
- A4 : INTEGER := A3 + A_ONE ;
- A5 : INTEGER := A4 + A_ONE ;
- A6 : INTEGER := A5 + A_ONE ;
- A7 : INTEGER := A6 + A_ONE ;
- A8 : INTEGER := A7 + A_ONE ;
- A9 : INTEGER := A8 + A_ONE ;
- A10 : INTEGER := A9 + A_ONE ;
- A11 : INTEGER := A10 + A_ONE ;
- A12 : INTEGER := A11 + A_ONE ;
- A13 : INTEGER := A12 + A_ONE ;
- A14 : INTEGER := A13 + A_ONE ;
- A15 : INTEGER := A14 + A_ONE ;
- A16 : INTEGER := A15 + A_ONE ;
- A17 : INTEGER := A16 + A_ONE ;
- A18 : INTEGER := A17 + A_ONE ;
- A19 : INTEGER := A18 + A_ONE ;
- A20 : INTEGER := A19 + A_ONE ;
-
- begin
-
- ITERATION.START_CONTROL ; -- dummy to bring in pages on some machines
-
- delay 0.5 ; -- wait for stable enviornment on some machines
-
- ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
-
- loop -- until stable measurement, ITERATION_COUNT increases each time
-
- --
- -- Control loop
- --
- ITERATION.START_CONTROL ;
- for J in 1 .. ITERATION_COUNT loop
- GLOBAL := 0 ;
- for INSIDE_LOOP in 1 .. CHECK_TIMES loop
- GLOBAL := GLOBAL + A1+A2+A3+A4+A5+A6+A7-A8-A9-A10
- +A20-A19-A18+A17+A16-A15-A14+A13-A12+A11+A_ONE ;
- REMOTE ;
- end loop ;
- end loop ;
- ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
-
- --
- -- Test loop
- --
- ITERATION.START_TEST ;
- for J in 1 .. ITERATION_COUNT loop
- GLOBAL := 0 ;
- for INSIDE_LOOP in 1 .. CHECK_TIMES loop
- PROC_0 ( A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
- A11,A12,A13,A14,A15,A16,A17,A18,A19,A20 ) ;
- -- this has control global increment and call inside
- end loop ;
- end loop ;
- ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
- ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
- exit when STABLE ;
- end loop ;
- --
- ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
-
- --
- -- Printout
- --
- PIWG_IO.PIWG_OUTPUT ( "P000011" , "Procedure" ,
- CPU_TIME , WALL_TIME , ITERATION_COUNT ,
- " Procedure call and return time measurement" ,
- " Compare to P000005, P000010 " ,
- " 20 parameters, in INTEGER " ) ;
-
- end P000011 ;
-
-
- with REMOTE_GLOBAL ; use REMOTE_GLOBAL ;
- package body PROC_PACKAGE_11 is -- compare to P000005 & 10
- procedure PROC_0 ( A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
- A11,A12,A13,A14,A15,A16,A17,A18,A19,A20 : in INTEGER ) is
- begin
- GLOBAL := GLOBAL + A1+A2+A3+A4+A5+A6+A7-A8-A9-A10
- +A20-A19-A18+A17+A16-A15-A14+A13-A12+A11+A_ONE ;
- REMOTE ;
- end ;
- end PROC_PACKAGE_11 ;
-
-