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

45 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
485cec2b4f More correct version of reader interruption 2016-09-24 00:26:56 +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
Sergey Yagovtsev
85e7145bf1 Merge commit 2016-09-18 19:02:12 +03:00
Victor Zarubkin
34bb8d8119 (profiler_core) Fixed potential problem with unloading dll/so during application work 2016-09-17 11:10:25 +03:00
Sergey Yagovtsev
61589c1154 Merge commit 2016-09-15 22:49:56 +03:00
Victor Zarubkin
f0ee9215bd Warnings fix 2016-09-14 23:34:56 +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
Sergey Yagovtsev
0a98d032d0 Windows almost work 2016-09-11 18:23:47 +03:00
Victor Zarubkin
d5d75d6340 (profiler_core) Further work with real-time enable/disable of blocks;
(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.
2016-09-11 16:57:35 +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
6e845eece2 Using Google Material Design colors;
* At last, fixed bug with text paint on very large scene scale. Now you can scale the scene up to 10 ns scale!
2016-09-07 21:48:50 +03:00
Victor Zarubkin
591f613ff6 License text + small clean-up 2016-09-06 21:49:32 +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
9560c5b5cf (profiler_gui) Memory consumption optimization + File reading speed-up. 2016-08-30 22:51:18 +03:00
Victor Zarubkin
71f95f2c87 (profiler_core) Simplifying API: there are ~1.5 times lower macros number for using profiler. 2016-08-28 23:40:23 +03:00
Victor Zarubkin
4ff13053ec Remastering profiler API. Fixed read/write 2016-08-28 21:06:23 +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
Sergey Yagovtsev
9f6ca63440 (profiler core) fix clang static analyzer warnings 2016-08-19 00:35:45 +03:00
Victor Zarubkin
be54030b1a Merge branch 'serialized_optimize' of https://github.com/yse/easy_profiler into serialized_optimize 2016-08-18 23:26:54 +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
8c53d65362 (profiler core) Remove clang warning. Remove useless 2 bytes in memory per block 2016-08-14 23:13:18 +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
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
7366defa63 Silly mistake 2016-08-06 14:48:01 +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
Sergey Yagovtsev
dd2deaf36f Add macro for specifying thread name 2016-07-31 22:12:11 +03:00
Victor Zarubkin
03fb3f271f Scene paint fixes and optimization 2016-07-27 21:50:11 +03:00
Victor Zarubkin
9a616fc693 Merge branch 'develop' of https://github.com/yse/easy_profiler into develop
# Conflicts:
#	profiler_gui/main_window.cpp
#	src/reader.cpp
2016-07-10 01:36:02 +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
Sergey Yagovtsev
23a94d94e2 Add profiling blocks for reader 2016-07-04 22:53:48 +03:00
Sergey Yagovtsev
980edd631a Optimized reader 2016-07-04 21:44:07 +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
Sergey Yagovtsev
415ef43bbb Gather statistic for root nodes 2016-06-26 21:04:24 +03:00
Victor Zarubkin
36ec598697 statistics gathering 2016-06-26 02:15:39 +03:00
Victor Zarubkin
bd09a0173f statistics gathering 2016-06-26 00:56:24 +03:00
Victor Zarubkin
aa8fde2434 removed unnecessary memory allocation 2016-06-25 23:10:05 +03:00
Sergey Yagovtsev
f0a0b51a85 Add reader in profiler lib 2016-06-19 23:46:42 +03:00