Title

Roy Longbottom at Linkedin Dhrystone Benchmark Results On PCs

Description

The Dhrystone "C" benchmark provides a measure of integer performance (no floating point instructions). It became the key standard benchmark from 1984, with the growth of Unix systems. The first version was produced by Reinhold P. Weicker in ADA and translated to "C" by Rick Richardson.

Two versions are available - Dhrystone versions 1.1 and 2.1. The second version was produced to avoid over-optimisation problems encountered with version 1. Although it is recommended that advanced optimisation levels should be avoided with the latter, it is clear from published results that the recommendation is usually ignored.

This document contains results of optimised and non-optimised versions of Dhrystone 1 and 2 on PCs. The pre-compiled benchmarks can be found in BenchNT.zip which also contains the source codes, providing further explanatory comments. DOS versions are available in DosTests.zip, some to run via OS/2 in OS2Tests.zip and a 16 bit version in cb16bit.zip. Then there is My Main Page for other PC benchmarks and results.

Original versions of the benchmark gave performance ratings in terms of Dhrystones per second. This was later changed to VAX MIPS by dividing Dhrystones per second by 1757, the DEC VAX 11/780 result.

Dhrystone Reference - Reinhold P. Weicker, CACM Vol 27, No 10, 10/84,pg.1013


Results

The following is a sample of results. Performance tends to be proportional to CPU MHz for a given type of processor. Details of cache sizes and range of CPU MHz can be found in CPUSpeed.htm. Results include those from DOS and Windows compilations that produce very similar speed measurements. OS/2 and 16 bit results are included at the bottom of the table.

Later results are for new optimised compilations via Microsoft 32 bit and 64 bit compilers, the latter with integer variables declared as 32 and 64 bits. Results for 32 bit integers show that 64 bit compilations are up to 56% faster than the 32 bit versions. Much of the gain appears to be due to a different translation of the C source code but, with twice as many registers available for optimisation at 64 bits, there could be some performance improvement. Regarding 64 bit compilations, the versions using 64 bit integers were both slower than with 32 bit integers. by 27% in one case. This might be due to the higher volume of data from cache with 64 bit words but limited compilations were inconclusive when some of the code was omitted. The EXE files can be found in Win64.zip and C/C++ source code in NewSource.zip.

Even later results are for the same code ported to 32-Bit and 64-Bit Linux using the supplied GCC compiler (all free software) - see linux benchmarks.htm and download benchmark execution files, source code, compile and run instructions in classic_benchmarks.tar.gz. Using Windows the file downloaded wrongly as classic_benchmarks.tar.tar but was fine when renamed classic_benchmarks.tar.gz. Results are shown separately below.

Later conversions were varieties to run on Android tablets and phones on ARM CPUs. These use a Java front end for starting and displaying results, with the compiled C code for calculations. Download www.roylongbottom.org.uk/Dhrystone2.apk and see android benchmarks.htm and results here.

Latest benchmark was compiled and run on a Raspberry Pi that uses ARM CPUs and Linux. See Raspberry Pi Benchmarks.htm and download from Raspberry_Pi_Benchmarks.zip. The results are also here.


                      Dhry1  Dhry1  Dhry2  Dhry2
                        Opt  NoOpt    Opt  NoOpt
                        VAX    VAX    VAX    VAX
CPU              MHz   MIPS   MIPS   MIPS   MIPS

AMD 80386         40   17.5   4.32   13.7   4.53
IBM 486D2         50   26.6   7.89   22.4   7.89
80486 DX2         66   45.1   12.0   35.3   12.4
IBM 486BL        100   53.9   12.0   40.9   11.8
AMD 5X86         133   84.5   9.37   84.5   9.42
Pentium           75    112   19.3   87.1   18.9
Cyrix P150       120    175   27.9    160   28.3
Pentium          100    169   31.8    122   32.2
Cyrix PP166      133    219   38.4    180   39.8
IBM 6x86         150    234   44.1    188   43.9
Pentium          133    239   38.3    181   39.0
Pentium          166    270   43.6    189   43.9
Cyrix PR233      188    286   46.4    232   45.8
Pentium          200    353   47.4    269   48.1
Pentium MMX      200    352   51.4    276   51.0
AMD K6           200    349   43.1    289   43.3
Pentium Pro      200    373   92.4    312   91.9
Celeron A        300    553    133    484    136
Pentium II       300    544    132    477    136
AMD K62          500    778   77.8    606   76.8
AMD K63          450    804   76.3    645   77.4
Pentium II       450    813    199    713    204
Celeron A        450    828    198    720    202
Pentium III      450    846    197    722    203
Pentium III      600   1105    263    959    270
Athlon           600   1316    321    942    316
Duron            600   1382    350    999    349
Pentium III     1000   1858    461   1595    465
PIII Tualatin   1200   2205    546   1907    571
Pentium 4       1700   2262    239   1843    242
Athlon Tbird    1000   2282    634   1659    602
Duron           1000   2288    576   1674    587
Celeron M       1295   2440    640   2273    645
Atom            1600   2462    717   1828    728
Pentium 4       1900   2593    261   2003    269
Atom            1666   2600    772   1948    780
P4 Xeon         2200   3028    300   2265    309
Athlon 4        1600   3707    956   2830   1004
Pentium M       1862   4082    954   3933    975
Ath4 Barton     1800   4181   1061   3172   1099
Pentium 4E      3000   4379    566   3553    566
Athlon XP       2080   4826   1228   3700   1312
Turion 64 M     1900   4972   1186   3742   1150
Pentium 4       3066   5052    432   4012    434
Opteron         1991   5077   1268   3985   1223
Core 2 Duo M    1830   5379    892   4952    966
Athlon XP       2338   5433   1400   4160   1482
Athlon 64       2150   5658   1312   4288   1355
Pentium 4       3678   5787    511   4227    480
Athlon 64       2211   5798   1348   4462   1312
Celeron C2 M    2000   5804    932   5275   1050
Core 2 Duo 1 CP 2400   7145   1198   6446   1251
Core i5 2467M   @@@@   8338   1183   4752   1148
Phenom II 1 CP  3000   9462   2250   7615   2253
Core i7 930     ****   9826   1662   8684   1661
Core i7 860     ####  10094   1789   9978   1847
Core i7 3930K   &&&&  13871   1960  11197   1972
Core i7 3930K   OC    17269   2444  13877   2432

 ####  Rated as 2800 MHz but running at up to   
       3460 MHz using Turbo Boost               
 ****  Rated as 2800 MHz but running at up to   
       3066 MHz using Turbo Boost               
 @@@@  Rated as 1600 MHz running at up to       
       2300 MHz using Turbo Boost               
 &&&&  Rated as 3200 MHz but running at up to   
       3800 MHz, OC OverClocked ~4730 MHz       
   M = Mobile CPU                               

