$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Neal Coombes (nealc_at_[hidden])
Date: 2005-01-19 13:13:40
Neal Coombes wrote:
> I also noticed pretty drastic memory performance.
Just enjoyed a long weekend so I couldn't post this sooner. I've
created a small test application that does absolutely nothing but create
signals (a million of them). If passed in "boost", "sigc" or "lite" it
will create a millions signals of the appropriate type. boost and sigc
I think everyone knows about. The lite implementation is the
implementation posted to this list by Jody Hagins on 11/30/04 titled
"Re: [signals] Performance".
The results I've gotten (just from top) are:
boost: 329 MB
sigc: 17 MB
lite: 41 MB
uname -a
SunOS dusty 5.9 Generic_112234-08 i86pc i386 i86pc
Please keep me posted as to if/when this gets fixed. I'm somewhat
disappointed that I have to move to sigc and would like to move back to
boost asap.
Thanks,
Neal
----
#include <iostream>
#include <string>
#include <boost/signal.hpp>
#include <sigc++/signal.h>
#if defined (LITE_SIGNALS)
#include "Signal.hpp"
void lite_test();
std::string const lite_arg("lite");
#endif
using namespace std;
string const boost_arg("boost");
string const sigc_arg("sigc");
int const NUM_SIGNALS = 1000000;
void boost_test();
void sigc_test();
int main(int argc, char **argv)
{
if(argc == 2) {
if(sigc_arg == argv[1])
sigc_test();
else if(boost_arg == argv[1])
boost_test();
#if defined (LITE_SIGNALS)
else if(lite_arg == argv[1])
lite_test();
#endif
}
}
void boost_test()
{
boost::signal<void ()> *sig;
int i = 0;
for(; i < NUM_SIGNALS; ++i) {
sig = new boost::signal<void ()>;
}
cin >> i;
}
void sigc_test()
{
sigc::signal<void> *sig;
int i = 0;
for(; i < NUM_SIGNALS; ++i) {
sig = new sigc::signal<void>;
}
cin >> i;
}
#if defined (LITE_SIGNALS)
void lite_test()
{
lite::signals::Signal<void ()> *sig;
int i = 0;
for(; i < NUM_SIGNALS; ++i) {
sig = new lite::signals::Signal<void ()>;
}
cin >> i;
}
#endif