Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Micro-benchmark for highlithing the performance impact of denormalized floating point numbers
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.


This is a small micro-benchmark to highlight performance impact of denormalized floating point values 
on program performance. The code and the two binary input files (checkpointLarge and chackpointSmall) 
have been extracted from RAxML. We stumbled over this problem when observing a performance bug 
(same input data size, but significantly different run-times) when running the Evolutionary Placement algorithm.

The computations are just a for-loop doing some floating point operations over a vector (an ancetsral phylogenetic
probability vector). 

The checkpoinLarge input data generates denormalized floating point values and can therefore run longer 
if the exceptions are not ignored.

There are two Makefiles:

Makefile.micro will generate an executable called micro that does not ignore floating point numbers.

Makefile.micro-ignore will generate an executable that ignores these exceptions and therefore 
requires almost the same execution time for the two input datasets.

Example invocations on my laptop Intel(R) Core(TM) i7-2620M CPU @ 2.70GHz running Ubuntu and using gcc 4.5.2.
The output is the run time for computing these vectors in seconds.

stamatak@exelixis:~/Desktop/GIT/denormalizedFloatingPointNumbers$ ./micro
Large: 0.051161
Small: 0.016829
stamatak@exelixis:~/Desktop/GIT/denormalizedFloatingPointNumbers$ ./micro-ignore 
Large: 0.029944
Small: 0.017007

Please also have a look at the following paper for background reading:

Björndalen J., Anshus O. Trusting floating point benchmarks-are your benchmarks really data-independent? 
Applied Parallel Computing. State of the art in Scientific Computing 2010; pp 178-188, Springer.

Something went wrong with that request. Please try again.