From wiki
Revision as of 01:00, 6 May 2008 by ChrisCox (Talk | contribs) (Runtime Support)

Jump to: navigation, search

What things need to be tested as part of this benchmark?

Fundamental Concepts

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)

Language Concepts

  • abstraction
  • inheritance
  • function calls
  • exceptions
  • rtti
  • function objects
  • template instantiation
  • constructors
    • Are empty constructors correctly optimized away?

Simple Idioms

These are building blocks, with more than one way to express them. These are also usually found in headers like "inlines.h", "math_utils.h", etc.

  • swap
  • absolute value
  • min/max
  • switch versus if/else trees
  • pin values to range (max, min combo)
  • rotate bits
  • byte order reversal
  • round up/down
  • round float to int
  • thresholding
  • pointer alignment tests and comparisons

Complex Idioms

Runtime Support

  • allocation / deletion
    • new, delete
    • malloc, free
  • mathlib
  • string manipulation routines
    • strcpy, strchr, strcat, etc.
  • memory routines
    • memcpy, memmove, memset, memcmp, etc.

More Complex Stuff

  • STL containers
  • iostreams


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