What things need to be tested as part of this benchmark?
Most of these can't easily be tested.
- regular types
- basic math
- basic flow control
- dereference (pointer/iterator is a regular type that can be dereferenced)
- type conversion
- performance of type conversions (known to be a problem on certain compilers)
- function calls
- function objects
- template instantiation
- Are empty constructors correctly optimized away?
These are building blocks, with more than one way to express them. These are commonly reused things, usually found in headers like "inlines.h", "math_utils.h", etc.
- absolute value
- switch versus if/else trees
- pin values to range (max, min combo)
- rotate bits
- byte order reversal
- round up/down
- round float to int
- pointer alignment tests and comparisons
- hand coded memcpy, memmove, memset, memcmp
- simple types and user defined types
- arrays and containers
- safe bool cast from a smart pointer
- 1D and 2D
- matrix multiplication
- min/max of a sequence
- summation of a sequence
- sorting a sequence
- reversing a sequence
- rotating members of a sequence
- find/search sequence
- lookup tables
- interleave/deinterleave buffers
- transpose block
- rotate a block +- 90 and 180 degrees
- histogram building
- stack like operations
- bitarrays and manipulations of them
- complex type and template
Runtime and Library Support
- allocation / deletion
- new, delete
- malloc, free
- string manipulation routines
- strcpy, strchr, strcat, etc.
- memory routines
- memcpy, memmove, memset, memcmp, etc.
More Complex Stuff
- STL containers
- STL algorithms
Need to test as many as possible. And this list deserves it's own page.
Conformance to Specification
- user specified swap in STL algorithms
- short circuit evaluation of boolean expressions
- growth policies and complexities of STL containers