0
0
mirror of https://github.com/yse/easy_profiler.git synced 2024-12-28 17:28:14 +08:00

36 Commits

Author SHA1 Message Date
Victor Zarubkin
8fd70c5420 Many new features:
* Reading blocks from stream without temporary file;
* Reading blocks description from stream;
* Control blocks statuses over network: connect to the application, refresh blocks list, change block's status, launch profiling.
2016-09-25 11:49:49 +03:00
Victor Zarubkin
583410c929 (profiler_gui) Added events indicators (like context switch events at the bottom of each thread) 2016-09-23 23:50:43 +03:00
Victor Zarubkin
30de452113 Trying to fix problem with c++11 magic statics (there is no support for visual studio 2013 and earlier, gcc < 4.3 and clang < 2.9);
Wrapped "final" keyword for different compilers support;
Block descriptors now stored in unordered_map to make it easy to control theirs visibility level and to make it safe to unload dll/so during application execution.
2016-09-22 23:06:43 +03:00
Victor Zarubkin
7f5b7c00a8 (profiler_gui) Added tool-button "Clear all";
(profiler_gui) Prepare for append blocks
2016-09-21 22:09:04 +03:00
Victor Zarubkin
fdee7226f8 (profiler_gui) More information in popup; Right way to remove QGraphicsProxyWidget from scene (it does not delete widget by itself) 2016-09-13 23:44:20 +03:00
Victor Zarubkin
1b33ad788d (profiler_core) Further work with run-time enable/disable blocks;
(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;
2016-09-13 23:03:01 +03:00
Victor Zarubkin
9294ddb61b (profiler_core) Prepare for blocks enable/disable;
(profiler_core) Changed order of read/write of context switches as a preparation work to statistics gathering taking into account context switches duration.
2016-09-09 00:09:47 +03:00
Victor Zarubkin
05b56dcec0 First debuggable version of system event tracing for visualizing thread context switches 2016-09-04 14:48:35 +03:00
Victor Zarubkin
b90e13509e small refactoring 2016-09-01 22:24:13 +03:00
Victor Zarubkin
9560c5b5cf (profiler_gui) Memory consumption optimization + File reading speed-up. 2016-08-30 22:51:18 +03:00
Victor Zarubkin
aa0d96d0e6 Remastering profiler API. All projects are compiled successfully, but there is an error occured during read/write .prof file 2016-08-28 18:22:45 +03:00
Victor Zarubkin
439e1cfb44 Remastering profiler API (not compiling yet) 2016-08-28 02:41:02 +03:00
Victor Zarubkin
8f30948105 (profiler_gui) Reading file (MainWindow) and building blocks hierarchy (TreeWidget) in separate threads + displaying read progress;
(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.
2016-08-18 23:26:41 +03:00
Victor Zarubkin
197a585307 (profiler core) Warning: .prof file format changed! New SerializedBlock format, less allocations and copy, only single allocation in fillTreesFromFile(). Memory consumption reduced. Also speed up statistics gathering by moving calculations into several threads. 2016-08-14 22:22:44 +03:00
Victor Zarubkin
d38c869330 Memory consumtion optimization (almost 2 times less memory used on Windows) 2016-08-14 16:05:10 +03:00
Victor Zarubkin
3fd0b77d16 (profiler core) Prepare for source file and line writing 2016-08-11 23:52:33 +03:00
Sergey Yagovtsev
98a3dd7114 Fix typo in SerializedBlock class name 2016-08-07 21:40:23 +03:00
Victor Zarubkin
3017be305a (profiler reader) Gathering per frame statistics + refactoring;
(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.
2016-08-07 19:38:31 +03:00
Victor Zarubkin
4f0fabdfd6 (profiler Reader) Added block_index field and replaced pointers SerilizedBlock* to block indexes;
(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);
2016-08-04 22:38:45 +03:00
Victor Zarubkin
55cd5a5751 (profiler Reader) For memory consumption optimization created BlocksTreeRoot class and move thread_name field from BlocksTree to new created class;
(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;
2016-08-03 23:00:04 +03:00
Victor Zarubkin
4b0d8e5e63 (profiler Reader fix) Added thread_name assignment into BlocksTree::makeMove() 2016-08-02 21:20:38 +03:00
Sergey Yagovtsev
dd2deaf36f Add macro for specifying thread name 2016-07-31 22:12:11 +03:00
Victor Zarubkin
bb0f2d3cd4 Added chronometer graphics item which shows time interval on graphics scene (Press right mouse button and move mouse on graphics scene). Also, all items from selected interval will be shown in tree widget. 2016-07-31 18:48:41 +03:00
Victor Zarubkin
03fb3f271f Scene paint fixes and optimization 2016-07-27 21:50:11 +03:00
Victor Zarubkin
8b4bd91147 (profiler reader) Added calculation of maximum depth of the BlocksTree;
* Also added header into reader.cpp and added comments.
2016-07-10 01:31:06 +03:00
Victor Zarubkin
4b287b31fa (BlocksTree) Reading total number of children (including grandchildren and so on) 2016-06-29 20:31:17 +03:00
Victor Zarubkin
30d9e7645f (Graphics view) Disabled border lines painting because of vertical lines painting bug;
* (Graphics view) Changed height of blocks. Variable thread-block height;
* (Tree widget) Disabled sorting by name to save order of threads displayed on graphics view;
* (Profiler reader) Changed type of value returned by fillTreesFromFile().
2016-06-27 23:22:12 +03:00
Victor Zarubkin
36ec598697 statistics gathering 2016-06-26 02:15:39 +03:00
Victor Zarubkin
66d8a1b8f1 using std::list instead of std::vector is near twice faster 2016-06-26 00:58:40 +03:00
Victor Zarubkin
bd09a0173f statistics gathering 2016-06-26 00:56:24 +03:00
Victor Zarubkin
f2a1c8bf30 fixed potential memory leak on move operator 2016-06-25 17:30:39 +03:00
Victor Zarubkin
06192258ed statistics move 2016-06-25 17:27:36 +03:00
Victor Zarubkin
2a1b7acfb9 prepare for statistics gathering and small refactoring with namespaces and comments 2016-06-25 17:24:29 +03:00
Victor Zarubkin
bc496f7ecf Typedef for children array type 2016-06-19 23:57:58 +03:00
Sergey Yagovtsev
f0a0b51a85 Add reader in profiler lib 2016-06-19 23:46:42 +03:00
Victor Zarubkin
a506a717cd Moved declaration of BlocksTree to profiler/reader.h 2016-06-19 23:01:49 +03:00