boost::signal performance in boost 1.36 and VS2005
Hello, 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
participants (1)
-
Hansi