home *** CD-ROM | disk | FTP | other *** search
/ Programmer's ROM - The Computer Language Library / programmersrom.iso / ada / test / jpmobnch.doc < prev    next >
Encoding:
Text File  |  1988-05-03  |  20.0 KB  |  406 lines

  1.  
  2. From:    MAILER         22-FEB-1985 13:13  
  3. To:    WIS
  4. Subj:    [Netmail From: court@mitre] BACKGROUND AND DATA ON LEVEL 6 ADA TESTS
  5.  
  6. Mail-From: ARPAnet host MITRE rcvd at Fri Feb 22 13:13-PST
  7. Date: 22 Feb 1985 15:47:17 EST (Friday)
  8. From: Terry Courtwright <court@mitre>
  9. Subject: BACKGROUND AND DATA ON LEVEL 6 ADA TESTS
  10. To: wis at nosc-tecr
  11.  
  12.  
  13. ----BEGINNING OF FORWARDED MESSAGES----
  14. Date: 19 Feb 1985 11:48 PST
  15. From: WWHITAKER@USC-ECLB.ARPA
  16. Subject: BACKGROUND AND DATA ON LEVEL 6 ADA TESTS
  17. To:   ALEXANDER@MITRE, COURT@MITRE
  18.  
  19.  
  20. There are a series of very simple benchmarks called COMPA, COMPB, ... which
  21. are used to test the validity of various assumptions that one might make 
  22. about the behavior of a compiler.  Probably all the implicit assumptions
  23. are valid, these tests just check that something has not been overlooked
  24. that could severely distort detailed quantitative tests.  There should
  25. be no significance given to the numerical results of these tests,
  26. they just provide a framework for other tests.  There is not even a pressing
  27. reason to make sure of the status (or emptiness) of the machine on which
  28. they are run, since the desired comparison is one to another, not to
  29. some absolute.
  30.  
  31.  
  32. COMPA contains the minimal procedure framework surrounding 500 separate
  33.       Ada declaration statements, each on a separate physical line,
  34.       yielding 503 statements and 505 lines.
  35.  
  36. COMPB also has the 500 variables declared, but in one long Ada statement
  37.       spread over 50 physical lines, for a total of 3 statements and 55 lines.
  38.  
  39. COMPC has the minimal framework with 500 executable assignment statements,
  40.       5 per line, yielding 503 statements and 106 lines.
  41.  
  42. COMPD also has the 500 assignment statements, but they are placed 1 per line,
  43.       yielding 503 statements and 506 lines.
  44.  
  45. COMPE is like COMPD, but interjects a comment line for every assignment,
  46.       yielding 503 statements and 1006 lines.
  47.  
  48. COMPF has the same lines as COMPE, but all the comments are bunched together,
  49.       it also has 503 statements and 1006 lines.
  50.  
  51. COMPG has the structure of COMPE, but is twice as long to test linearity,
  52.       it has 1003 statements and 2006 lines.
  53.  
  54. COMPK is a single package containing 25 very small, but unique, packages.
  55.  
  56. COMPK1-COMPK25 are the same packages as are contained in COMPK, but as separate
  57.       packages.
  58.  
  59. COMPL "with"s the COMPK package, and exercises a function from each of the
  60.       included 25 packages.
  61.  
  62. COMPM "with"s the 25 separate COMPKn packages and exercises a function from
  63.       each, testing, by comparison to COMPL, the cost of "with"ing packages.
  64.  
  65. COMPN is a null procedure, with neither declaration nor executable statement,
  66.       yielding 2 statements and 4 lines.
  67.  
  68. COMPT is like COMPZ, a minimal program, but "with" and "use" TEXT_IO,
  69.       yielding 5 statements and 6 lines.
  70.  
  71. COMPZ is a nominal minimal program with 1 declaration and 1 assignment,
  72.       yielding 3 statements and 5 lines.
  73.  
  74.  
  75. A typical set of runs might yield the following information:
  76.  
  77. On a lightly loaded VAX 11/780 running Telesoft 1.3d compiler -
  78.  
  79.   COMPN took a minimum of 13 clock seconds.  This is presumably the time to 
  80.   load in the compiler off disk and perform a minimal job.  Other compiles
  81.   might be compared by subtracting this minimum, or the value that is obtained
  82.   for the loading at the time of run.  With as many as 6 users on the machine
  83.   occasionally the time would go to 25 seconds, but that much variation
  84.   would be extreme.
  85.  
  86.   COMPZ had the same minimum of 13 seconds, but longer times seemed to be
  87.   more common.  There may be an effect of doing that small aditional work.
  88.  
  89.   COMPT had the additional burden of "withing" TEXT_IO and took an additional
  90.   5 seconds for 18 total.
  91.  
  92.   COMPB regularly took 25 seconds under the load that was yielding mostly 13
  93.   seconds for COMPN.  
  94.  
  95.   COMPA took 47 seconds under the same conditions.  This means that the 
  96.   breaking up of the 500 declarations into separate statements had a effect,
  97.   but it was not proportional to the number of statements.  Nor was it even
  98.   proportional to the number of lines.  This may be interpreted to indicate
  99.   that the exact formatting of declarations, while it may produce a
  100.   measureable difference in extreme cases, should not be significant for
  101.   the small differences that could be found between semantically identical
  102.   programs written by people with somewhat different style, or machine
  103.   formatted differently.
  104.  
  105.   COMPD, with 506 lines, compiled somewhat slower (53 seconds) than COMPC,
  106.   which is compressed to 106 lines but otherwise identical.  Again this 
  107.   shows that extreme variations in format introduce much smaller
  108.   variations in compile time, for this compiler.  Benchmark results
  109.   should certainly not be significant to the 10% level, and within
  110.   such limits the number of Ada statements should be the appropriate
  111.   measure of compiler performance, rather than "lines", and that measure
  112.   should be essentially independent of normal variations in formatting,
  113.   for this compiler.
  114.  
  115.   COMPE introduced 500 lines of comments, doubling the "lines", into COMPD.
  116.   The time to compile was 64 seconds.  If one took the 13 seconds for a
  117.   minimal program off, the relative times of the 500 statement program,
  118.   without and with the 500 comment lines, are 40 and 51 seconds, indicating
  119.   the relative time to process comments compared to the simplest statement.
  120.  
  121.   COMPF compiled in 63 seconds, within measurement error of COMPE.
  122.   The grouping of comments had no effect.
  123.  
  124.   COMPG was double COMPE and, after subtracting the minimal 13
  125.   seconds, its time of 115 seconds was exactly double (51 to 102), so
  126.   the expectation of linearity holds in this case.  This was also a fairly
  127.   large Ada program as measured in "line of code" (which we would not do),
  128.   but the lines are very simple and short (half are short comments).  It could
  129.   be used to compute an absolute maximum on the compile speed in lines per
  130.   minute.  There is no way to avoid someone doing this, but the number has no
  131.   meaning in an absolute sense for comparing to real programs.  Whether it is
  132.   of use  in relative comparisions is problematic.
  133.  
  134. ACKER and SIEVE are very common elementary benchmarks which may have been
  135. run in every possible language and on every machine in existance.  They 
  136. are included to provide a very rough measure of the quality of code 
  137. generated by the compilers.  While the purpose of the COMP benchmarks is 
  138. to measure compile-time properties, these simple measures of code 
  139. performance may provide some indication of how much effort goes into the
  140. code generation.  For the purposes of comparing with other languages,
  141. all Ada exceptions have been suppressed with pragma SUPPRESS.  This is
  142. only advisory to the compiler and may or may not speed up the code.
  143. Runs are with as bare a machine as possible.
  144.  
  145.   ACKER computes the ACKERMANN function for (3, 6).
  146.   
  147.   SIEVE is the BYTE benchmark, ten iterations of calculating the prime
  148.   numbers up to 16384 by the method of Eratosthes.
  149.  
  150.   IMP is a program that contains the timing runs for ACKER and SIEVE
  151.   in addition to printing various information about the system.  It
  152.   continually changes as it evolves and as the systems differ (does
  153.   it have LONG_FLOAT?) so it is not a regular benchmark.  But for some
  154.   systems the compile "lines per minute" is recorded to compare with 
  155.   the COMPG values.  IMP is a simple, but by no means typical, program,
  156.   and there is no claim that it represents a good test.
  157.   
  158.  
  159. The tests were also run on an INTELLIMAC 7000M using TeleSoft 1.3d.
  160. The 7000M is a 12.5 MHz (1.5 MIPS!) 68K with a  330  Meg  Fujitsu
  161. SMD  disk  and  a 25Meg fixed/25 Meg removable Amcodyne cartridge
  162. disk. We have 1 Meg of RAM w/ ECC, 8 RS232  ports  and  a  serial
  163. printer  port.   The  Unix  is a Unisoft port of Version 7 to the
  164. 68K. It includes some "Berkley Extensions" (e.g. Vi and Termcap).
  165.  
  166. A short series of tests were run on the IBM 3083 E1 at Billerica under the
  167. Telesoft 1.3d and the CMS operating system.  This gathered no further
  168. information on the compiler, but showed some things about the operating
  169. system and provided an example on a mainframe.
  170.  
  171. The Labtek WICAT is a 68000 (8MHz) based desk-top computer running Telesoft
  172. 1.3d and the Telesoft ROS operating system.  It represents a fairly good
  173. stand-alone capability as far as compile speed is concerned and therefore
  174. is a measure of how a convenient compiler system should appear to the user.
  175. It is, of course, not validated and is therefore not acceptable itself.
  176.  
  177. The tests on the Honeywell Level-6 gathered data on both the clock
  178. time and the CPU time.  In a couple of cases link time was also noted since
  179. these programs must be explicitly linked before execution.  For the Honeywell
  180. equipment "best" times were given when available.  Compilation in a domain
  181. that has some previous runs can reduce the time somewhat by having
  182. available some previously instantiated units, or specs.  After about 50
  183. library files have been created, the search of the library takes longer
  184. and the compiler can slow down by a factor of 2.  The compilation of IMP,
  185. the implementation test program, took 602 (367 CPU) seconds on the 95 at the
  186. end of the day, and only 280 (178) seconds in an empty domain.  COMPB did
  187. not compile, perhaps because of the large number of declarations (COMPA
  188. which also has 500 declarations took an anomolously long time to compile).
  189. While the machines had up to 4MB of memory, they can only address 1MB
  190. at a time, so the extra memory helps only for multiple jobs.
  191. Some of the 75 runs were made with VIDEO turned off.  This status display
  192. absorbed as much as 15-20% of the CPU in this machine.  For the 75 the
  193. compiles were very high CP users, on the faster 95 the CP utilization
  194. was significantly less at the end of the tests when the domain library
  195. was large, as shown by the extraordinary run of 25 packages (spec and body)
  196. in a single compilation file (COMPK1-25).  For COMPL and COMPM the link
  197. times are also shown.  In some Ada systems most of the linking is done
  198. with the compile run and is counted in that time (like Telesoft 1.3).
  199. In others, linking is a separate program to be run before executation.
  200. When this time is significant, it should be added to the compile times
  201. for comparison of these benchmarks.  Most Ada programs are composed of a
  202. number of packages and one main program; there is only one link necessary,
  203. not one per package.
  204.  
  205.  
  206.  
  207. -----------------------------------------------------------------------
  208.       TELESOFT TELESOFT TELESOFT TELESOFTHONEYWELL HONEYWELL HONEYWELL HONEYWELL
  209.          1.3d     1.3d     1.3d     1.3d     DDC       DDC       DDC       DDC
  210.           VAX  INTELLIMAC   IBM    LABTEK  L-6/95+    L-6/75   L-6/45    L-6/45
  211.         11/780    7000M   3083E1   WICAT     4MB       2MB       2MB     1.25MB
  212.  TEST    VMS     UNIX      CMS      ROS   CP CLOCK  CP CLOCK  CP CLOCK  CP CLOCK
  213. -------------------------------------------------------------------------
  214. These are null tests of starting the compiler.  The COMPN time
  215. has been subtracted from the test time of all others reported.
  216.  COMPN      13      26      .8      11     8   26    20   46   36   71   72  310
  217.  COMPZ      13      26      .8      11     8   26    25   63
  218. -------------------------------------------------------------------------
  219.  COMPA      34      43     3.3      35    67   83   182  218  361  466
  220.  COMPB      12      22     1.6      18    --   --
  221.  COMPC      31      39     7.0      39    35   45    87  102  160  193  210  721
  222.  COMPD      40      40     7.1      41    41   51   100  119
  223.  COMPE      51      46     7.6      43    46   59   117  119
  224.  COMPF                     7.6      43              118  139
  225.  COMPG     102      92    15.3      86    94  125   232  273
  226.  max lpm  1180    1308  7867      1400        963        441
  227.  COMPK                              14    30   79
  228.  COMPK1-25                               511 2482
  229.  COMPL                     1.0       4    17  145
  230.  Link                                     11   30
  231.  COMPM                     4.3            24  165
  232.  Link                                     36   80
  233.  COMPN     (13)    (26)    (.8)     (11)  (8) (26)  (20)  (46)
  234.  COMPT       5       5     1.0        6    2    9     7    19
  235.  COMPZ     (13)    (26)    (.8)     (11)  (8) (26)  (25)  (63)
  236. -------------------------------------------------------------------------
  237. Lines per minute
  238. IMP                                           122
  239.  
  240.  
  241.                           Run Times
  242.  
  243. ACKER                                           2.7         8.3
  244. SIEVE                                           2.8         7.7
  245.  
  246. -------
  247.  
  248. ----END OF FORWARDED MESSAGES----
  249.  
  250.  
  251. From:    MAILER         27-FEB-1985 05:28  
  252. To:    WIS
  253. Subj:    [Netmail From: court@mitre] LEVEL 6  REPORT
  254.  
  255. Mail-From: ARPAnet host MITRE rcvd at Wed Feb 27 05:28-PST
  256. Date: 27 Feb 1985  8:00:22 EST (Wednesday)
  257. From: Terry Courtwright <court@mitre>
  258. Subject: LEVEL 6  REPORT
  259. To: wis at nosc-tecr
  260.  
  261.  
  262. ----BEGINNING OF FORWARDED MESSAGES----
  263. Date: 25 Feb 1985 07:37 PST
  264. From: WWHITAKER@USC-ECLB.ARPA
  265. Subject: LEVEL 6  REPORT
  266. To:   COURT@MITRE
  267.  
  268.  
  269. There are a series of very simple benchmarks called COMPA, COMPB, ... which
  270. are used to test the validity of various assumptions that one might make 
  271. about the behavior of a compiler.  Probably all the implicit assumptions
  272. are valid, these tests just check that something has not been overlooked
  273. that could severely distort detailed quantitative tests.  There should
  274. be no significance given to the numerical results of these tests,
  275. they just provide a framework for other tests.  There is not even a pressing
  276. reason to make sure of the status (or emptiness) of the machine on which
  277. they are run, since the desired comparison is one to another, not to
  278. some absolute.
  279.  
  280.  
  281. COMPA contains the minimal procedure framework surrounding 500 separate
  282.       Ada declaration statements, each on a separate physical line,
  283.       yielding 503 statements and 505 lines.
  284.  
  285. COMPB also has the 500 variables declared, but in one long Ada statement
  286.       spread over 50 physical lines, for a total of 3 statements and 55 lines.
  287.  
  288. COMPC has the minimal framework with 500 executable assignment statements,
  289.       5 per line, yielding 503 statements and 106 lines.
  290.  
  291. COMPD also has the 500 assignment statements, but they are placed 1 per line,
  292.       yielding 503 statements and 506 lines.
  293.  
  294. COMPE is like COMPD, but interjects a comment line for every assignment,
  295.       yielding 503 statements and 1006 lines.
  296.  
  297. COMPF has the same lines as COMPE, but all the comments are bunched together,
  298.       it also has 503 statements and 1006 lines.
  299.  
  300. COMPG has the structure of COMPE, but is twice as long to test linearity,
  301.       it has 1003 statements and 2006 lines.
  302.  
  303. COMPK is a single package containing 25 very small, but unique, packages.
  304.  
  305. COMPK1-COMPK25 are the same packages as are contained in COMPK, but as separate
  306.       packages.
  307.  
  308. COMPL "with"s the COMPK package, and exercises a function from each of the
  309.       included 25 packages.
  310.  
  311. COMPM "with"s the 25 separate COMPKn packages and exercises a function from
  312.       each, testing, by comparison to COMPL, the cost of "with"ing packages.
  313.  
  314. COMPN is a null procedure, with neither declaration nor executable statement,
  315.       yielding 2 statements and 4 lines.
  316.  
  317. COMPT is like COMPZ, a minimal program, but "with" and "use" TEXT_IO,
  318.       yielding 5 statements and 6 lines.
  319.  
  320. COMPZ is a nominal minimal program with 1 declaration and 1 assignment,
  321.       yielding 3 statements and 5 lines.
  322.  
  323.  
  324. A typical set of runs might yield the following information:
  325.  
  326. On a lightly loaded VAX 11/780 running Telesoft 1.3d compiler -
  327.  
  328.   COMPN took a minimum of 13 clock seconds.  This is presumably the time to 
  329.   load in the compiler off disk and perform a minimal job.  Other compiles
  330.   might be compared by subtracting this minimum, or the value that is obtained
  331.   for the loading at the time of run.  With as many as 6 users on the machine
  332.   occasionally the time would go to 25 seconds, but that much variation
  333.   would be extreme.
  334.  
  335.   COMPZ had the same minimum of 13 seconds, but longer times seemed to be
  336.   more common.  There may be an effect of doing that small aditional work.
  337.  
  338.   COMPT had the additional burden of "withing" TEXT_IO and took an additional
  339.   5 seconds for 18 total.
  340.  
  341.   COMPB regularly took 25 seconds under the load that was yielding mostly 13
  342.   seconds for COMPN.  
  343.  
  344.   COMPA took 47 seconds under the same conditions.  This means that the 
  345.   breaking up of the 500 declarations into separate statements had a effect,
  346.   but it was not proportional to the number of statements.  Nor was it even
  347.   proportional to the number of lines.  This may be interpreted to indicate
  348.   that the exact formatting of declarations, while it may produce a
  349.   measureable difference in extreme cases, should not be significant for
  350.   the small differences that could be found between semantically identical
  351.   programs written by people with somewhat different style, or machine
  352.   formatted differently.
  353.  
  354.   COMPD, with 506 lines, compiled somewhat slower (53 seconds) than COMPC,
  355.   which is compressed to 106 lines but otherwise identical.  Again this 
  356.   shows that extreme variations in format introduce much smaller
  357.   variations in compile time, for this compiler.  Benchmark results
  358.   should certainly not be significant to the 10% level, and within
  359.   such limits the number of Ada statements should be the appropriate
  360.   measure of compiler performance, rather than "lines", and that measure
  361.   should be essentially independent of normal variations in formatting,
  362.   for this compiler.
  363.  
  364.   COMPE introduced 500 lines of comments, doubling the "lines", into COMPD.
  365.   The time to compile was 64 seconds.  If one took the 13 seconds for a
  366.   minimal program off, the relative times of the 500 statement program,
  367.   without and with the 500 comment lines, are 40 and 51 seconds, indicating
  368.   the relative time to process comments compared to the simplest statement.
  369.  
  370.   COMPF compiled in 63 seconds, within measurement error of COMPE.
  371.   The grouping of comments had no effect.
  372.  
  373.   COMPG was double COMPE and, after subtracting the minimal 13
  374.   seconds, its time of 115 seconds was exactly double (51 to 102), so
  375.   the expectation of linearity holds in this case.  This was also a fairly
  376.   large Ada program as measured in "line of code" (which we would not do),
  377.   but the lines are very simple and short (half are short comments).  It could
  378.   be used to compute an absolute maximum on the compile speed in lines per
  379.   minute.  There is no way to avoid someone doing this, but the number has no
  380.   meaning in an absolute sense for comparing to real programs.  Whether it is
  381.   of use  in relative comparisions is problematic.
  382.  
  383. ACKER and SIEVE are very common elementary benchmarks which may have been
  384. run in every possible language and on every machine in existance.  They 
  385. are included to provide a very rough measure of the quality of code 
  386. generated by the compilers.  While the purpose of the COMP benchmarks is 
  387. to measure compile-time properties, these simple measures of code 
  388. performance may provide some indication of how much effort goes into the
  389. code generation.  For the purposes of comparing with other languages,
  390. all Ada exceptions have been suppressed with pragma SUPPRESS.  This is
  391. only advisory to the compiler and may or may not speed up the code.
  392. Runs are with as bare a machine as possible.
  393.  
  394.   ACKER computes the ACKERMANN function for (3, 6).
  395.   
  396.   SIEVE is the BYTE benchmark, ten iterations of calculating the prime
  397.   numbers up to 16384 by the method of Eratosthes.
  398.  
  399.   IMP is a program that contains the timing runs for ACKER and SIEVE
  400.   in addition to printing various information about the system.  It
  401.   continually changes as it evolves and as the systems differ (does
  402.   it have LONG_FLOAT?) so it is not a regular benchmark.  But for some
  403.   systems the compile "lines per minute" is recorded to compare with 
  404.   the COMPG values.  IMP is a simple, but by no means typical, program,
  405.   and there is no claim that it represents a good test.
  406.