Boost logo

Boost :

From: Pavel Vozenilek (pavel_vozenilek_at_[hidden])
Date: 2004-02-14 21:39:08


"Hurd, Matthew" <hurdm_at_[hidden]> wrote

> This is an Intel P43.2 I'm running on now and I'm getting output like:
>
> boost function measurements: median time = 250.698 microseconds
> direct in-line: median time = 250.691 microseconds
>
> You see here I look at the median time for boost function and
> direct-inline and see only a 7 ns difference which is probably smaller
> than I can truly measure I suspect...
>
I wrote my own test (the most simple one, call function/boost::fn
in loop and measuring total time).

The numbers I got give me ~18 microseconds overhead per single
boost::function call (raw call takes ~404 microseconds).

I use Intel C++ 8.0 plugged in VC6 IDE,, release mode,
Athlon XP 2200+, W2K.

/Pavel

------- test (shortened) -----
#define MAX_FN_LOOP 1e5

static double not_empty() {
    static double sum;
    static double i;

    sum = 0.0;
    for (i = 0.0; i < MAX_FN_LOOP ; ++i) {
        sum += i * i;
    }
    return sum;
}

void test1()
{
    DWORD tick1 = GetTickCount();
    double x = 0;
    for (int i = 0; i < 100000; ++i) {
        x += not_empty();
    }
    DWORD tick2 = GetTickCount();
}

void test2()
{
    DWORD tick1 = GetTickCount();
    boost::function< double (void)> fn = &not_empty;
    double x = 0;
    for (int i = 0; i < 100000; ++i) {
        x += fn();
    }
    DWORD tick2 = GetTickCount();
}
----------------------------------

test1() and test2() took each 30-40 seconds.
GetTickCount() resolution is at least 10 milliseconds.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk