Boost logo

Boost :

Subject: Re: [boost] proposal - Statistically robust function timing for performance decisions.
From: Edward Grace (ej.grace_at_[hidden])
Date: 2009-07-27 06:34:50

Dear Mathias,

On 19 Jul 2009, at 22:15, Mathias Gaunard wrote:

> Edward Grace wrote:
>> I modified the example to force side-effects by making the
>> variables in
>> the loop global. Consequently it now doesn't get optimised away -
>> compilers sure are clever these days.
> Rather, I think you should use volatile or something, which is
> guaranteed by the C++ standard not be optimized out.

Obtaining a reliable 'fire and forget' solution to this problem is
quite important. I have played a little with boost::bind - through
the way it forwards the arguments I think the side-effect problem is

With reference to the timer code:

available here:

The attached code is timing a pair of trivial functions that simply
multiply or divide two numbers and compare to see which is fastest.
Clearly this will be data dependent. On my platform (Intel - Mac) as
expected multiplication is generally faster than division.

$ ./example_binding
Enter a number: 4
Enter another: 8

When evaluating 4*0.125 vs. 4/8
There is no practial difference between division and multiplication

The difference is : 0

$ ./example_binding
Enter a number: 5
Enter another: 7

When evaluating 5*0.142857 vs. 5/7
Multiplication is quicker than division by around: 112.795%

The difference is : 1.11022e-16

Any comments?


Boost list run by bdawes at, gregod at, cpdaniel at, john at