2010-03-02 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

Avoid costly BtMessage::toString() if info level log is not
	required.
	* src/DefaultBtInteractive.cc
	* src/Logger.h
	* src/SimpleBtMessage.cc
pull/1/head
Tatsuhiro Tsujikawa 2010-03-01 17:03:24 +00:00
parent 18ea756a74
commit 94e306cec4
4 changed files with 28 additions and 6 deletions

View File

@ -1,3 +1,11 @@
2010-03-02 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Avoid costly BtMessage::toString() if info level log is not
required.
* src/DefaultBtInteractive.cc
* src/Logger.h
* src/SimpleBtMessage.cc
2010-03-02 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Reserved vector elements based on profiler results.

View File

@ -265,9 +265,11 @@ size_t DefaultBtInteractive::receiveMessages() {
break;
}
++msgcount;
logger->info(MSG_RECEIVE_PEER_MESSAGE, cuid,
peer->ipaddr.c_str(), peer->port,
message->toString().c_str());
if(logger->info()) {
logger->info(MSG_RECEIVE_PEER_MESSAGE, cuid,
peer->ipaddr.c_str(), peer->port,
message->toString().c_str());
}
message->doReceivedAction();
switch(message->getId()) {

View File

@ -71,6 +71,11 @@ private:
std::ofstream _file;
int _stdoutField;
inline bool levelEnabled(LEVEL level) const
{
return (level >= _logLevel && _file.is_open()) || _stdoutField&level;
}
protected:
virtual void writeLog
(std::ostream& o, LEVEL logLevel, const std::string& logLevelLabel,
@ -192,7 +197,12 @@ public:
// either file or stdout.
bool debug() const
{
return (DEBUG >= _logLevel && _file.is_open()) || _stdoutField&DEBUG;
return levelEnabled(DEBUG);
}
bool info() const
{
return levelEnabled(INFO);
}
};

View File

@ -55,8 +55,10 @@ void SimpleBtMessage::send() {
if(!sendingInProgress) {
const unsigned char* msg = getMessage();
size_t msgLength = getMessageLength();
logger->info(MSG_SEND_PEER_MESSAGE,
cuid, peer->ipaddr.c_str(), peer->port, toString().c_str());
if(logger->info()) {
logger->info(MSG_SEND_PEER_MESSAGE,
cuid, peer->ipaddr.c_str(), peer->port, toString().c_str());
}
if(logger->debug()) {
logger->debug("msglength = %lu bytes",
static_cast<unsigned long>(msgLength));