1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
#include <log4cplus/logger.h>
#include <log4cplus/configurator.h>
#include <log4cplus/helpers/loglog.h>
#include <log4cplus/helpers/stringhelper.h>
using namespace std;
using namespace log4cplus;
using namespace log4cplus::helpers;
log4cplus::tostream& operator <<(log4cplus::tostream& s, const Time& t)
{
return s << t.sec() << "sec " << t.usec() << "usec";
}
#define LOOP_COUNT 100000
int
main()
{
cout << "Entering main()..." << endl;
PropertyConfigurator::doConfigure(LOG4CPLUS_TEXT("log4cplus.properties"));
Logger root = Logger::getRoot();
try {
Logger logger = Logger::getInstance(LOG4CPLUS_TEXT("testlogger"));
LOG4CPLUS_WARN(root, "Starting test loop....");
Time start = Time::gettimeofday();
tstring msg(LOG4CPLUS_TEXT("This is a WARNING..."));
int i = 0;
for(i=0; i<LOOP_COUNT; ++i) {
LOG4CPLUS_WARN(logger, msg);
}
Time end = Time::gettimeofday();
Time diff = end - start;
LOG4CPLUS_WARN(root, "Logging " << LOOP_COUNT << " took: " << diff << endl);
LOG4CPLUS_WARN(root, "Logging average: " << (diff/LOOP_COUNT) << endl);
start = Time::gettimeofday();
for(i=0; i<LOOP_COUNT; ++i) {
tostringstream buffer;
buffer /*<< "test"*/ << 123122;
tstring tmp = buffer.str();
}
end = Time::gettimeofday();
diff = end - start;
LOG4CPLUS_WARN(root, "tostringstream average: " << (diff/LOOP_COUNT) << endl);
start = Time::gettimeofday();
for(i=0; i<LOOP_COUNT; ++i) {
log4cplus::spi::InternalLoggingEvent e(logger.getName(), log4cplus::WARN_LOG_LEVEL,
msg, 0, 0);
}
end = Time::gettimeofday();
diff = end - start;
LOG4CPLUS_WARN(root, "Creating log " << LOOP_COUNT << " objects took: " << diff);
LOG4CPLUS_WARN(root, "Creating log object average: " << (diff/LOOP_COUNT) << endl);
start = Time::gettimeofday();
for(i=0; i<LOOP_COUNT; ++i) {
log4cplus::spi::InternalLoggingEvent e(logger.getName(), log4cplus::WARN_LOG_LEVEL,
msg, 0, 0);
e.getNDC();
e.getThread();
}
end = Time::gettimeofday();
diff = end - start;
LOG4CPLUS_WARN(root, "Creating FULL log " << LOOP_COUNT << " objects took: " << diff);
LOG4CPLUS_WARN(root, "Creating FULL log object average: " << (diff/LOOP_COUNT) << endl);
start = Time::gettimeofday();
for(i=0; i<LOOP_COUNT; ++i) {
log4cplus::spi::InternalLoggingEvent e(logger.getName(), log4cplus::WARN_LOG_LEVEL,
msg, 0, 0);
e.getNDC();
}
end = Time::gettimeofday();
diff = end - start;
LOG4CPLUS_WARN(root, "getNDC() " << LOOP_COUNT << " calls took: " << diff);
LOG4CPLUS_WARN(root, "getNDC() average: " << (diff/LOOP_COUNT) << endl);
start = Time::gettimeofday();
for(i=0; i<LOOP_COUNT; ++i) {
log4cplus::spi::InternalLoggingEvent e(logger.getName(), log4cplus::WARN_LOG_LEVEL,
msg, 0, 0);
e.getThread();
}
end = Time::gettimeofday();
diff = end - start;
LOG4CPLUS_WARN(root, "getThread() " << LOOP_COUNT << " calls took: " << diff);
LOG4CPLUS_WARN(root, "getThread() average: " << (diff/LOOP_COUNT) << endl);
}
catch(...) {
cout << "Exception..." << endl;
LOG4CPLUS_FATAL(root, "Exception occured...");
}
cout << "Exiting main()..." << endl;
return 0;
}
|