Оптимизировать стоит то что действительно тормозит (является узким местом и зщанимает больше чем все остальное процессорного времени), а у вас тут скорее рефакторинг.
Кстати по поводу этого рефакторинга вывода отладочных сообщений - мы у себя применили тоакой подход
C++ (Qt)
#ifndef __DEBUGLOG_H__
#define __DEBUGLOG_H__
#include <QDebug>
#define INFO_OUT (qDebug() << "<" << __FILE__ << __FUNCTION__ << ">")
#define WARNING_OUT (qWarning() << "<" << __FILE__ << __FUNCTION__ << ">")
#define ERROR_OUT (qCritical() << "<" << __FILE__ << __FUNCTION__ << ">")
void rtLogMessageOutput( QtMsgType type, const char * msg );
#endif // __DEBUGLOG_H__
C++ (Qt)
#include "DebugLog.h"
void rtLogMessageOutput( QtMsgType type, const char * msg )
{
// Для раскраски вывода в консоль использованы ESC последовательности, как это будет работать в Windows не изветсно
// если ESC последовательности не будут корректно обрабатываться прийдется их сделать через #ifdef Q_OS_LINUX
// PS1 - переменная окружения определяющая строку запроса, вся информация по используемым ESC последовательностям
// может быть найдена в хелпе по ней
// PS1='\e[0m' ------ сброс
// PS1='\e[31m' ------ установка красного цвета текста
switch (type)
{
case QtDebugMsg:
fprintf(stdout, "(II): %s\n", msg);
break;
case QtWarningMsg:
fprintf(stdout, "\e[32m(WW): %s\e[0m\n", msg);
break;
case QtCriticalMsg:
fprintf(stdout, "\e[31m(EE): %s\e[0m\n", msg);
break;
case QtFatalMsg:
fprintf(stdout, "\e[41m(FATAL): %s\e[0m\n", msg );
abort();
}
}
/*
Set Display Attributes
Set Attribute Mode <ESC>[{attr1};...;{attrn}m
Sets multiple display attribute settings. The following lists standard attributes:
0 Reset all attributes
1 Bright
2 Dim
4 Underscore
5 Blink
7 Reverse
8 Hidden
Foreground Colours
30 Black
31 Red
32 Green
33 Yellow
34 Blue
35 Magenta
36 Cyan
37 White
Background Colours
40 Black
41 Red
42 Green
43 Yellow
44 Blue
45 Magenta
46 Cyan
47 White
*/
На раскраску консоли не обращайте внимания - я имею ввиду макросы
INFO_OUT
WARNING_OUT
ERROR_OUT
которые позволяют вывести ошибку или ворнинг - и сразу выводится в каком файле и методе! чтобы использовать достаточно
вызвать где-то в main.cpp
qInstallMsgHandler( rtLogMessageOutput );
а потом писать в коде
INFO_OUT << "test message";
WARNINH_OUT << "test message";
ERROR_OUT << "test message";
P.S. под виндой раскраска не работает (пока не делалолсь)