Xref: utzoo comp.sys.hp:9401 comp.benchmarks:693 Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!swrinde!cs.utexas.edu!sun-barr!newstop!sun!amdcad!dvorak.amd.com!proton!tim From: tim@proton.amd.com (Tim Olson) Newsgroups: comp.sys.hp,comp.benchmarks Subject: Re: 68040 and Floats, is this true? Message-ID: <1991Jun14.195033.28799@dvorak.amd.com> Date: 14 Jun 91 19:50:33 GMT References: <3286@sparko.gwu.edu> <2080@kuling.UUCP> Sender: usenet@dvorak.amd.com (Usenet News) Reply-To: tim@amd.com (Tim Olson) Organization: Advanced Micro Devices, Austin, TX Lines: 57 In article <2080@kuling.UUCP> bt@irfu.se (Bo Thide') writes: | In order to see how well the 68040 performs in general, and on sprintf() | in particular, I ran the "C Cost" benchmark on the HP9000/425t (68040/25 | MHz), HP9000/400t (68030/50 MHz) and the Sun SparcStation 1. The | results are presented below. As is seen, the HP-UX 7.05 sprintf() on | the 68040 is a factor of 2 *slower* than on the 68030 but a factor of | two *faster* than in SunOS4.1 on the Sun SparcStation (lower numbers = | faster). I don't trust any of these numbers, as they appear highly suspect for even the simple operations: | RESULTS: | | ------------------------------------------------------------- | Operation Mics/N Mics/N Mics/N | HP425t HP400t Sun Sparc- | (68040) (68030) Station 1 | Null Loop (n=1000000) | {} 0.00 0.43 0.18 ^^^^ It appears that the HP compiler removed the null loop through dead code elimination. | Int Operations (n=1000000) | i1++ 0.16 0.18 0.34 | i1 = i2 0.16 0.19 0.35 | i1 = i2 + i3 0.24 0.35 0.30 | i1 = i2 - i3 0.24 0.35 0.30 | i1 = i2 * i3 0.36 1.21 0.30 | i1 = i2 / i3 2.02 2.11 0.31 | i1 = i2 % i3 2.02 2.12 0.30 Are these register or memory operations (they would appear to be memory to memory by the times listed)? Note that the SparcStation times for multiply and divide are the same as those for the simple operations, even though it has no hardware MUL or DIV. In the 68040 column, why does it take the same amount of time to perform an assignment as it does to increment a variable? That could only be if they were register-to-register operations, but then why would it take 160ns @ 25MHz? Again, these numbers are highly suspect. | Control Structures (n=1000000) | if (i == 5) i1++ 0.28 0.27 0.12 <-- ?? | if (i != 5) i1++ 0.38 0.39 0.67 <-- ?? | while (i < 0) i1++ 0.32 0.18 0.12 | i1 = sum1(i2) 0.20 0.82 0.60 | i1 = sum2(i2, i3) 0.28 1.11 0.67 | i1 = sum3(i2, i3, i4) 0.32 1.42 0.84 How can these vary by such a large amount? They should be equal times. -- -- Tim Olson Advanced Micro Devices (tim@amd.com)