Performance/WhatToTest
From Adobe Open Source Wiki
What things need to be tested as part of this benchmark?
Contents |
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
Optimizations
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