| | 1 | == Bench++ == |
|---|
| | 2 | |
|---|
| | 3 | {{{ |
|---|
| | 4 | a000010.h class duration |
|---|
| | 5 | a000012.cpp implementation of class duration for UNIX systems |
|---|
| | 6 | using times(3), Windows NT using GetProcessTimes(), |
|---|
| | 7 | Windows or Windows/95 using clock(), and Macintosh |
|---|
| | 8 | using Microseconds(). |
|---|
| | 9 | |
|---|
| | 10 | Note: Please send in other implementations |
|---|
| | 11 | |
|---|
| | 12 | a000021.h class break_optimization : optimization control |
|---|
| | 13 | a000022.cpp implementation of class break_optimization |
|---|
| | 14 | |
|---|
| | 15 | a000031.h class iteration : Iteration control |
|---|
| | 16 | a000032.cpp implementation of class iteration |
|---|
| | 17 | |
|---|
| | 18 | a000041.h procedure piwg_io declaration : output |
|---|
| | 19 | |
|---|
| | 20 | a000042.cpp implementation of procedure piwg_io |
|---|
| | 21 | |
|---|
| | 22 | a000047.h class piwg_timer_generic |
|---|
| | 23 | a000048.cpp implementaion of class piwg_timer_generic |
|---|
| | 24 | |
|---|
| | 25 | a000095.cpp A program to read a log file from a run and |
|---|
| | 26 | produce a compact listing in "bench.tbl". |
|---|
| | 27 | |
|---|
| | 28 | a000096.cpp A program to read multiple "bench.tbl" files and |
|---|
| | 29 | produce a performance comparison summary. |
|---|
| | 30 | |
|---|
| | 31 | a000097.cpp A program to read a "bench.tbl" file and produce |
|---|
| | 32 | various interesting performance ratios, based on |
|---|
| | 33 | the rules in the "RATIOS" file. |
|---|
| | 34 | |
|---|
| | 35 | a000099.cpp This is a skeleton procedure that can be copied and edited |
|---|
| | 36 | to construct more tests. DO NOT COMPILE THIS. It is for |
|---|
| | 37 | editing to make more tests. |
|---|
| | 38 | |
|---|
| | 39 | a000100.cpp This is a top level procedure that calls all the other |
|---|
| | 40 | executable timing tests. It is useful if there is no "make" |
|---|
| | 41 | facility available. |
|---|
| | 42 | |
|---|
| | 43 | p000000.h Header file for the "p" tests |
|---|
| | 44 | |
|---|
| | 45 | p000000.cpp Separate compilation of the procedures for the "p" tests |
|---|
| | 46 | to prevent inlining. |
|---|
| | 47 | |
|---|
| | 48 | s000005.h Header file for the Stepanov "s" tests. |
|---|
| | 49 | |
|---|
| | 50 | FIRST OF EXECUTION TESTS. |
|---|
| | 51 | |
|---|
| | 52 | a000090.cpp Measure clock resolution by second differences |
|---|
| | 53 | a000091.cpp Dhrystone |
|---|
| | 54 | a000092.cpp Whetstone |
|---|
| | 55 | a000094a..k Hennesy benchmarks |
|---|
| | 56 | |
|---|
| | 57 | This group of tests measures the performance of some |
|---|
| | 58 | real (useful) C++ code, including a tracker algorithm, |
|---|
| | 59 | an Orbit calculation, a Kalman filter, and a Centroid |
|---|
| | 60 | algorithm. Here is where other small useful benchmarks |
|---|
| | 61 | should be added. Please send ideas to |
|---|
| | 62 | "joseph.orost@att.com". |
|---|
| | 63 | b000002b.cpp Tracker: float |
|---|
| | 64 | b000003b.cpp Tracker: double |
|---|
| | 65 | b000004b.cpp Tracker: float & int |
|---|
| | 66 | b000010.cpp Orbit |
|---|
| | 67 | b000011.cpp Kalman |
|---|
| | 68 | b000013.cpp Centroid |
|---|
| | 69 | |
|---|
| | 70 | This group of tests measures dynamic allocation related |
|---|
| | 71 | timing. |
|---|
| | 72 | d000001.cpp malloc & free: 1000 ints |
|---|
| | 73 | d000002.cpp malloc & init & free: 1000 ints |
|---|
| | 74 | d000003.cpp new & delete: 1000 ints |
|---|
| | 75 | d000004.cpp new & init & delete: 1000 ints |
|---|
| | 76 | d000005.cpp alloca: 1000 ints (optional test) |
|---|
| | 77 | d000006.cpp alloca & init: 1000 ints (optional test) |
|---|
| | 78 | |
|---|
| | 79 | This group of tests measures exception related timing. |
|---|
| | 80 | For historical reasons, e000005 is missing. |
|---|
| | 81 | e000001.cpp Local exception caught |
|---|
| | 82 | e000002.cpp Class method exception caught |
|---|
| | 83 | e000003.cpp Procedure exception caught: 3-deep |
|---|
| | 84 | e000004.cpp Procedure exception caught: 4-deep |
|---|
| | 85 | e000006.cpp Declared Procedure exception caught: 4-deep |
|---|
| | 86 | e000007.cpp Procedure exception caught: 4-deep re-thrown at each level |
|---|
| | 87 | e000008.cpp Procedure exception 4-deep: Implemented using setjmp/longjmp |
|---|
| | 88 | |
|---|
| | 89 | This group of tests measures coding style related timing. |
|---|
| | 90 | f000001.cpp Boolean assignment |
|---|
| | 91 | f000002.cpp Boolean if |
|---|
| | 92 | f000003.cpp 2-way if/else |
|---|
| | 93 | f000004.cpp 2-way switch |
|---|
| | 94 | f000005.cpp 10-way if/else |
|---|
| | 95 | f000006.cpp 10-way switch |
|---|
| | 96 | f000007.cpp 10-way sparse switch |
|---|
| | 97 | f000008.cpp 10-way virtual function call |
|---|
| | 98 | |
|---|
| | 99 | This group of tests measures I/O related timing. |
|---|
| | 100 | g000001.cpp iostream.getline: 20 char buffer |
|---|
| | 101 | g000002.cpp iostream.>> : 20 chars in loop |
|---|
| | 102 | g000003.cpp iostream.<< : 20 char buffer |
|---|
| | 103 | g000004.cpp iostream.<< : 20 chars in loop |
|---|
| | 104 | g000005.cpp istrstream.>> : int |
|---|
| | 105 | g000006.cpp istrstream.>> : float |
|---|
| | 106 | g000007.cpp fstream.open/fstream.close |
|---|
| | 107 | |
|---|
| | 108 | This group of tests measures machine level features. |
|---|
| | 109 | h000001.cpp packed bit arrays |
|---|
| | 110 | h000002.cpp unpacked bit arrays |
|---|
| | 111 | h000003.cpp packed bit ops in loop |
|---|
| | 112 | h000004.cpp unpacked bit ops in loop |
|---|
| | 113 | h000005.cpp int conversion |
|---|
| | 114 | h000006.cpp 10-float conversion |
|---|
| | 115 | h000007.cpp bit-fields |
|---|
| | 116 | h000008.cpp bit-fields and packed bit array |
|---|
| | 117 | h000009.cpp pack and unpack class objects |
|---|
| | 118 | |
|---|
| | 119 | This group of tests measures loop overhead related timing. |
|---|
| | 120 | l000001.cpp "for" loop |
|---|
| | 121 | l000002.cpp "while" loop |
|---|
| | 122 | l000003.cpp inf. loop w/break |
|---|
| | 123 | l000004.cpp 5-iteration loop |
|---|
| | 124 | |
|---|
| | 125 | This group of tests measures optimizer performance. |
|---|
| | 126 | o000001a.cpp Constant Propagation (including math functions) |
|---|
| | 127 | o000001b.cpp " Hand Optimized |
|---|
| | 128 | o000002a.cpp Local Common Sub-expression (including math functions) |
|---|
| | 129 | o000002b.cpp " Hand Optimized |
|---|
| | 130 | o000003a.cpp Global Common Sub-expression |
|---|
| | 131 | o000003b.cpp " Hand Optimized |
|---|
| | 132 | o000004a.cpp Unnecessary Copy |
|---|
| | 133 | o000004b.cpp " Hand Optimized |
|---|
| | 134 | o000005a.cpp Code Motion (including math functions) |
|---|
| | 135 | o000005b.cpp " Hand Optimized |
|---|
| | 136 | o000006a.cpp Induction Variable |
|---|
| | 137 | o000006b.cpp " Hand Optimized |
|---|
| | 138 | o000007a.cpp Reduction in Strength (including math functions) |
|---|
| | 139 | o000007b.cpp " Hand Optimized |
|---|
| | 140 | o000008a.cpp Dead Code |
|---|
| | 141 | o000008b.cpp " Hand Optimized |
|---|
| | 142 | o000009a.cpp Loop Jamming |
|---|
| | 143 | o000009b.cpp " Hand Optimized |
|---|
| | 144 | o000010a.cpp Redundant Code |
|---|
| | 145 | o000010b.cpp " Hand Optimized |
|---|
| | 146 | o000011a.cpp Unreachable Code |
|---|
| | 147 | o000011b.cpp " Hand Optimized |
|---|
| | 148 | o000012a.cpp String Ops |
|---|
| | 149 | o000012b.cpp " Hand Optimized |
|---|
| | 150 | |
|---|
| | 151 | This group of tests measures procedure call related timing. |
|---|
| | 152 | There is no test p000009, nor 14 thru 19. |
|---|
| | 153 | p000001.cpp Procedure Call: No Args |
|---|
| | 154 | p000002.cpp Procedure Call: No Args: Catches Exceptions |
|---|
| | 155 | p000003.cpp Static Class Method Call: No Args: Catches Exceptions |
|---|
| | 156 | p000004.cpp Inline Procedure Call: No Args |
|---|
| | 157 | p000005.cpp Static Class Method Call: 1-int Arg: Catches Exceptions |
|---|
| | 158 | p000006.cpp Static Class Method Call: 1-int *Arg: Catches Exceptions |
|---|
| | 159 | p000007.cpp Static Class Method Call: 1-int &Arg: Catches Exceptions |
|---|
| | 160 | p000008.cpp Procedure Call: No Parameters: Called thru pointer, Catches Excep |
|---|
| | 161 | tions |
|---|
| | 162 | p000010.cpp Procedure Call: 10-int Args: Catches Exceptions |
|---|
| | 163 | p000011.cpp Procedure Call: 20-int Args: Catches Exceptions |
|---|
| | 164 | p000012.cpp Procedure Call: 10-(3-int) Args: Catches Exceptions |
|---|
| | 165 | p000013.cpp Procedure Call: 20-(3-int) Args: Catches Exceptions |
|---|
| | 166 | p000020.cpp Class Method Call: 1-"this" Arg: Catches Exceptions |
|---|
| | 167 | p000021.cpp Virtual Class Method Call: 1-"this" Arg: Catches Exceptions |
|---|
| | 168 | p000022.cpp Virtual Const Class Method Call: 1-"this" Arg: Catches Exceptions |
|---|
| | 169 | p000023.cpp Same as p000022: called in loop to see if lookup is optimized |
|---|
| | 170 | |
|---|
| | 171 | This group of tests measures object oriented style vs. |
|---|
| | 172 | C style. |
|---|
| | 173 | s000001a.cpp Max: C++ Style |
|---|
| | 174 | s000001b.cpp Max: C Style |
|---|
| | 175 | s000002a.cpp Matrix: C++ Style |
|---|
| | 176 | s000002b.cpp Matrix: C Style |
|---|
| | 177 | s000003a.cpp Iterator: C++ Style |
|---|
| | 178 | s000003b.cpp Iterator: C Style |
|---|
| | 179 | s000004a.cpp Complex: C++ Style |
|---|
| | 180 | s000004b.cpp Complex: C Style |
|---|
| | 181 | s000005a.cpp Stepanov: C++ Style Abstraction Level 12 |
|---|
| | 182 | s000005b.cpp Stepanov: C++ Style Abstraction Level 11 |
|---|
| | 183 | s000005c.cpp Stepanov: C++ Style Abstraction Level 10 |
|---|
| | 184 | s000005d.cpp Stepanov: C++ Style Abstraction Level 9 |
|---|
| | 185 | s000005e.cpp Stepanov: C++ Style Abstraction Level 8 |
|---|
| | 186 | s000005f.cpp Stepanov: C++ Style Abstraction Level 7 |
|---|
| | 187 | s000005g.cpp Stepanov: C++ Style Abstraction Level 6 |
|---|
| | 188 | s000005h.cpp Stepanov: C++ Style Abstraction Level 5 |
|---|
| | 189 | s000005i.cpp Stepanov: C++ Style Abstraction Level 4 |
|---|
| | 190 | s000005j.cpp Stepanov: C++ Style Abstraction Level 3 |
|---|
| | 191 | s000005k.cpp Stepanov: C++ Style Abstraction Level 2 |
|---|
| | 192 | s000005l.cpp Stepanov: C++ Style Abstraction Level 1 |
|---|
| | 193 | s000005m.cpp Stepanov: C++ Style Abstraction Level 0 |
|---|
| | 194 | }}} |
|---|
| | 195 | |
|---|
| | 196 | |
|---|
| | 197 | P4 xeon 1.7GHz vs UP1100 21264 700MHz |
|---|
| | 198 | (RedHat's gcc-2.96) |
|---|
| | 199 | {{{ |
|---|
| | 200 | RELATIVE TIMES .......... |
|---|
| | 201 | TEST NAME |
|---|
| | 202 | |
|---|
| | 203 | -O2 -O2 |
|---|
| | 204 | --------- --- --- |
|---|
| | 205 | A000091 1.00 1.47 |
|---|
| | 206 | A000092 1.00 2.73 |
|---|
| | 207 | A000094a 1.00 1.90 |
|---|
| | 208 | A000094b 1.00 1.79 |
|---|
| | 209 | A000094c 1.00 1.39 |
|---|
| | 210 | |
|---|
| | 211 | A000094d 1.00 1.44 |
|---|
| | 212 | A000094e 1.00 1.27 |
|---|
| | 213 | A000094f 1.00 2.24 |
|---|
| | 214 | A000094g 1.00 1.24 |
|---|
| | 215 | A000094h 1.00 1.28 |
|---|
| | 216 | |
|---|
| | 217 | A000094i 1.00 1.62 |
|---|
| | 218 | A000094j 1.00 1.40 |
|---|
| | 219 | A000094k 1.00 1.17 |
|---|
| | 220 | B000002b 1.00 7.20 |
|---|
| | 221 | B000003b 1.00 5.23 |
|---|
| | 222 | |
|---|
| | 223 | B000004b 1.00 9.06 |
|---|
| | 224 | B000010 1.00 1.08 |
|---|
| | 225 | B000011 1.00 2.36 |
|---|
| | 226 | B000013 1.00 1.60 |
|---|
| | 227 | D000001 1.00 1.04 |
|---|
| | 228 | |
|---|
| | 229 | D000002 1.00 2.19 |
|---|
| | 230 | D000003 1.00 1.04 |
|---|
| | 231 | D000004 1.00 2.16 |
|---|
| | 232 | D000005 1.00 2.46 |
|---|
| | 233 | D000006 1.00 2.37 |
|---|
| | 234 | |
|---|
| | 235 | E000001 1.00 1.80 |
|---|
| | 236 | E000002 1.00 1.63 |
|---|
| | 237 | E000003 1.00 2.76 |
|---|
| | 238 | E000004 1.00 3.20 |
|---|
| | 239 | E000007 1.00 3.90 |
|---|
| | 240 | |
|---|
| | 241 | E000008 1.00 2.86 |
|---|
| | 242 | F000001 1.00 inf |
|---|
| | 243 | F000002 1.00 3.33 |
|---|
| | 244 | F000003 1.00 -- |
|---|
| | 245 | F000004 1.00 4.76 |
|---|
| | 246 | |
|---|
| | 247 | F000005 1.00 2.05 |
|---|
| | 248 | F000006 1.00 2.77 |
|---|
| | 249 | F000007 1.00 8.29 |
|---|
| | 250 | F000008 1.00 0.92 |
|---|
| | 251 | G000001 1.00 1.02 |
|---|
| | 252 | |
|---|
| | 253 | G000002 1.00 1.65 |
|---|
| | 254 | G000003 1.00 10.26 |
|---|
| | 255 | G000004 1.00 3.11 |
|---|
| | 256 | G000005 1.00 1.05 |
|---|
| | 257 | G000006 1.00 2.94 |
|---|
| | 258 | |
|---|
| | 259 | G000007 1.00 0.94 |
|---|
| | 260 | H000001 1.00 1.13 |
|---|
| | 261 | H000002 1.00 1.55 |
|---|
| | 262 | H000003 1.00 1.37 |
|---|
| | 263 | H000004 1.00 2.88 |
|---|
| | 264 | |
|---|
| | 265 | H000005 1.00 -- |
|---|
| | 266 | H000006 1.00 0.49 |
|---|
| | 267 | H000007 1.00 0.26 |
|---|
| | 268 | H000008 1.00 8.58 |
|---|
| | 269 | H000009 1.00 0.95 |
|---|
| | 270 | |
|---|
| | 271 | L000001 1.00 2.10 |
|---|
| | 272 | L000002 1.00 2.07 |
|---|
| | 273 | L000003 1.00 1.80 |
|---|
| | 274 | L000004 1.00 3.80 |
|---|
| | 275 | O000001a 1.00 3.24 |
|---|
| | 276 | |
|---|
| | 277 | O000001b 1.00 3.32 |
|---|
| | 278 | O000002a 1.00 6.22 |
|---|
| | 279 | O000002b 1.00 5.13 |
|---|
| | 280 | O000003a 1.00 1.67 |
|---|
| | 281 | O000003b 1.00 1.50 |
|---|
| | 282 | |
|---|
| | 283 | O000004a 1.00 0.47 |
|---|
| | 284 | O000004b 1.00 0.40 |
|---|
| | 285 | O000005a 1.00 20.60 |
|---|
| | 286 | O000005b 1.00 5.87 |
|---|
| | 287 | O000006a 1.00 3.28 |
|---|
| | 288 | |
|---|
| | 289 | O000006b 1.00 3.13 |
|---|
| | 290 | O000007a 1.00 1.20 |
|---|
| | 291 | O000007b 1.00 1.70 |
|---|
| | 292 | O000008a 1.00 0.72 |
|---|
| | 293 | O000008b 1.00 0.41 |
|---|
| | 294 | |
|---|
| | 295 | O000009a 1.00 1.35 |
|---|
| | 296 | O000009b 1.00 1.61 |
|---|
| | 297 | O000010a 1.00 0.75 |
|---|
| | 298 | O000010b 1.00 1.43 |
|---|
| | 299 | O000011a 1.00 0.14 |
|---|
| | 300 | |
|---|
| | 301 | O000011b 1.00 0.25 |
|---|
| | 302 | O000012a 1.00 0.25 |
|---|
| | 303 | O000012b 1.00 0.61 |
|---|
| | 304 | P000001 1.00 0.64 |
|---|
| | 305 | P000002 1.00 1.57 |
|---|
| | 306 | |
|---|
| | 307 | P000003 1.00 1.78 |
|---|
| | 308 | P000004 1.00 inf |
|---|
| | 309 | P000005 1.00 2.66 |
|---|
| | 310 | P000006 1.00 1.99 |
|---|
| | 311 | P000007 1.00 2.06 |
|---|
| | 312 | |
|---|
| | 313 | P000008 1.00 2.76 |
|---|
| | 314 | P000010 1.00 1.34 |
|---|
| | 315 | P000011 1.00 3.23 |
|---|
| | 316 | P000012 1.00 0.24 |
|---|
| | 317 | P000013 1.00 0.23 |
|---|
| | 318 | |
|---|
| | 319 | P000020 1.00 1.70 |
|---|
| | 320 | P000021 1.00 34.29 |
|---|
| | 321 | P000022 1.00 14.16 |
|---|
| | 322 | P000023 1.00 1.00 |
|---|
| | 323 | S000001a 1.00 1.32 |
|---|
| | 324 | |
|---|
| | 325 | S000001b 1.00 4.43 |
|---|
| | 326 | S000002a 1.00 2.65 |
|---|
| | 327 | S000002b 1.00 2.70 |
|---|
| | 328 | S000003a 1.00 -- |
|---|
| | 329 | S000003b 1.00 -- |
|---|
| | 330 | |
|---|
| | 331 | S000004a 1.00 -- |
|---|
| | 332 | S000004b 1.00 -- |
|---|
| | 333 | S000005a 1.00 1.22 |
|---|
| | 334 | S000005b 1.00 1.21 |
|---|
| | 335 | S000005c 1.00 1.71 |
|---|
| | 336 | |
|---|
| | 337 | S000005d 1.00 1.19 |
|---|
| | 338 | S000005e 1.00 1.49 |
|---|
| | 339 | S000005f 1.00 1.20 |
|---|
| | 340 | S000005g 1.00 1.49 |
|---|
| | 341 | S000005h 1.00 1.47 |
|---|
| | 342 | |
|---|
| | 343 | S000005i 1.00 1.54 |
|---|
| | 344 | S000005j 1.00 1.48 |
|---|
| | 345 | S000005k 1.00 1.82 |
|---|
| | 346 | S000005l 1.00 1.48 |
|---|
| | 347 | S000005m 1.00 1.91 |
|---|
| | 348 | }}} |
|---|
| | 349 | |
|---|
| | 350 | |
|---|
| | 351 | |
|---|
| | 352 | |
|---|
| | 353 | |
|---|
| | 354 | P4 xeon 1.7GHz vs UP1100 21264 700MHz |
|---|
| | 355 | (RedHat's gcc-2.96 vs Compaq's cxx) |
|---|
| | 356 | |
|---|
| | 357 | {{{ |
|---|
| | 358 | RELATIVE TIMES .......... |
|---|
| | 359 | TEST NAME |
|---|
| | 360 | |
|---|
| | 361 | -O2 -O2 |
|---|
| | 362 | --------- --- --- |
|---|
| | 363 | A000091 1.00 1.32 |
|---|
| | 364 | A000092 1.00 0.82 |
|---|
| | 365 | A000094a 1.00 2.76 |
|---|
| | 366 | A000094b 1.00 2.32 |
|---|
| | 367 | A000094c 1.00 1.92 |
|---|
| | 368 | |
|---|
| | 369 | A000094d 1.00 0.82 |
|---|
| | 370 | A000094e 1.00 1.05 |
|---|
| | 371 | A000094f 1.00 2.13 |
|---|
| | 372 | A000094g 1.00 1.17 |
|---|
| | 373 | A000094h 1.00 1.12 |
|---|
| | 374 | |
|---|
| | 375 | A000094i 1.00 2.57 |
|---|
| | 376 | A000094j 1.00 0.43 |
|---|
| | 377 | A000094k 1.00 0.78 |
|---|
| | 378 | B000002b 1.00 1.50 |
|---|
| | 379 | B000003b 1.00 1.24 |
|---|
| | 380 | |
|---|
| | 381 | B000004b 1.00 1.86 |
|---|
| | 382 | B000010 1.00 0.20 |
|---|
| | 383 | B000011 1.00 0.85 |
|---|
| | 384 | B000013 1.00 0.81 |
|---|
| | 385 | D000001 1.00 1.09 |
|---|
| | 386 | |
|---|
| | 387 | D000002 1.00 1.42 |
|---|
| | 388 | D000003 1.00 1.15 |
|---|
| | 389 | D000004 1.00 1.43 |
|---|
| | 390 | D000005 1.00 0.78 |
|---|
| | 391 | D000006 1.00 1.51 |
|---|
| | 392 | |
|---|
| | 393 | E000001 1.00 0.26 |
|---|
| | 394 | E000002 1.00 0.15 |
|---|
| | 395 | E000003 1.00 0.15 |
|---|
| | 396 | E000004 1.00 0.14 |
|---|
| | 397 | E000007 1.00 0.08 |
|---|
| | 398 | |
|---|
| | 399 | E000008 1.00 2.04 |
|---|
| | 400 | F000001 1.00 inf |
|---|
| | 401 | F000002 1.00 2.27 |
|---|
| | 402 | F000003 1.00 -- |
|---|
| | 403 | F000004 1.00 22.95 |
|---|
| | 404 | |
|---|
| | 405 | F000005 1.00 2.93 |
|---|
| | 406 | F000006 1.00 -- |
|---|
| | 407 | F000007 1.00 2.53 |
|---|
| | 408 | F000008 1.00 -- |
|---|
| | 409 | G000001 1.00 0.95 |
|---|
| | 410 | |
|---|
| | 411 | G000002 1.00 0.60 |
|---|
| | 412 | G000003 1.00 6.88 |
|---|
| | 413 | G000004 1.00 2.45 |
|---|
| | 414 | G000005 1.00 1.39 |
|---|
| | 415 | G000006 1.00 3.75 |
|---|
| | 416 | |
|---|
| | 417 | G000007 1.00 0.80 |
|---|
| | 418 | H000001 1.00 0.75 |
|---|
| | 419 | H000002 1.00 0.98 |
|---|
| | 420 | H000003 1.00 0.72 |
|---|
| | 421 | H000004 1.00 0.85 |
|---|
| | 422 | |
|---|
| | 423 | H000005 1.00 -- |
|---|
| | 424 | H000006 1.00 1.93 |
|---|
| | 425 | H000007 1.00 0.13 |
|---|
| | 426 | H000008 1.00 2.36 |
|---|
| | 427 | H000009 1.00 0.41 |
|---|
| | 428 | |
|---|
| | 429 | L000001 1.00 -- |
|---|
| | 430 | L000002 1.00 -- |
|---|
| | 431 | L000003 1.00 -- |
|---|
| | 432 | L000004 1.00 0.92 |
|---|
| | 433 | O000001a 1.00 2.89 |
|---|
| | 434 | |
|---|
| | 435 | O000001b 1.00 3.06 |
|---|
| | 436 | O000002a 1.00 0.53 |
|---|
| | 437 | O000002b 1.00 0.47 |
|---|
| | 438 | O000003a 1.00 0.76 |
|---|
| | 439 | O000003b 1.00 0.75 |
|---|
| | 440 | |
|---|
| | 441 | O000004a 1.00 -- |
|---|
| | 442 | O000004b 1.00 -- |
|---|
| | 443 | O000005a 1.00 1.45 |
|---|
| | 444 | O000005b 1.00 1.66 |
|---|
| | 445 | O000006a 1.00 2.86 |
|---|
| | 446 | |
|---|
| | 447 | O000006b 1.00 0.88 |
|---|
| | 448 | O000007a 1.00 0.70 |
|---|
| | 449 | O000007b 1.00 0.89 |
|---|
| | 450 | O000008a 1.00 -- |
|---|
| | 451 | O000008b 1.00 -- |
|---|
| | 452 | |
|---|
| | 453 | O000009a 1.00 0.79 |
|---|
| | 454 | O000009b 1.00 0.91 |
|---|
| | 455 | O000010a 1.00 0.31 |
|---|
| | 456 | O000010b 1.00 -- |
|---|
| | 457 | O000011a 1.00 -- |
|---|
| | 458 | |
|---|
| | 459 | O000011b 1.00 -- |
|---|
| | 460 | O000012a 1.00 0.24 |
|---|
| | 461 | O000012b 1.00 0.47 |
|---|
| | 462 | P000001 1.00 0.05 |
|---|
| | 463 | P000002 1.00 77.00 |
|---|
| | 464 | |
|---|
| | 465 | P000003 1.00 77.87 |
|---|
| | 466 | P000004 1.00 inf |
|---|
| | 467 | P000005 1.00 96.87 |
|---|
| | 468 | P000006 1.00 65.01 |
|---|
| | 469 | P000007 1.00 64.51 |
|---|
| | 470 | |
|---|
| | 471 | P000008 1.00 47.39 |
|---|
| | 472 | P000010 1.00 34.26 |
|---|
| | 473 | P000011 1.00 54.41 |
|---|
| | 474 | P000012 1.00 2.12 |
|---|
| | 475 | P000013 1.00 1.17 |
|---|
| | 476 | |
|---|
| | 477 | P000020 1.00 65.23 |
|---|
| | 478 | P000021 1.00 250.48 |
|---|
| | 479 | P000022 1.00 289.11 |
|---|
| | 480 | P000023 1.00 54.53 |
|---|
| | 481 | S000001a 1.00 2.72 |
|---|
| | 482 | |
|---|
| | 483 | S000001b 1.00 3.74 |
|---|
| | 484 | S000002a 1.00 1.53 |
|---|
| | 485 | S000002b 1.00 1.73 |
|---|
| | 486 | S000003a 1.00 1.74 |
|---|
| | 487 | S000003b 1.00 1.80 |
|---|
| | 488 | |
|---|
| | 489 | S000004a 1.00 0.07 |
|---|
| | 490 | S000004b 1.00 1.22 |
|---|
| | 491 | S000005a 1.00 1.22 |
|---|
| | 492 | S000005b 1.00 1.25 |
|---|
| | 493 | S000005c 1.00 1.66 |
|---|
| | 494 | |
|---|
| | 495 | S000005d 1.00 0.85 |
|---|
| | 496 | S000005e 1.00 1.49 |
|---|
| | 497 | S000005f 1.00 1.20 |
|---|
| | 498 | S000005g 1.00 1.49 |
|---|
| | 499 | S000005h 1.00 1.49 |
|---|
| | 500 | |
|---|
| | 501 | S000005i 1.00 1.55 |
|---|
| | 502 | S000005j 1.00 1.49 |
|---|
| | 503 | S000005k 1.00 1.82 |
|---|
| | 504 | S000005l 1.00 1.49 |
|---|
| | 505 | S000005m 1.00 1.91 |
|---|
| | 506 | |
|---|
| | 507 | |
|---|
| | 508 | }}} |
|---|
| | 509 | |
|---|
| | 510 | |
|---|
| | 511 | |
|---|
| | 512 | |
|---|
| | 513 | |
|---|
| | 514 | |
|---|
| | 515 | |
|---|
| | 516 | == stepanov bench == |
|---|
| | 517 | |
|---|
| | 518 | {{{ |
|---|
| | 519 | To: ecell3-devel@bioinformatics.org, ecell-devel@eg.e-cell.org |
|---|
| | 520 | Subject: [Ecell3-devel] C++ compiler benchmark |
|---|
| | 521 | From: Kouichi Takahashi <shafi@e-cell.org> |
|---|
| | 522 | Delivered-To: shafi@e-cell.org |
|---|
| | 523 | Message-Id: <200102161516.AAA11071@mail.sfc.keio.ac.jp> |
|---|
| | 524 | Date: Sat, 17 Feb 2001 00:19:47 +0900 |
|---|
| | 525 | User-Agent: Wanderlust/2.4.0 (Rio) SEMI/1.13.7 (Awazu) CLIME/1.13.6 |
|---|
| | 526 | (Ãæ¥Î¾±) MULE XEmacs/21.1 (patch 12) (Channel Islands) |
|---|
| | 527 | (i386-redhat-linux) |
|---|
| | 528 | Organization: E-CELL Project |
|---|
| | 529 | MIME-Version: 1.0 (generated by SEMI 1.13.7 - "Awazu") |
|---|
| | 530 | X-Dispatcher: imput version 20000414(IM141) |
|---|
| | 531 | X-Mailman-Version: 1.0b10 |
|---|
| | 532 | X-BeenThere: ecell3-devel@bioinformatics.org |
|---|
| | 533 | X-UIDL: d2490be6543d7278ffad9be0f7449751 |
|---|
| | 534 | |
|---|
| | 535 | hi there ecell developers, |
|---|
| | 536 | |
|---|
| | 537 | |
|---|
| | 538 | I did a simple C++ benchmarking to find out answers to the following |
|---|
| | 539 | two questions: |
|---|
| | 540 | |
|---|
| | 541 | - Should ecell3 continue to support and be tested on Linux/alpha? |
|---|
| | 542 | - If so, should ecell3 support cxx, Compaq's C++ compiler? |
|---|
| | 543 | |
|---|
| | 544 | |
|---|
| | 545 | Although alpha is known to beat IA32 completely if it comes to simple |
|---|
| | 546 | numerics (like LAPAK in fortran), it's performance in C++ was |
|---|
| | 547 | uncertain. Unlike fortran, intensive pointer operations and language |
|---|
| | 548 | level abstractions characterize C++. |
|---|
| | 549 | |
|---|
| | 550 | I've used KAI's version of Stepanov Benchmark(Version 1.2), which is |
|---|
| | 551 | available at ftp://ftp.kai.com/pub/benchmarks/, to measure |
|---|
| | 552 | that kinds of performance. |
|---|
| | 553 | |
|---|
| | 554 | I ran the bench on these two machines: |
|---|
| | 555 | |
|---|
| | 556 | - dual alpha 21264A 677MHz, 2GB RAM (baobab.e-cell.org) |
|---|
| | 557 | egcs-1.1.2 and cxx-6.3.9.5 |
|---|
| | 558 | - Pentium-III 850MHz, 768MB RAM (oak.e-cell.org) |
|---|
| | 559 | gcc-2.96 (RH7) |
|---|
| | 560 | - Celelon 550MHz (potos.e-cell.org) |
|---|
| | 561 | |
|---|
| | 562 | (baobab is a master node of E-CELL Project's primary beowulf. |
|---|
| | 563 | oak is our secondary computation server.) |
|---|
| | 564 | |
|---|
| | 565 | compilers: |
|---|
| | 566 | |
|---|
| | 567 | - egcs-1.1.2, gcc-2.95.2 and 2.96 (-O3) |
|---|
| | 568 | - cxx 6.3.9.5 (-fast -lcpml -O3) |
|---|
| | 569 | |
|---|
| | 570 | |
|---|
| | 571 | The benchmark consists of 12 variations of simple for loops. |
|---|
| | 572 | test 0 is a simple fortran-like one and 1-12 are STL ones. |
|---|
| | 573 | (test1: light abstraction <-> test 12: heavy abstraction) |
|---|
| | 574 | |
|---|
| | 575 | |
|---|
| | 576 | Summary of results: |
|---|
| | 577 | |
|---|
| | 578 | |
|---|
| | 579 | - alpha + cxx is incredibly fast. |
|---|
| | 580 | (3.5x faster than alpha + egcs-1.1.2) |
|---|
| | 581 | |
|---|
| | 582 | - g++ is not good at alpha |
|---|
| | 583 | |
|---|
| | 584 | - gcc 2.95 is fairly good at STL |
|---|
| | 585 | (abstraction penalty is 0.83, which means that STL loops run faster |
|---|
| | 586 | than the raw for loop.) |
|---|
| | 587 | |
|---|
| | 588 | - RH7's gcc 2.96 is disappointing at STL (abstraction penalty: 1.48) |
|---|
| | 589 | (I suspect this is a temporary regression and will be corrected in |
|---|
| | 590 | gcc-3.0, since they are using the bench for code quality control.) |
|---|
| | 591 | |
|---|
| | 592 | |
|---|
| | 593 | Conclusions: |
|---|
| | 594 | |
|---|
| | 595 | - platform: support alpha, definitely with cxx |
|---|
| | 596 | |
|---|
| | 597 | - compiler: cxx or gcc-2.95 |
|---|
| | 598 | (wait for gcc-3.0 and run the bench again) |
|---|
| | 599 | |
|---|
| | 600 | |
|---|
| | 601 | And don't forget, this is just a benchmark on C++ pointer abstraction |
|---|
| | 602 | using simple for loops. Undoubtedly alpha conquers IA32 in more |
|---|
| | 603 | numerically intensive functions like Substance::transit() and |
|---|
| | 604 | Reactor::react() in ecell. |
|---|
| | 605 | |
|---|
| | 606 | |
|---|
| | 607 | |
|---|
| | 608 | |
|---|
| | 609 | alpha + cxx: |
|---|
| | 610 | --------------------------------------------------- |
|---|
| | 611 | test absolute additions ratio with |
|---|
| | 612 | number time per second test0 |
|---|
| | 613 | |
|---|
| | 614 | 0 0.09sec 556.84M 1.00 |
|---|
| | 615 | 1 0.09sec 582.15M 0.96 |
|---|
| | 616 | 2 0.09sec 582.15M 0.96 |
|---|
| | 617 | 3 0.09sec 582.15M 0.96 |
|---|
| | 618 | 4 0.09sec 582.15M 0.96 |
|---|
| | 619 | 5 0.09sec 582.15M 0.96 |
|---|
| | 620 | 6 0.09sec 582.15M 0.96 |
|---|
| | 621 | 7 0.09sec 582.15M 0.96 |
|---|
| | 622 | 8 0.09sec 582.15M 0.96 |
|---|
| | 623 | 9 0.09sec 582.15M 0.96 |
|---|
| | 624 | 10 0.09sec 582.15M 0.96 |
|---|
| | 625 | 11 0.09sec 582.15M 0.96 |
|---|
| | 626 | 12 0.09sec 582.15M 0.96 |
|---|
| | 627 | mean: 0.09sec 580.17M 0.96 |
|---|
| | 628 | |
|---|
| | 629 | Total absolute time: 1.12 sec |
|---|
| | 630 | |
|---|
| | 631 | Abstraction Penalty: 0.96 |
|---|
| | 632 | --------------------------------------------------- |
|---|
| | 633 | |
|---|
| | 634 | |
|---|
| | 635 | |
|---|
| | 636 | alpha + egcs-1.1.2 |
|---|
| | 637 | --------------------------------------------------- |
|---|
| | 638 | test absolute additions ratio with |
|---|
| | 639 | number time per second test0 |
|---|
| | 640 | |
|---|
| | 641 | 0 0.30sec 165.79M 1.00 |
|---|
| | 642 | 1 0.30sec 166.33M 1.00 |
|---|
| | 643 | 2 0.30sec 165.79M 1.00 |
|---|
| | 644 | 3 0.30sec 166.33M 1.00 |
|---|
| | 645 | 4 0.30sec 165.79M 1.00 |
|---|
| | 646 | 5 0.30sec 166.33M 1.00 |
|---|
| | 647 | 6 0.30sec 165.79M 1.00 |
|---|
| | 648 | 7 0.30sec 166.33M 1.00 |
|---|
| | 649 | 8 0.30sec 165.79M 1.00 |
|---|
| | 650 | 9 0.30sec 166.33M 1.00 |
|---|
| | 651 | 10 0.30sec 166.33M 1.00 |
|---|
| | 652 | 11 0.30sec 166.33M 1.00 |
|---|
| | 653 | 12 0.30sec 166.33M 1.00 |
|---|
| | 654 | mean: 0.30sec 166.12M 1.00 |
|---|
| | 655 | |
|---|
| | 656 | Total absolute time: 3.91 sec |
|---|
| | 657 | |
|---|
| | 658 | Abstraction Penalty: 1.00 |
|---|
| | 659 | --------------------------------------------------- |
|---|
| | 660 | |
|---|
| | 661 | |
|---|
| | 662 | Pentium III 850MHz + gcc-2.96(RH7) |
|---|
| | 663 | --------------------------------------------------- |
|---|
| | 664 | test absolute additions ratio with |
|---|
| | 665 | number time per second test0 |
|---|
| | 666 | |
|---|
| | 667 | 0 0.17sec 294.12M 1.00 |
|---|
| | 668 | 1 0.20sec 250.00M 1.18 |
|---|
| | 669 | 2 0.18sec 277.78M 1.06 |
|---|
| | 670 | 3 0.26sec 192.31M 1.53 |
|---|
| | 671 | 4 0.26sec 192.31M 1.53 |
|---|
| | 672 | 5 0.26sec 192.31M 1.53 |
|---|
| | 673 | 6 0.26sec 192.31M 1.53 |
|---|
| | 674 | 7 0.26sec 192.31M 1.53 |
|---|
| | 675 | 8 0.26sec 192.31M 1.53 |
|---|
| | 676 | 9 0.26sec 192.31M 1.53 |
|---|
| | 677 | 10 0.26sec 192.31M 1.53 |
|---|
| | 678 | 11 0.35sec 142.86M 2.06 |
|---|
| | 679 | 12 0.36sec 138.89M 2.12 |
|---|
| | 680 | mean: 0.25sec 198.81M 1.48 |
|---|
| | 681 | |
|---|
| | 682 | Total absolute time: 3.34 sec |
|---|
| | 683 | |
|---|
| | 684 | Abstraction Penalty: 1.48 |
|---|
| | 685 | --------------------------------------------------- |
|---|
| | 686 | |
|---|
| | 687 | |
|---|
| | 688 | Celeron 550MHz + gcc-2.95.2 |
|---|
| | 689 | --------------------------------------------------- |
|---|
| | 690 | test absolute additions ratio with |
|---|
| | 691 | number time per second test0 |
|---|
| | 692 | |
|---|
| | 693 | 0 0.37sec 135.14M 1.00 |
|---|
| | 694 | 1 0.31sec 161.29M 0.84 |
|---|
| | 695 | 2 0.30sec 166.67M 0.81 |
|---|
| | 696 | 3 0.30sec 166.67M 0.81 |
|---|
| | 697 | 4 0.30sec 166.67M 0.81 |
|---|
| | 698 | 5 0.30sec 166.67M 0.81 |
|---|
| | 699 | 6 0.30sec 166.67M 0.81 |
|---|
| | 700 | 7 0.30sec 166.67M 0.81 |
|---|
| | 701 | 8 0.30sec 166.67M 0.81 |
|---|
| | 702 | 9 0.30sec 166.67M 0.81 |
|---|
| | 703 | 10 0.30sec 166.67M 0.81 |
|---|
| | 704 | 11 0.30sec 166.67M 0.81 |
|---|
| | 705 | 12 0.30sec 166.67M 0.81 |
|---|
| | 706 | mean: 0.31sec 163.59M 0.83 |
|---|
| | 707 | |
|---|
| | 708 | Total absolute time: 3.98 sec |
|---|
| | 709 | |
|---|
| | 710 | Abstraction Penalty: 0.83 |
|---|
| | 711 | --------------------------------------------------- |
|---|
| | 712 | |
|---|
| | 713 | |
|---|
| | 714 | |
|---|
| | 715 | |
|---|
| | 716 | ----- |
|---|
| | 717 | Kouichi Takahashi E-CELL Project, |
|---|
| | 718 | email: shafi@sfc.keio.ac.jp Institute for Advanced Biosciences |
|---|
| | 719 | shafi@e-cell.org Keio Univ. SFC |
|---|
| | 720 | |
|---|
| | 721 | _______________________________________________ |
|---|
| | 722 | Ecell3-devel maillist - Ecell3-devel@bioinformatics.org |
|---|
| | 723 | http://bioinformatics.org/mailman/listinfo/ecell3-devel |
|---|
| | 724 | |
|---|
| | 725 | |
|---|
| | 726 | |
|---|
| | 727 | |
|---|
| | 728 | }}} |