I implemented a profiler to latest master, you can compile huggle by
uncomenting PROFILING in definitions.hpp, it is written using C++
macros and its code is replaced with NOOP code in case it's not
enabled.
Example output
Tue Jul 29 17:55:00 2014 DEBUG[1]: PROFILER: Core::Init() finished in 365ms
Tue Jul 29 17:55:00 2014 DEBUG[1]: PROFILER: Login::Login(QWidget
*parent) finished in 527ms
Tue Jul 29 17:55:09 2014 DEBUG[1]: PROFILER:
MainWindow::MainWindow(QWidget *parent)@layout finished in 303ms
Tue Jul 29 17:55:09 2014 DEBUG[1]: PROFILER:
MainWindow::MainWindow(QWidget *parent)@welcome finished in 0ms
Tue Jul 29 17:55:09 2014 DEBUG[1]: PROFILER:
MainWindow::MainWindow(QWidget *parent)@providers finished in 139ms
Tue Jul 29 17:55:09 2014 DEBUG[1]: PROFILER:
MainWindow::MainWindow(QWidget *parent)@layout finished in 54ms
Tue Jul 29 17:55:09 2014 DEBUG[1]: PROFILER:
MainWindow::MainWindow(QWidget *parent)@irc finished in 41ms
Tue Jul 29 17:55:09 2014 DEBUG[1]: PROFILER:
MainWindow::MainWindow(QWidget *parent)@hooks finished in 0ms
So, for example you can see that it took almost half a second for
login form to render (which is quite a lot).
You can insert your own profiler checks using these macros:
HUGGLE_PROFILER_RESET; // will reset internal profiler timer, it's a
good idea to do this before you start profiling some code
HUGGLE_PROFILER_PRINT_TIME ("name of function@id"); // will print a
time it took computer to get from last profiler reset until the mark
to debug log
have fun optimizing huggle!