Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!uwm.edu!cs.utexas.edu!sun-barr!newstop!sun!sally!plocher From: plocher%sally@Sun.COM (John Plocher) Newsgroups: comp.unix.i386 Subject: Re: SCO MicroSoft C Compiler comments Message-ID: <124498@sun.Eng.Sun.COM> Date: 12 Sep 89 02:36:27 GMT References: <4558@shlump.nac.dec.com> Sender: news@sun.Eng.Sun.COM Reply-To: plocher@sun.UUCP (John Plocher) Organization: Sun Microsystems, Mountain View Lines: 71 >In article <123591@sun.Eng.Sun.COM>, plocher%sally@Sun.COM (John Plocher) writes... >They provide Microsoft C as their default compiler, but they also give you >a version of pcc. When the two are benchmarked, MSC comes out looking faster! > ... >Some sluthing later, it turns out that the version of pcc that SCO provides >with their 3.2 system is considerably slower than that provided by AT&T's 3.2! I get to eat some crow here. First off, my apologies to SCO, and specifically to their compiler and tools people. (Hi Dave :-) I did some extensive benchmarks this weekend with several different compilers on the same hardware platform, and it turns out that I was very wrong. For this posting I will only refer to Dhrystone 1.1 benchmarks (200,000 loops), but other programs seem to show the same results. I used an Intel 301 machine (16 Mhz, no cache, 4MB RAM) for all these tests. I used SCO Unix 3.2 as the base Operating System for all the tests; the compiler subsystems were used in their complete form (Include files, Libraries, startup files, tools, etc were consistant with the compiler being tested. Thus the SCO versions of cc, as, and ld were used when testing the SCO compilers, the Microport versions of the same were used when testing the Vr3.0 compiler, and the ATT 3.2 environment was used for the Vr3.2 tests. (I loaded each SoftDev package into its own sub- directory and used gencc to generate a customized "cross compiler" for each package) Compiler systems tested Compiler abbreviation Derivation -------- ------------ ---------- SCO Unix 3.2 cc (MSC) Microsoft SCO Unix 3.2 rcc (rcc) ATT pcc Microport 3.0e cc (ucc) ATT pcc ATT 3.2 4.1.6 cc (pcc) ATT pcc Metaware Hi-C 2.2a (Hi-C) Metaware The SCO "rcc" compiler had different binaries than the ATT 4.1.6 "cc", but that *could* be explained if the "rcc" package was based on the 4.1.5 compiler. No matter, the 2 are quite similar and both produce nearly identical code. The MSC and pcc based compilers all produced numbers in the same ranges, with the Optimized MSC compiler generating code that ran about 1-2 seconds faster than the pcc code (this translates into about 300 dhrystones difference). The Metaware code was about twice as fast as that produced by any of the other compilers. I found the following dhrystones for each of these compilers. Except for the Metaware compiler all the compilers are statistically in the same ballpark, with a slight edge to MSC. (NOTE: the numbers only have an accuracy of about +/- 150 because of timing granularities) The Microport 3.0 compiler seemed to bracket the slower end of the spectrum, but the results *of this one benchmark* are not really conclusive. It is worth noting, though, that the rcc and pcc compilers are more mature versions of that shipped by Microport. Compiler cc cc -O -------- ---- ----- Hi-C 4400 - 6400 MSC 2300 - 3400 rcc 2400 - 3200 pcc 2400 - 3200 ucc 2400 - 3100 The only explanation I have for the earlier comments is that the testing was done on 2 different machines with different memory configurations. The recent talk about _Unix_Today_ made me realize that I was guilty of the same lack of "controls". Again, I am sorry about the inaccurate comments I posted earlier. -John Plocher