home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #16 / NN_1992_16.iso / spool / bit / listserv / sasl / 3391 < prev    next >
Encoding:
Text File  |  1992-07-22  |  23.3 KB  |  614 lines

  1. Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
  2. Path: sparky!uunet!paladin.american.edu!auvm!UNC.BITNET!UNCSM1
  3. Message-ID: <SAS-L%92072211214815@VTVM2.BITNET>
  4. Newsgroups: bit.listserv.sas-l
  5. Date:         Wed, 22 Jul 1992 11:20:00 EST
  6. Reply-To:     Sally Muller <UNCSM1@UNC.BITNET>
  7. Sender:       "SAS(r) Discussion" <SAS-L@UGA.BITNET>
  8. From:         Sally Muller <UNCSM1@UNC.BITNET>
  9. Subject: Re: SAS Benchmarking Programs
  10. Comments: To: "R. Snyder" <rsnyder@lobby.ti.com>
  11. Lines: 601
  12.  
  13. ----------------------------------------------------------------------
  14. SUMMARY:  The ultimate benchmarking program?
  15. E-ADDR:   uncsm1@unc.bitnet
  16. NAME:     Sally Muller
  17. PH/ADDR:  919-962-6501  OIT CB#3455, UNC, Chapel Hill NC 27514
  18. ----------------------------------------------------------------------
  19. Bob Snyder who heard our local SAS users group was running
  20. benchmarks asked:
  21.  
  22. > <stuff deleted>
  23. > Here at Texas Instruments in Sherman, TX we are beginning to
  24. > run SAS on a number of different platforms (HP9000/300 and
  25. > HP9000/700 class machines). We are becomming quite interrested
  26. > in comparing performance statistics between the machines and
  27. > under different circumstances. I was wondering if there are any
  28. > "standard" benchmarking programs in SAS that we might be able
  29. > to obtain?
  30. >
  31. > Bob Snyder
  32. > Texas Instruments, Inc.
  33. > PO Box 84, M/S 860
  34. > Sherman, TX 75090
  35.  
  36.  search of the SAS-L archives uncovered lots of valuable
  37. tuff but we have never really agreed upon a STANDARD SAS
  38. enchmarking program!?!  Attached below are the programs I found
  39. osted on SAS-L, I probably missed some -- please let me know,
  40. nd also the machines on which they were run......WHICH one????
  41. If this sounds like another survey......you're absolutely right.
  42.  
  43. ======================================================================== 44
  44.                   PC SAS 6.02 TESTBASE Benchmark
  45. From:    "Nelson R. Pardee" <SASMAINT@SUVM>
  46. Nelson's (and Gary Katsanis) 1988 SUGI paper, "How Fast is the
  47. SAS system for Personal Computers on Various PC's," is the
  48. definitive work on benchmarking -- paper doesn't just talk about
  49. PCs but minis and mainframes.  Nelson and Gary used the PC SAS
  50. 6.02 TESTBASE program as their benchmark. They note that although
  51. TESTBASE was never intended for benchmarking, since it
  52. "excercises many SAS features and PROCs; does alot of I/O; and
  53. the CPU gets a work out" it is a good benchmark program.
  54. Furthermore, "its standardized -- there is no question as to what
  55. it is."  Machines:  Everex, IBM PC/AT, IBM PC/XT, Zenith Z158,
  56. MAC IIX SOFTPC.
  57.  
  58. From:         bob parks <C27901RP@WUVMD>
  59. Bob too advocated TESTBASE 6.02:
  60. I was wondering what was wrong with the TESTBASE 6.02
  61. benchmark.  It certainly was done on a number of machines  and
  62. although I did not look at the point by point description of
  63. the new proposal, it seemed to satisfy most of the requirements.
  64.  
  65. From:         Peter Rikard <SSTSPLR@VCUVM1>
  66.  I ran my test SAS programs (TESTBASE that came
  67.  with SAS 6.02, copies on request) and timed the functions from
  68.  start to end. (SAS 6.04, 386sx 16 mhz, 8 meg memory, using
  69.  ramdisk for work files....) Times given are total elapsed time
  70.  measured by SAS.
  71.  <stuff deleted>
  72.  
  73. Jim Mulherin also used TESTBASE 6.02.
  74. ========================================================================
  75.             Evan G. Cooch and Jean Hardy Benchmark
  76.  
  77. Postings to SAS-L by Paul Marsh, and Evan indicate that Evan and Jean
  78. Hardy developed some kind of benchmark program but I could never find
  79. it!!!!!  Does anyone have it?
  80.  
  81. Marsh said:
  82. 1) I echo the need to include PROC SORT in the benchmark even though
  83. the times generated may not be completely comparable across (or
  84. even within) platforms.
  85. 2) Besides test datasets, DATA steps, and PROC steps, the platform
  86. should request all salient system information from the benchmarker.
  87. For instance, on IBM PCs we need to know more that the size of the
  88. hard disk - we also need to know the interleave factor, amount of
  89. disk cache, etc.  My guess is that what factors to include in this
  90. part of the survey will be harder to establish that the test datasets,
  91. etc.
  92. 3) (sorry, I thought of another thing).  I participated in the Boston
  93. Computer Society review of PC statpaks a few years ago.  THe first
  94. thing we did was, via e-mail, to try to establish what the 'test
  95. script' should be.  That process took several months but was well
  96. worth it.  The only reason that we could even complete that task
  97. was that we agreed that the test script should only address the
  98. very basics.  If an individual wished to augment the script to
  99. address his/her situation, they could do so.
  100.                                                                          91
  101. From:         "Evan G. Cooch" <COOCHE@QUCDN>
  102.  
  103. Further on the recent discussions conderning benchmarking SAS.
  104. Jean Hardy and I have been corresponding, and I have sent him a
  105. "rough draft" of the benchmarking program. To spur additional
  106. comments from SAS-L, here is the basic logic we are considering
  107. at present.
  108.  
  109. First, the data set. A number of individuals have commented that
  110. the data set needs to be sufficiently large to "really test the
  111. system". However, given what we are defining as the minimum
  112. configuration (640K AT-class machine with 10 -> 20 Mb HD), we
  113. couldn't make the data set too large.  The beta-stage data set
  114. has 20,000 records, with three variables per record. This is, in
  115. theory, not too large to be handled by the minimum configuration
  116. noted, but is large enough to test bigger and faster hardware.
  117. There are both string and numeric variables in the data set.
  118.  
  119. The program was (still is) the matter of some debate. In the
  120. beta-form, it involves:
  121.  
  122. 1. I/O -> reading in the data set.
  123.  
  124. 2. PROC SORT -> EVERYBODY has to sort sooner or later, so including a
  125.                 PROC SORT step is, I believe, essential.
  126.  
  127. 3. CPU intensive -> calls to various PROC's were needed to test the
  128.                     number crunching power of SAS. Although there were a few
  129.                     calls for ARIMA, IML, and other 'esoterica', the program
  130.                     uses GLM and REG. Both of these are very commonly used,
  131.                     and should prove sufficient for the purpose (GLM
  132.                     especially).
  133.  
  134. 4. test of SET/MERGE -> two other CPU-intensive operations, also commonly
  135.                         used
  136.  
  137. 5. final I/O -> writing out a derived data set to disk
  138.  
  139. To reiterate from previous postings, this is not a comprehensive
  140. test of all features of SAS. It is not intended to be. It is to
  141. provide the average end-user with a benchmark that "he/she can
  142. relate to".
  143.  
  144. Remaining issues.
  145.  
  146. a) should there be an additional PROC call...something not
  147.    included above, but which will provide important information?
  148.    SASGRAPH?
  149.  
  150. b) should we specifically include a PROC that is in BASE SAS, as
  151.    well as one from SAS STAT, sicne there are users who will have
  152.    only BASE but not STAT? If so, which PROC (I personally lean
  153.    towards FREQ or TABULATE)?
  154.  
  155. C) What should be reported? I envision something like...
  156.  
  157.    HARDWARE: memory
  158.              CPU & clock
  159.              co-processor (y/n)
  160.              size of HD with avg. access time and controller type
  161.              RAM/HD cache (y/n, and size)
  162.              hardware model (Compaq, Everex, IBM 3081, HP 9000...)
  163.  
  164.  
  165.    PERFORMANCE: number of CPU seconds required for each MAJOR step of
  166.                 program (SORT, GLM, MERGE, OUTPUT...), plus total time
  167.                 from invocation of SAS to final output of results.
  168. ========================================================================
  169.               Don MacQueen Benchmark
  170.  
  171. From:         Don MacQueen <macq@MIGUEL.LLNL.GOV>
  172.  
  173. Don created this benchmark program and offered to summarize the
  174. results for SAS-L.  He got a good response......
  175. program:
  176.  
  177. OPTIONS FULLSTATS;
  178. FILENAME DATF '&&TEMP' LRECL=80 BLKSIZE=9040 RECFM=FB DISP=NEW;
  179. DATA _NULL_;
  180. FILE DATF;
  181. DO A='C', 'B', 'A';
  182. DO X=1 TO 1000;
  183. Y=4+3*RANNOR(0);
  184. PUT A X Y;
  185. END;
  186. END;
  187. RUN;
  188.  
  189. DATA T1;
  190. INFILE DATF;
  191. LENGTH A $ 1;
  192. INPUT A X Y;
  193. X2=X*X;
  194. IA=0; IB=0; IC=0;
  195. SELECT(A);
  196. WHEN('A') IA=1;
  197. WHEN('B') IB=1;
  198. WHEN('C') IC=1;
  199. OTHERWISE;
  200. END;
  201. PROC SORT DATA=T1;
  202. BY A;
  203. PROC MEANS; BY A;
  204. VAR X Y;
  205. PROC FREQ;
  206. TABLES A;
  207. PROC REG;
  208. MODEL Y=X;
  209. MODEL Y=IA IB IC X X2 /NOINT;
  210. RUN;
  211.  
  212. From:    Phil Bardsley                               <UPHILB>
  213.  
  214. Don -
  215. I'm doing some other benchmarks on our IBM 3090, so I decided to
  216. add to your list with a comparison of 5.18, 6.06, and 6.07 (beta).
  217. <stuff deleted>
  218.  
  219. From:         Dirk Rober <FDAAA12@BLEKUL11>
  220.  
  221.  I have run the benchmarks on an IBM PS/2 Model 95 -25Mhz under
  222. OS/2 v1.3.  The results are significant better than the old OS/2
  223. results which were run on a 33Mhz 386.
  224.  
  225. From:         Paul Molin <PMOLIN@FRCCUB11>
  226.  
  227. This idea of SAS benchmarks is very interesting for us, since we are
  228. investigating in this moment for a change of our computer. here is
  229. my contribution:
  230. <stuff deleted>
  231. Using the option VIOBUF=512k in order to put the work sas dataset
  232. in memory.
  233.  
  234. Machines:                                                               Reg
  235. ** PC's **
  236. IBM 9377/90 16MB ram
  237. IBM Model 95 25Mhz 12MB RAM                                             4.09
  238.    512K SCSI DISK CACHE,
  239.    1024K HPFS LAZY CACHE
  240.    320MB Disk
  241.    SAS 6.06.03, OS/2 EE v1.3
  242.    Command line
  243.  
  244. IBM Model 95 25Mhz 12MB RAM                                             4.87
  245.    512K SCSI DISK CACHE,
  246.    1024K HPFS LAZY CACHE
  247.    320MB Disk
  248.    SAS 6.06.03, OS/2 EE v1.3
  249.    Presentation Manager
  250.  
  251. Dell 310, 386/387, 16MB RAM 9 32 K RAM CACHE, EMS, 512K DISK CACHE,
  252. 8MB RAMDISK, 80MB Disk SAS 6.03, DOS 3.3
  253. Northgate 386DX/20MHz, 387, 4MB, DOS 4.01, SAS 6.04 80MB SCSI Disk, No
  254. EMS No Cache, No RAMDISK 1.4MB Cache, No RAMDISK Cache, 2 MB RAMDISK
  255. Northgate 386SX/20MHz, 387SX, 40MB IDE Disk, 2MB RAM, SAS6.04, No EMS
  256. No Cache (Average of 2 runs)      With 1.4MB Cache
  257. IBM PS/2 Mod 70, 386/16, 11 60MB 28msec Disk, 1MB cache, 3 MB RAMDISK
  258. AST 386/387 33MHz, 12MB RAM, 6.62 OS/2, HPFS file system, SAS 6.06
  259.  
  260. ** WORKSTATIONS **
  261.  
  262. RS6000, 16MB RAM, AIX, SAS 6.07 (Beta)
  263. SUN4C/65 Sparcstation 1+ Color OS 4.1, 16MB RAM, SAS 6.03, Sunview
  264. Sparcstation SLC, 16MB, SAS 6.03, Sunview Deskset Shelltool
  265. Sparcstation SLC, 16MB, 2 SAS 6.03, Run from command line
  266. Sun Sparcstation IPC, 2 24MB RAM, 667MB Disk, 17ms, SunOS 4.1,
  267. OpenWindows 2.0, SAS 6.03
  268. The above IPC, SAS 6.07 beta
  269.  
  270. ** VAXes **
  271.  
  272. VAX 6510  6.06                                                          1.03
  273. VAX 6420, SAS 6.06
  274. VAX 6460, SAS 6.06
  275.  
  276. ** Mainframes **
  277. IBM 3090 - MVS/ESA - 5.18                                               .15
  278. IBM 3090 - MVS/ESA - 6.06                                               .18
  279. IBM 3090 - MVS/ESA - 6.07(beta)                                         .10
  280.  
  281. HDS AS/EX-80 - MVS/ESA SAS5.18
  282. IBM 3090 - SAS 5.18  VPS
  283. (OS based on MVS)
  284.  
  285. ---------------------------------------------------------
  286.                    Miscellaneous Benchs....
  287.  
  288. From: Doug Bates
  289. Floating point benchmark which is the singular value decomposition
  290. of an n by n orthogonal matrix.  It's the same as the benchmark I
  291. described in S earlier (i.e. time(svd(qr.qy(qr(1:n),diag(n)))))
  292. machines:  SparcStation 1+ (8 Mb) Decstation 3100 (8 MB) NextCube
  293. ('040, 12 Mb), Decstation 5000 model 200 (16 Mb), IBM RISC 600/320,
  294. IMB RISC 6000/530, HP 720 (16 MB).
  295.  
  296. From: Tim Dorcey
  297. Tim sent a very simple benchmark and then sent an improved version
  298. which I remember but can't find....if anyone has it would most
  299. appreciate.....
  300.  
  301. DATA _NULL_;
  302.   RETAIN SUM 0;
  303.   INFILE IN;
  304.   INPUT X 8.;
  305.   SUM = SUM + X;
  306.  
  307. machines: IBM 4381, IBM 3090-200, IBM 3090-600, IBM 3090-600J.
  308.  
  309. From: Melvin Klassen
  310. Melvin offered results but doesn't describe benchmark program?
  311. machines: IBM 3090-150S, with vector facility.
  312.  
  313. From:    "Judy Hallman"                              <HALLMAN>
  314. Here are a couple of ideas for timing runs (CPU HOGS).
  315. There are three jobs.  One Fortran job has heavy calculations.
  316. The other moves around over a big array.
  317.      <stuff deleted>
  318. Basically Judy suggests finding a *VERY* large text file and
  319. then:
  320. //   EXEC SAS
  321. //SYSIN DD *
  322. DATA TEXT;
  323.   LENGTH WORD $ 30;
  324.   INFILE IN;
  325.   INPUT WORD;
  326. PROC FREQ;
  327.   TABLES WORD;
  328.  
  329. From:   IN%"C1921E@UMSLVMA.BITNET"  "David Nasser" 18-OCT-1990 16:38:03.38
  330.  The following is a summary of brief tests of SAS dataset access
  331.  performed on an MVS/XA system.  The access consisted of a simple
  332.  extraction of three observations from a SAS dataset with 1080
  333.  observations and 1171 variables (subsetting "IF" statement for
  334.  sequential access, simple "WHERE" statement for indexed access).
  335.    <stuff deleted>
  336.  
  337. From:         andrew parks <OPK@NIHCU>
  338.   Here's what I did.  I generated a bunch of random number
  339.   variables for a bunch of observations: 55 variables over 4000
  340.   observations.  Then I ran a little program that subsetted the
  341.   data by observation as well as by variable, then performed
  342.   ordinary least squares, using one variable as the dependent
  343.   variable, and the rest, however many that is depending on the
  344.   size of the data set, as independent variables.  I ran this for
  345.   the several combinations of number of observations and number
  346.   of variables.
  347.   <stuff deleted>
  348.  
  349. From: Jeff Zax <zax@zax.Colorado.EDU>
  350. This benchmark program generates its own data.  It ran 19 times
  351. faster on the Sparcstation than on a Gateway 386-25 PC. This
  352. program is very demanding in terms of CPU and disk space.  I
  353. think it can be run without modification in both UNIX and DOS
  354. because it doesn't refer to any external permanent files. It does
  355. need some disk space, though, as it generates large temporary
  356. data sets.
  357.  
  358. This is the SAS program:
  359.  
  360. * COMPARES PRE- AND POST-ERISA PENSIONS FOR RETIREES, NO WORKER HOLDINGS
  361. * OPTIONS OBS=0;
  362.   DATA A;
  363.  
  364. * INITIALIZE NECESSARY CONSTANTS;
  365.  
  366. ETA=.02; * ETA=.05; * ETA=.01;
  367. STEPS=5; * STEPS=2;
  368. MINALPHA=.001; MAXALPHA=.005; ALPHSTEP=.001; * ALPHSTEP=.004;
  369. MINSIG=.02; MAXSIG=.06; SIGSTEP=.01; * SIGSTEP=.04;
  370. MINSIGW=500; MAXSIGW=900; SIGWSTEP=100; * SIGWSTEP=400;
  371. ALPHAW=3500;
  372. RATE=.002;
  373. RETIRE=240;
  374. DEATH=120;
  375. DISCOUNT=.002;
  376. ETARATE=ETA*RATE;
  377. ETARATSQ=ETARATE**2;
  378. PHIOFTAU=RATE*LOG(ETARATE*.00005); * + FUNCTION OF BEQUEST INTENTIONS;
  379. THETA1=EXP(-RETIRE*RATE);
  380. THETA2=EXP(-DEATH*RATE);
  381. THETA1M1=1-THETA1;
  382. THETA3=EXP(RETIRE*RATE)-1;
  383. THETA4=1-THETA2;
  384.  
  385. * ESTABLISH LOOPS;
  386.  
  387. DO ALPHA1=MINALPHA TO MAXALPHA BY ALPHSTEP;
  388.   ALPH1=ALPHA1/ETARATE;
  389.   DO ALPHA2=MINALPHA TO MAXALPHA BY ALPHSTEP;
  390.     ALPH2=ALPHA2/ETARATE;
  391.     DO SIGMA1=MINSIG TO MAXSIG BY SIGSTEP;
  392.       SIGMA1SQ=SIGMA1**2; CV1=SIGMA1/ALPHA1;
  393.       DO SIGMA2=MINSIG TO MAXSIG BY SIGSTEP;
  394.         SIGMA2SQ=SIGMA2**2; CV2=SIGMA2/ALPHA2;
  395.         SIG12MAX=(2/3)*SIGMA1*SIGMA2; SIG12INC=.5*SIG12MAX;
  396.         DO SIGMA12=0, -SIG12INC TO -SIG12MAX BY -SIG12INC,
  397.                        SIG12INC TO  SIG12MAX BY  SIG12INC;
  398.           RHO12=SIGMA12/(SIGMA1*SIGMA2); SIG12SQ=SIGMA12**2;
  399.  
  400.           DET=1/(SIGMA1SQ*SIGMA2SQ-SIG12SQ);
  401.           XER1=DET * (SIGMA2SQ*ALPH1-SIGMA12*ALPH2);
  402.           XER2=DET * (SIGMA1SQ*ALPH2-SIGMA12*ALPH1);
  403.           XPE1=ALPH1/SIGMA1SQ;
  404.           XPE2=ALPH2/SIGMA2SQ;
  405. *         IF XP1<0 | XP2<0 THEN GO TO NEXT;
  406.  
  407.           CV1=SIGMA1/ALPHA1;
  408.           CV2=SIGMA2/ALPHA2;
  409.           ZAX1 = -(RHO12**2) * (((1/CV1-1/CV2)**2)/(1-RHO12)
  410.                 + 2/(CV1*CV2))/(2*(1+RHO12));
  411.  
  412.           DO SIGMAW=MINSIGW TO MAXSIGW BY SIGWSTEP;
  413.             SIGMAWSQ=SIGMAW**2; CVW=SIGMAW/ALPHAW;
  414.             A = -ETARATE*ALPHAW + .5*ETARATSQ*SIGMAWSQ;
  415.             SIG1WMAX=(2/3)*SIGMA1*SIGMAW; SIG1WINC=.5*SIG1WMAX;
  416.             SIG2WMAX=(2/3)*SIGMA2*SIGMAW; SIG2WINC=.5*SIG2WMAX;
  417.             DO SIGMA1W=0, -SIG1WINC TO -SIG1WMAX BY -SIG1WINC,
  418.                            SIG1WINC TO  SIG1WMAX BY  SIG1WINC;
  419. *           DO SIGMA1W=SIG1WINC TO SIG1WMAX BY SIG1WINC;
  420.               RHO1W=SIGMA1W/(SIGMA1*SIGMAW);
  421.               DO SIGMA2W=0, -SIG2WINC TO -SIG2WMAX BY -SIG2WINC,
  422.                              SIG2WINC TO  SIG2WMAX BY  SIG2WINC;
  423. *             DO SIGMA2W=SIG2WINC TO SIG2WMAX BY SIG2WINC;
  424.                 RHO2W=SIGMA2W/(SIGMA2*SIGMAW);
  425.                 ZAX2 = (RHO1W*RHO12-RHO2W)/CV1 + (RHO2W*RHO12-RHO1W)/CV2;
  426.                 ZAX2 = ZAX2*RHO12/(1-RHO12**2);
  427.                 ZAX2 = ETARATE*SIGMAW*ZAX2;
  428.  
  429.                 ARRAY EQVAR1 (I) EQVAR11-EQVAR14;
  430.                 ARRAY EQVAR2 (I) EQVAR21-EQVAR24;
  431.                 ARRAY EQVAR3 (I) EQVAR31-EQVAR34;
  432.                 DO RETIRE=240 TO 60 BY -60;
  433. *               DO RETIRE=50 TO 20 BY -10;
  434. *               DO RETIRE=16 TO 4 BY -4;
  435. *               DO RETIRE=4 TO 1 BY -1;
  436.                   THETA3=EXP(RETIRE*RATE)-1;
  437.                   PHI1 = ZAX1*(THETA3+THETA4);
  438.                   PHI2 = THETA3*ZAX2;
  439.                   I=5-RETIRE/60;
  440. *                 I=5-(RETIRE-10)/10;
  441. *                 I=5-RETIRE/4;
  442. *                 I=5-RETIRE;
  443.                   SCALE=ETARATE*THETA3*ALPHAW;
  444.                   EQVAR1=-FUZZ(PHI1+PHI2)/SCALE;
  445.                   END;
  446.  
  447.                 DO OVER EQVAR1;
  448.                   IF EQVAR1<-.45 THEN EQVAR2=-.5;
  449.                   ELSE IF EQVAR1<-.40 THEN EQVAR2=-.45;
  450.                   ELSE IF EQVAR1<-.35 THEN EQVAR2=-.40;
  451.                   ELSE IF EQVAR1<-.30 THEN EQVAR2=-.35;
  452.                   ELSE IF EQVAR1<-.25 THEN EQVAR2=-.30;
  453.                   ELSE IF EQVAR1<-.20 THEN EQVAR2=-.25;
  454.                   ELSE IF EQVAR1<-.15 THEN EQVAR2=-.20;
  455.                   ELSE IF EQVAR1<-.10 THEN EQVAR2=-.15;
  456.                   ELSE IF EQVAR1<-.05 THEN EQVAR2=-.10;
  457.                   ELSE IF EQVAR1<-.0  THEN EQVAR2=-.05;
  458.                   ELSE IF EQVAR1=.0  THEN EQVAR2=.0;
  459.                   ELSE IF EQVAR1<=.05 THEN EQVAR2=.05;
  460.                   ELSE IF EQVAR1<=.10 THEN EQVAR2=.10;
  461.                   ELSE IF EQVAR1<=.15 THEN EQVAR2=.15;
  462.                   ELSE IF EQVAR1<=.20 THEN EQVAR2=.20;
  463.                   ELSE IF EQVAR1<=.25 THEN EQVAR2=.25;
  464.                   ELSE IF EQVAR1<=.30 THEN EQVAR2=.30;
  465.                   ELSE IF EQVAR1<=.35 THEN EQVAR2=.35;
  466.                   ELSE IF EQVAR1<=.40 THEN EQVAR2=.40;
  467.                   ELSE IF EQVAR1<=.45 THEN EQVAR2=.45;
  468.                   ELSE EQVAR2=.50;
  469.                   IF EQVAR1<0 THEN EQVAR3=0;
  470.                   ELSE IF EQVAR1=0 THEN EQVAR3=1;
  471.                   ELSE EQVAR3=2;
  472.                   END;
  473.                   INDEX=EQVAR31+EQVAR32*3+EQVAR33*9+EQVAR34*27;
  474.  
  475.                 KEEP ALPHA1 ALPHA2 SIGMA1 SIGMA2 RHO12 SIGMAW RHO1W RHO2W
  476.                      CV1 CV2 XER1 XER2 XPE1 XPE2
  477.                      EQVAR11-EQVAR14 EQVAR21-EQVAR24 INDEX;
  478.  
  479.                 OUTPUT;
  480.  
  481.                 END; * SIGMA2W LOOP;
  482.               END; * SIGMA1W LOOP;
  483.             END; * SIGMAW LOOP;
  484. *   NEXT; END; * SIGMA12 LOOP;
  485.         END; * SIGMA2 LOOP;
  486.       END; * SIGMA1 LOOP;
  487.     END; * ALPH2 LOOP;
  488.   END; * ALPH1 LOOP;
  489. run;
  490. PROC MEANS;
  491. run;
  492. PROC UNIVARIATE; VAR EQVAR11-EQVAR14 XER1 XER2 XPE1 XPE2;
  493. run;
  494. PROC FREQ;
  495.   TABLES ALPHA1 ALPHA2 SIGMA1 SIGMA2 SIGMAW RHO12 RHO1W RHO2W
  496.   EQVAR21-EQVAR24 INDEX;
  497. run;
  498. PROC TABULATE;
  499.   CLASS EQVAR21;
  500.   VAR ALPHA1 ALPHA2 SIGMA1 SIGMA2 SIGMAW RHO12 RHO1W RHO2W CV1 CV2
  501.       XER1 XER2 XPE1 XPE2 EQVAR11;
  502.   TABLE
  503.      (ALPHA1 ALPHA2 SIGMA1 SIGMA2 SIGMAW RHO12 RHO1W RHO2W CV1 CV2
  504.       XER1 XER2 XPE1 XPE2 EQVAR11),
  505.       EQVAR21*(MEAN*F=15.6);
  506. run;
  507. PROC TABULATE;
  508.   CLASS EQVAR22;
  509.   VAR ALPHA1 ALPHA2 SIGMA1 SIGMA2 SIGMAW RHO12 RHO1W RHO2W CV1 CV2
  510.       XER1 XER2 XPE1 XPE2 EQVAR12;
  511.   TABLE
  512.      (ALPHA1 ALPHA2 SIGMA1 SIGMA2 SIGMAW RHO12 RHO1W RHO2W CV1 CV2
  513.       XER1 XER2 XPE1 XPE2 EQVAR12),
  514.       EQVAR22*(MEAN*F=15.6);
  515. run;
  516. PROC TABULATE;
  517.   CLASS EQVAR23;
  518.   VAR ALPHA1 ALPHA2 SIGMA1 SIGMA2 SIGMAW RHO12 RHO1W RHO2W CV1 CV2
  519.       XER1 XER2 XPE1 XPE2 EQVAR13;
  520.   TABLE
  521.      (ALPHA1 ALPHA2 SIGMA1 SIGMA2 SIGMAW RHO12 RHO1W RHO2W CV1 CV2
  522.       XER1 XER2 XPE1 XPE2 EQVAR13),
  523.       EQVAR23*(MEAN*F=15.6);
  524. run;
  525. PROC TABULATE;
  526.   CLASS EQVAR24;
  527.   VAR ALPHA1 ALPHA2 SIGMA1 SIGMA2 SIGMAW RHO12 RHO1W RHO2W CV1 CV2
  528.       XER1 XER2 XPE1 XPE2 EQVAR14;
  529.   TABLE
  530.      (ALPHA1 ALPHA2 SIGMA1 SIGMA2 SIGMAW RHO12 RHO1W RHO2W CV1 CV2
  531.       XER1 XER2 XPE1 XPE2 EQVAR14),
  532.       EQVAR24*(MEAN*F=15.6);
  533. run;
  534.  
  535.  
  536. From:    Mike Thorn
  537. Subject: Burroughs Wellcome Benchmarks
  538.  
  539.  These are programs developed by the MISSING LINKS Quality Circle at
  540.  Burroughs Wellcome Co. They are benchmark testing programs to be
  541.  run on different platforms in order to judge how effectively SAS runs
  542.  on the respective platforms.
  543.  
  544.  Following is a list of the programs with a brief descrpition of what
  545.  the program does, what SAS PROCs it mainly uses, and whether the
  546.  program makes any external calls.
  547.  
  548.  -----------------------------------------------------------------------
  549.  
  550.  STATISTICAL ANALYSIS &    These programs basically manipulate and
  551.  DATA MANIPULATION         analyze data. All use data created within
  552.                            the program.  Some call external macros.
  553.  
  554.  Program: BENCH1   SAS     This program is a Monte Carlo simulation
  555.                            which calculates sample size/power for
  556.                            a CMH rank correlation statistic. The program
  557.                            uses PROCs FREQ and PRINTTO.  There are no
  558.                            external calls & data is created internally.
  559.  
  560.  Program: BENCH2   SAS     This program uses PROC GLM on a large
  561.                            randomly generated data set. The data is
  562.                            created internally.
  563.  
  564.  Program: BENCH3   SAS     This program tests data manipulation by
  565.                            internally creating a large data set and
  566.                            using several PROC SORTs, COMPAREs, and
  567.                            MERGEs.
  568.  
  569.  Program: BENCHCI  SAS     This program tests treatment differences
  570.                            in two test instruments.  Data is created
  571.                            internally and one macro call is used.  The
  572.                            macro (RANKSUM) generates confidence
  573.                            intervals.  SAS PROCs used include: RANK,
  574.                            SUMMARY, UNIVARIATE, TRANSPOSE, and DELETE.
  575.  
  576.  Program: TIME1    SAS     This program produces separate statistical
  577.                            summaries with varying numbers of records.
  578.                            Data is generated internally and one external
  579.                            macro call is used.  The macro (EXSTAT)
  580.                            produces summary statistics.  SAS PROCs used
  581.                            include: TRANSPOSE, SORT, FREQ, FORMAT,
  582.                            UNIVARIATE, and COMTENTS.
  583.  
  584.  Program: TIME2    SAS     This program produces a statistical summary
  585.                            using internally generated data and one
  586.                            macro call. The macro (FREQTAB) produces
  587.                            frequencies.  The output is printed by
  588.                            PROC PRINT.  SAS PROCs used include: PRINTTO,
  589.                            SORT, FREQ, and TRANSPOSE.
  590.  
  591.  -----------------------------------------------------------------------
  592.  
  593.  GRAPHICS   Note that all these programs have been taken from the SAS
  594.             Version 6 Sample Library.  All but one use data created
  595.             within the program.
  596.  
  597.  Program: BENCHG1  SAS     This program uses SAS PROCs GCHART, GSLIDE,
  598.                            and GREPLAY to produce a graphic with four
  599.                            figures on one page. It uses internal data.
  600.  
  601.  Program: BENCHG2  SAS     This program uses SAS PROCs G3D and G3GRID
  602.                            to produce a 3-diminsional graphic. It uses
  603.                            internal data.
  604.  
  605.  Program: BENCHG3  SAS     This program uses the SAS PROC GMAP to
  606.                            produce a US map graphic.  It uses the
  607.                            MAPS.US data set provided in the SAS GRAPH
  608.                            Data Library.
  609.  
  610.  Program: BENCHG4  SAS     This program uses the SAS PROC GPLOT to
  611.                            produce a plot of temperature versus
  612.                            time in three cities.  It uses internal
  613.                            data.
  614.