Alright you guys...druuummmm rolll please!!!
So given this single synthetic benchmark, which I am guessing probably does not take the full advantage of various instruction set functionality, I spent sime time first looking at how to produce the optimal (fastest & correct results - all tests complete successfully) and then I applied the same compilar optimizations across the different architectures.
One thing I learned right off the top is that at least our 4.9.2 version seems to have a problem with the '-mfpmath=sse' flag. Using this consistently produced a crash in the code. While it was handled gracefuly - not a process dump, it still prevented the benchmark from completing. It did not matter what level of -O optimization I was attempting, even -O1 would cause a failure, therefore, I attributed the failure to the use of the -mfpmath=sse flag. I suppose it could also be due to interaction between these various flags.
Below are the results of each platform execution: i686, pentium4, AMD K10.
The final gcc compiler flags with produced the best result were: 'CFLAGS = -s -march=
CPU -Ofast -pipe -msse2', where
CPU can be: i686, pentium4, amdfam10.
1) AMD K10 - Phenom II X6 (my specific CPU)
TEST : Iterations/sec. : Old Index : New Index
: : Pentium 90* : AMD K6/233*
--------------------:------------------:-------------:------------
NUMERIC SORT : 1746.9 : 44.80 : 14.71
STRING SORT : 349.85 : 156.32 : 24.20
BITFIELD : 7.623e+08 : 130.76 : 27.31
FP EMULATION : 528.02 : 253.37 : 58.46
FOURIER : 27701 : 31.50 : 17.69
ASSIGNMENT : 49.893 : 189.85 : 49.24
IDEA : 8966.9 : 137.15 : 40.72
HUFFMAN : 3762.4 : 104.33 : 33.32
NEURAL NET : 13.633 : 21.90 : 9.21
LU DECOMPOSITION : 2294.8 : 118.88 : 85.84
====================ORIGINAL BYTEMARK RESULTS====================
INTEGER INDEX : 130.083
FLOATING-POINT INDEX: 43.447
Baseline (MSDOS*) : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0
=======================LINUX DATA BELOW=========================
MEMORY INDEX : 31.927
INTEGER INDEX : 32.867
FLOATING-POINT INDEX: 24.098
Baseline (LINUX) : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38
2) pentium4
TEST : Iterations/sec. : Old Index : New Index
: : Pentium 90* : AMD K6/233*
--------------------:------------------:-------------:------------
NUMERIC SORT : 1570.6 : 40.28 : 13.23
STRING SORT : 336.59 : 150.40 : 23.28
BITFIELD : 7.2587e+08 : 124.51 : 26.01
FP EMULATION : 488.55 : 234.43 : 54.09
FOURIER : 27731 : 31.54 : 17.71
ASSIGNMENT : 47.027 : 178.95 : 46.41
IDEA : 8793.9 : 134.50 : 39.93
HUFFMAN : 3586.7 : 99.46 : 31.76
NEURAL NET : 11.808 : 18.97 : 7.98
LU DECOMPOSITION : 2284.7 : 118.36 : 85.47
====================ORIGINAL BYTEMARK RESULTS====================
INTEGER INDEX : 122.890
FLOATING-POINT INDEX: 41.370
Baseline (MSDOS*) : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0
=======================LINUX DATA BELOW=========================
MEMORY INDEX : 30.402
INTEGER INDEX : 30.866
FLOATING-POINT INDEX: 22.945
Baseline (LINUX) : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38
3) i686
TEST : Iterations/sec. : Old Index : New Index
: : Pentium 90* : AMD K6/233*
--------------------:------------------:-------------:------------
NUMERIC SORT : 1252.1 : 32.11 : 10.55
STRING SORT : 349.32 : 156.09 : 24.16
BITFIELD : 8.5654e+08 : 146.93 : 30.69
FP EMULATION : 465.96 : 223.59 : 51.59
FOURIER : 27731 : 31.54 : 17.71
ASSIGNMENT : 51.986 : 197.81 : 51.31
IDEA : 10374 : 158.67 : 47.11
HUFFMAN : 4030.6 : 111.77 : 35.69
NEURAL NET : 11.511 : 18.49 : 7.78
LU DECOMPOSITION : 2312.3 : 119.79 : 86.50
====================ORIGINAL BYTEMARK RESULTS====================
INTEGER INDEX : 128.472
FLOATING-POINT INDEX: 41.184
Baseline (MSDOS*) : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0
=======================LINUX DATA BELOW=========================
MEMORY INDEX : 33.632
INTEGER INDEX : 30.927
FLOATING-POINT INDEX: 22.842
Baseline (LINUX) : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38
OK, so what's the verdict?
Well, on our platform, with this particular test, there is very little difference. i686 is a pretty viable choice for those who have older hardware in particular...not any slower than the pentium4, in fact, the memory access marks were higher. Not sure how memory bus speed settings imact this (if they do at all???), but clearly there is more to this.
Those of us who do have non-ancient hardware (OK, even my K10 is old news), or are thinking of moving up to newer hardware, should probably install the pentium4 stuff.
I for one am curious if the newer GCC releases (like Paul's 7.3.0 for example) are able to produce faster code? Worth a try...but can anyone point me to some reading on how to support multiple GCC installs on our platform??? I did some preliminary linux reading on this, seems to be all about the \usr\local\. setups, but is this even viable on OS/2?
Last, I've attached the full dump of all the testing results I capture...about 30 different runs, if anything it'll give you some ideas what were the different flags I tried.