To Start

                      Dhry1  Dhry1  Dhry2  Dhry2
                        Opt  NoOpt    Opt  NoOpt
                        VAX    VAX    VAX    VAX
CPU              MHz   MIPS   MIPS   MIPS   MIPS

Later Results 32 and 64 Bit MS Compilers     

Pentium 4  32b1 1900   2613          1795       

Athlon 64  32b1 2211   6104          3720       
Athlon 64  64b1 2211   8668          5214       
Athlon 64  64b2 2211   8549          4654       

Core 2 Duo 32b1 2400   8094          5476       
Core 2 Duo 64b1 2400  12600          8550       
Core 2 Duo 64b2 2400  11726          6248       

Core i7    64b1 &&&&  33048         18355       
Core i7    64b2 &&&&  27873         15753       

Phenom II  32b1 3000   9768          6006       
Phenom II  64b1 3000   9862          6878       
Phenom II  64b2 3000  11837          8006       

 b1 = 32 bit integers, b2 = 64 bit integers     
 &&&&& overclocked i7-3930K see above           


32 Bit and 64 Bit Linux Results from Ubuntu GCC 

                           Dhry1  Dhry1  Dhry2  Dhry2
                             Opt  NoOpt    Opt  NoOpt
                             VAX    VAX    VAX    VAX
CPU              OS   MHz   MIPS   MIPS   MIPS   MIPS

Atom N455   32b1 Ub  1666   5485   1198   2055   1194
Atom N455   64b1 Ub  1666   5926   1065   2704   1098

Core 2 Mob  32b1 Ub  1830   9876   2602   4833   2584
Core 2 Mob  64b1 Ub  1830  15382   2265   8241   2502

Athlon 64   32b1 Ub  2211   9034   2286   4580   2347
Athlon 64   64b1 Ub  2211  14783   2243   6873   2580

Core 2 Duo  32b1 Ub  2400  13599   3428   5852   3348
Core 2 Duo  64b1 Ub  2400  18738   3643  12265   3288

Phenom II   32b1 Ub  3000  13406   3368   6676   3470
Phenom II   64b1 Ub  3000  21996   3908  11982   3826
Phenom II   64b1 Fe  3000  21841   3882  12000   3798

Core i7 930 64b1 Ub  ****  24396   5361  16435   5302

       Ub = Ubuntu Linux,   Fe = Fedora Linux



 Android Results Compiled By Native Development Kit
 Also results for Raspberry Pi & Linux

                                     Opt     NoOpt
 System   ARM    MHz   Android       Vax       Vax
                                    MIPS      MIPS

  T1    926EJ    800       2.2       356       196
  T2    v7-A9    800     2.3.4       962       458
  P13   v7-A9   1200     4.1.2      1491          
  T4    v7-A9   1500a    4.0.3      1650       786
  T5  MIPS CPU  1000     4.0.1        56 E        
  T7    v7-A9   1300a    4.1.2      1610       810
  P11   v7-A9v3 1400     4.0.4      1937       866
  T11   v7-A15  2000b    4.2.2      3189      1504

   System - T = Tablet, P = Phone, E = Emulator?  
   a running at 1500, b at 1700               

  Raspberry Pi           Linux                    
  ARM  1176      700     3.6.11      847          
  ARM  1176     1000     3.6.11     1226          

NOTE: ARM's own results are much faster than these
- different compiler and optimisation?

16 Bit Results

                      Dhry1  Dhry1  Dhry2  Dhry2
                        Opt  NoOpt    Opt  NoOpt
                        VAX    VAX    VAX    VAX
CPU              MHz   MIPS   MIPS   MIPS   MIPS

80486 DX2         66     29     14     18      8
Pentium          100     89     41     78     42
Pentium Pro      200    176     95    164     94
Celeron M       1295    705                     
Pentium 4E      3000    754                     
Athlon 4        2080   1256                     

OS/2 Results

80486             75     37      9     35      9
IBM 80486BL      100     54     12     41     12
80486 DX2         66     59     12     48     12
Cyrix P150       120    175     28    160     28
Pentium Pro      150    276     53    218     52
Pentium Pro      166    307     59    242     57
Pentium Pro      200    362     69    285     67


To Start




Roy Longbottom at Linkedin Roy Longbottom August 2013

The new Internet Home for my PC Benchmarks is via the link
Roy Longbottom's PC Benchmark Collection