Revision as of 21:28, 5 May 2008

Release 1 - May 5, 2008

Known Problems

Some Linux distributions have incomplete MACH/gcc headers. I need a simple way to determine whether they have the TR1 headers or not. Unfortunately, I don't have any of those distributions.
Related code is now commented out

Files

loop_unroll.cpp

Test to see if compilers will correctly unroll loops to hide instruction latency. Some compilers have problems expanding the templates, and most compilers have problems correctly unrolling the loops for best performance.

simple_types_loop_invariant.cpp

A test to see if the compiler will move loop invariant calculations out of the loop. Most compilers have room for improvement.

stepanov_abstraction.cpp

An expanded version of the original test, answering "what happens to performance when I wrap a value in curly braces?" Almost all compilers do well on the original summation tests, but they don't do nearly so well on simple sort routines using the same abstractions.

machine.cpp

A utility program to print out information about the compiler version, OS, and machine environment - because it is nice to know which build of your compiler generated a particular report, and which of the 30 machines in your lab that it was run on.

benchmark_algorithms.h

Templated algorithms shared by several test files.

benchmark_results.h

Shared result reporting and formatting functions for all tests, must work in C and C++.

benchmark_shared_tests.h

Templated test functions shared by several test files.

benchmark_stdint.h

Standard type definitions, required because some compilers still have not picked up C99 standard headers.

benchmark_timer.h

Shared timer function for all tests, must work in C and C++.

makefile

Make information for Unix based OSes. "make report" to build all binaries and start a benchmark run.

makefile.nt

Make information for Windows. "nmake -f makefile.nt report" (in a shell/command prompt with the appropriate compiler variables set) to build all binaries and start a benchmark run.