|
Boost : |
Subject: [boost] boost::signal poor performance
From: Hansi (hansipet_at_[hidden])
Date: 2008-09-22 02:14:11
Hello,
I have posted this already to the user list, maybe wrong forum...
I have made now a small test and I don't know if I make something wrong.
I have the following performance comparsion between a boost::function
and a boost::signal.
Okay, I know that boost::signal has a lot of more functionality and for
that it is for sure slower than boost::function. But 100times slower?
May be I do something wrong?
On my pc I have for boost::function a runtime of 728ms and for
boost::signals a runtime of 64128ms
There is one slot used for signals.
Can anyone give me some hint what I do wrong?
my test program was:
class TestBind
{
public:
int counter;
void OnEventReceived(char b)
{
counter++;
}
};
class TestSignal
{
public:
int counter;
void OnEventReceived(char b)
{
counter++;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
TestBind testBind;
PerformanceCounter timer;
boost::function<void (char)> f =
boost::bind(&TestBind::OnEventReceived,&testBind,_1);
for(int i = 0; i < 100000000; i++)
{
f('a');
}
TestSignal testSignal;
boost::signal<void (char)> sig;
sig.connect(boost::bind(&TestSignal::OnEventReceived,&testSignal,_1));;
for(int i = 0; i < 100000000; i++)
{
sig('a');
}
}
Best regards
Hansjörg
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk