(profiler_core) Fixed bug with memory corruption in chunk_allocator;
(profiler_core) Event tracing now gathering info about process which owns thread;
(profiler_core) Thread names are stored before other blocks now;
(profiler_core) Removed unused block types: context switch and thread sign;
(profiler_core) Added some description for API;
(profiler_gui) Context switch events now painted in different colors: red = switch to another process, coral = switch to registered thread in the same process, black = switch to kernel mode (thread id == 0).
(profiler_gui) Added popup windows with information about context-switch or block under mouse cursor;
(profiler_core) Optimized storeBlock() algorithm, removed unnecessary std::vector;
(profiler_core) Writing to std::stringstream and then to file (prepare for streaming over WAN/LAN);
(profiler_core) Moved hached_cstr into separate header.
(profiler_core) Changed order of read/write of context switches as a preparation work to statistics gathering taking into account context switches duration.
(EasyGraphicsView) Selected item's text is now painted bold + removed selected item color, but made selected item's border more wide.
(profiler_gui) Colors adjustment.
It's need to run systemtap util for loading kernel module. This kernel module capture context switch timestamp and systemtap store it in the temp file.
Before running profiling application you should run systemtap script with root privileges as following:
\# stap -o /tmp/cs_profiling_info.log scripts/context_switch_logger.stp name APPLICATION_NAME
where APPLICATION_NAME is profiling application
(profiler_gui) Moving sources into separate files;
(profiler_gui) Rename Prof* classes into Easy*;
(EasyGraphicsView) Optimized performance by not painting items which were not expanded in TreeWidget. While there are no range selected for TreeWidget, only top-level blocks are painted on scene.
(profiler GUI) Lightening profiler::colors to be more bright;
(ProfTreeWidget) Displaying per frame and per thread statistics;
(ProfGraphicsView) Draw chronometer item text in Difference mode to be more readable.
(profiler GUI) Added plain vector of ProfBlocks (additional information for gui) for fast access;
(ProfGraphicsView) Removed unnecessary methods; small refactoring;
(ProfTreeWidget) Removed unnecessary map of tree items;
(ProfGraphicsScrollbar) Added colorizing of minimap (green = low duration, red = long duration);
(profiler Reader) Added self_duration field for statistics;
(profiler Reader) Removed #ifdef macros;
(profiler Reader) moved BlocksTree, BlocksTreeRoot and thread_blocks_tree_t types inside profiler namespace;
(profiler GUI) Added globals.h and globals.cpp containing global variables and signals; Added profiler_gui namespace;
(ProfTreeWidget) Added context menu "Select columns" to make it possible to hide columns;
(ProfTreeWidget) Added percent statistics for blocks (Self %, Parent % and Frame %); Added displaying of total thread duration;
(ProfGraphicsScrollbar) Added context menu to make it possible to choose which thread to display on minimap;
(ProfGraphicsView) Highlighting currently selected thread;
(profiler Optimizations) removed unnecessary profiler::Block creation from profiler::setThreadName();
(profiler Optimizations) removed statics from getCurrentTime() function - more correct static usage.