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

157 Commits

Author SHA1 Message Date
Victor Zarubkin
08372ac136 Update license 2017-03-30 06:55:15 +03:00
Victor Zarubkin
1af9c1bacc GUI.Diagram: changed timeline scale color from gray to darkGray 2017-03-13 00:38:31 +03:00
Victor Zarubkin
ffca37d06d GUI.GraphicsView: Removed unused code 2017-03-07 19:53:09 +03:00
Victor Zarubkin
5e0180f399 amend last commit (adjusted width) 2017-03-07 01:33:43 +03:00
Victor Zarubkin
5efe8c1132 GUI: Changed current-scale indicator appearance (bottom right of the screen) 2017-03-07 01:30:48 +03:00
Sergey Yagovtsev
d564b6ef4e Saving files before refreshing line endings 2017-02-08 00:14:49 +03:00
Victor Zarubkin
bf7bf10b80 (GUI) Less buggy and more efficient recursive painting algorithm for blocks at diagram. Test mode.
Note: with recursive algorithm it is possible to iterate through blocks in parallel to make painting just more efficient - this is my future todo
2016-12-27 22:07:44 +03:00
Victor Zarubkin
6d59c53f7a (GUI) Fixed wrong window size calculation for hystogram window 2016-12-21 22:40:06 +03:00
Victor Zarubkin
649eda5641 (GUI) Small alignment fixes 2016-12-21 21:45:11 +03:00
Victor Zarubkin
0a57ff381c (GUI) Please, read NOTICE for that commit.
1) Added active time calculation (this is duration excluding context switch time).
2) Columns "Duration", "Self Dur.", "Self %", "% / Frame", "Active time", "Active %" in Plain mode shows total values per frame (sum of all values per frame).
2016-12-18 17:59:41 +03:00
Victor Zarubkin
e5dccfb8be (GUI) Added hierarchy window mode: full hierarchy, plain mode (only functions list) 2016-12-18 15:56:08 +03:00
Victor Zarubkin
d85f9864d6 (GUI) Added statistics gathering for context switches (calls number, total duration, % per thread or frame).
Known issue: if context switch events occur out of profiled blocks then percent/thread may be calculated wrong as it is calculating relative to thread profiled time (which may be a very low value).
2016-12-14 23:17:02 +03:00
Victor Zarubkin
7883371166 (GUI) Added calculation of thread wait time (sum of all context switches) 2016-12-14 22:16:14 +03:00
Victor Zarubkin
eafcb40970 (GUI) Added possibility to torn on/off decorated thread names (add/don't add "Thread" word info thread name. Example, "Render" convert to "Render Thread", "WorkerThread" "My thread" will not convert in any way). See Settings->View->Use decorated thread names.
* (GUI) Fixed lagging when painting very long block on large scale.
2016-12-14 21:47:33 +03:00
Victor Zarubkin
3f64b9fb1c (GUI) Added average time into summary popup 2016-12-12 21:41:48 +03:00
Victor Zarubkin
d4877b59b8 (GUI) Added new regime "Hide min-size blocks" to hide blocks which screen size is less than 'Min blocks size';
(GUI) Slightly more memory effective arch.
2016-12-12 21:39:16 +03:00
Victor Zarubkin
c9d3169dbf (EasyGraphicsView) minor alignment fixes 2016-12-07 23:32:10 +03:00
Victor Zarubkin
d0c847da1d (EasyGraphicsView) Additional 5% offset before first and after last block;
* (EasyGraphicsView) Scroll to the first block after opening file;
2016-12-07 23:28:15 +03:00
Victor Zarubkin
f9e8138c36 gcc warnings fix 2016-12-04 18:40:46 +03:00
Victor Zarubkin
15f3c7fc87 (GUI) Added tooltips into Settings->View menu;
(GUI) More informative popup window view;
(GUI) Added hystogram for current selected block;
2016-12-04 16:51:27 +03:00
Victor Zarubkin
ced93de1b3 (EasyGraphicsView) New popup window for blocks 2016-12-01 23:31:40 +03:00
Victor Zarubkin
acb197557f (EasyGraphicsView) Added possibility to scroll thread names list with mouse wheel 2016-12-01 22:27:25 +03:00
Victor Zarubkin
33bd7256ab (EasyGraphicsView) Scroll to main thread after file load 2016-12-01 22:20:34 +03:00
Victor Zarubkin
02349afe8b (EasyGraphicsView) Fixed timeline scale indicator text;
* (EasyGraphicsView) Fixed longest thread selection;
2016-12-01 21:52:29 +03:00
Victor Zarubkin
045f464e1f (EasyGraphicsView) Chronometer line style reset fix 2016-11-30 22:22:58 +03:00
Victor Zarubkin
69a326c06b (EasyGraphicsView) Highlighting all similar blocks on diagram (only if they are visible!);
(GUI) Added possibility to select units in which time will be displayed
2016-11-30 21:59:40 +03:00
Victor Zarubkin
0658540109 (EasyGraphicsView) Important fix: fixed wrong indexing on paint 2016-11-26 17:00:05 +03:00
Victor Zarubkin
a7ac056021 (GUI) Added flag for enabling zero length blocks on diagram (if NOT enabled then such blocks would be resized to minimum length which is 250 ns. Otherwise you probably will not see blocks with zero length on diagram, but such blocks are still available at hierarchy window) 2016-11-23 22:54:59 +03:00
Victor Zarubkin
92b2b27a3b (GUI) Added search box into Hierarchy window;
(GUI) Added new option for building hierarchy for selected thread only (for memory economy)
2016-11-20 21:01:33 +03:00
Victor Zarubkin
21a7898572 removed unnecessary lambdas 2016-11-20 14:11:46 +03:00
Victor Zarubkin
ed3e26a59c GUI: Blocks painting algorithm optimization for detailed mode 2016-11-19 03:46:52 +03:00
Sergey Yagovtsev
e5041a9b2b Multi-licensing in source codes 2016-11-13 16:39:59 +03:00
Victor Zarubkin
eca7061fd0 Added menu Settings->Remote to control profiler event tracing and other future options 2016-09-28 00:37:20 +03:00
Victor Zarubkin
c53a8d4cb9 (EasyGraphicsView) additional offset before first block and after last block for ease of view 2016-09-25 11:50:57 +03:00
Victor Zarubkin
6cae6901de (profiler_gui) Removed unnecessary signals (rebuild may be needed) 2016-09-24 00:00:31 +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
cb6da49b3d (EasyGraphicsView) clang build fix 2016-09-15 23:20:37 +03:00
Victor Zarubkin
d8296ad43a (profiler_gui) Project hierarchy change: moved sources to separate files 2016-09-15 22:30:32 +03:00
Victor Zarubkin
f0ee9215bd Warnings fix 2016-09-14 23:34:56 +03:00
Victor Zarubkin
9748d7274f (profiler_gui) Bold and colorized font in EasyTreeWidget header 2016-09-14 23:14:24 +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
c67bf1dda7 (EasyGraphicsView) Fixed wrong font width calculation issue; Fixed wrong resizeEvent behavior; 2016-09-11 16:53:34 +03:00
Victor Zarubkin
5b620071b6 (profiler_gui) Adjust colors; Added keyboard handlers; Displaying additional info 2016-09-09 00:07:27 +03:00
Victor Zarubkin
248348ee05 (EasyGraphicsView) Added widget displaying thread names on scene. Double click on thread name makes it current selected thread.
(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.
2016-09-08 22:42:35 +03:00
Victor Zarubkin
68bbd0eef3 Merge branch 'event_tracing' of https://github.com/yse/easy_profiler into event_tracing 2016-09-07 21:52:40 +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
Sergey Yagovtsev
e1d95e0d3b clang some warning fix 2016-09-07 21:37:13 +03:00
Victor Zarubkin
591f613ff6 License text + small clean-up 2016-09-06 21:49:32 +03:00
Victor Zarubkin
d8d9a2fd32 (EasyGraphicsView) Painting context switches with outlined rectangles 2016-09-06 00:23:46 +03:00
Victor Zarubkin
f5ed51e13a Event tracing fixes! Now working :) 2016-09-04 19:35:58 +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
245bc6c386 (EasyChronometerItem) Fixed an error of displaying text on large scale 2016-08-30 20:47:49 +03:00
Victor Zarubkin
61c40c2512 (EasyGraphicsView) Design tweaking 2016-08-28 23:40:51 +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
3a2c8aaef1 (profiler_gui) Small design tweaking;
(profiler_gui) Added possibility to change where chronometer (time-meter) item text will be painted: at the top of the scene, in the center or at the bottom of the scene. See menu View -> Chronometer text.
2016-08-24 01:00:24 +03:00
Victor Zarubkin
355e3f519b (EasyGraphicsView) High painting performance optimization. No lags on 10 million blocks scene. (of course, not all 10 mil. of blocks are visible at the same moment) 2016-08-23 22:42:20 +03:00
Victor Zarubkin
004c4a257f (EasyGraphicsView) Second click on selected item on graphics scene makes it expanded or collapsed;
(EasyGraphicsView) Scale indicator rework;
(EasyMainWindow) Added menu "View" with actions "Expand all" nad "Collapse all";
(EasyGraphicsScrollbar) Fixed wrong mouse position calculation when scaling (with mouse wheel) on minimap.
2016-08-21 22:44:03 +03:00
Victor Zarubkin
4e5305ee74 (EasyGraphicsView) Refused of using QPainter::setClipRect() because of it is buggy when used with very big coordinates;
(EasyGraphicsView) New items borders drawing style.
2016-08-21 18:04:38 +03:00
Victor Zarubkin
1b3806ded2 (EasyGraphicsView) Removed debug output; Added vertical scrolling to the current thread on mouse wheel from EasyGraphicsScrollbar 2016-08-21 17:12:28 +03:00
Victor Zarubkin
721c145450 (profiler_gui) Added possibility of changing current scale using mouse wheel on minimap under graphics scene 2016-08-21 16:48:42 +03:00
Victor Zarubkin
beadd01c0c Merge remote-tracking branch 'origin/serialized_optimize' into develop 2016-08-21 14:48:36 +03:00
Victor Zarubkin
e40da7921d (EasyGraphicsView) Revert code analyzer fix: No need to check for nullptr because if it is null then there are no free memory in the system and the program will crash anyway. 2016-08-21 14:33:22 +03:00
Victor Zarubkin
9804378b1a Merge branch 'serialized_optimize' of https://github.com/yse/easy_profiler into serialized_optimize 2016-08-21 14:28:09 +03:00
Victor Zarubkin
d4ebdeeda8 (EasyGraphicsView) Added painting of time scale on the bottom of the graphics scene;
(EasyGraphicsItem) Fixed algorithmic error in paint() (this fix has improved paint() performance);
(profiler_gui) Color mathing
2016-08-21 14:26:04 +03:00
Sergey Yagovtsev
7d542cadda Ubuntu build 2016-08-19 01:40:14 +03:00
Sergey Yagovtsev
485c2a64ac (profiler gui) fix potencial zero pointer 2016-08-19 00:35:20 +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
24f181c040 (profiler GUI) high memory consumption optimizations: ~20 bytes per block 2016-08-11 23:43:34 +03:00
Victor Zarubkin
9f48bf6e21 (profiler_gui) refactoring;
(ProfGraphicsView) Added separate background drawer item; Added timeline scale drawing;
2016-08-10 22:08:27 +03:00
Victor Zarubkin
66709981a8 (ProfGraphicsView) Fixed Windows compile errors 2016-08-09 01:24:49 +03:00
Victor Zarubkin
c28b720c71 Merge branch 'develop' of https://github.com/yse/easy_profiler into develop 2016-08-09 01:16:16 +03:00
Sergey Yagovtsev
fd0ef209f8 Select encoding for block`s name.
Create unused widget for threads.
2016-08-09 00:45:45 +03:00
Victor Zarubkin
af2e606e08 (ProfGraphicsView) Updating scene rect when scrolling to selected item; 2016-08-09 00:15:40 +03:00
Victor Zarubkin
b2ac7e0fbd (ProfGraphicsView) Scroll verticalScrollBar to selected item also 2016-08-08 23:18:13 +03:00
Victor Zarubkin
c6fb0bfeb9 Merge remote-tracking branch 'origin/develop' into develop 2016-08-08 23:11:27 +03:00
Victor Zarubkin
e8bdffbc7b (ProfGraphicsView) Selected item painted always, even if it is hidden because of small size. 2016-08-08 23:03:11 +03:00
Sergey Yagovtsev
b257ef2c1d Merge commit 2016-08-08 22:54:20 +03:00
Sergey Yagovtsev
164eaa519d Warning fix 2016-08-08 22:45:57 +03:00
Victor Zarubkin
48e0906bf4 (ProfGraphicsView) using SELECTED_ITEM_COLOR constant 2016-08-08 22:35:21 +03:00
Victor Zarubkin
f0f82c01e2 (ProfGraphicsView) Selecting items on scene;
(ProfGraphicsView) Clickable indicators of ProfChronometerItem;
(ProfTreeWidget) Jump to items on scene from ProfTreeWidget;
(profiler GUI) Fixed typos and warnings;
2016-08-08 22:17:56 +03:00
Victor Zarubkin
30f0261bae (ProfGraphicsView) refactoring 2016-08-07 20:16:15 +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
57654670f0 (ProfGraphicsView) Displaying additional chronometer item on mouse double click and move. This item is used just to measure time. This is not affecting tree displayed in ProfTreeWidget. 2016-08-06 14:50:31 +03:00
Victor Zarubkin
340a787358 (ProfGraphicsView) Fixed borders painting 2016-08-04 23:35:38 +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
4db8d4fbb6 (GraphicsScrollbar) Added mini-map which shows duration of blocks relative to each other;
(GraphicsScrollbar) Also added displaying of chronometer item position in graphics scrollbar.
2016-08-03 00:06:36 +03:00
Victor Zarubkin
aa7996c1c5 (ProfGraphicsView) Chronometer item text is displaying correctly taking into account visibleSceneRect borders 2016-08-02 22:24:22 +03:00
Victor Zarubkin
b0f6b3f268 (GraphicsView) Fixed test();
(GraphicsView) Added a lot of comments;
(GraphicsView) Changed base unit from milliseconds to microseconds;
(GraphicsScrollbar) Fixed fluttering on very small scale;
(GraphicsView)+(TreeWidget) Chronometer item behavior: if selection made from left to right - selecting all items by intersection with rectangle; if selection made from right to left - selecting all items which are strictly inside selection rectangle.
2016-08-01 22:21:59 +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
c943431104 (GraphicsView) Using GraphicsScrollbar with qreal values instead of standard QScrollBar with int values.
(GraphicsView) Does not use standard QGraphicsView::scale and QGraphicsView::centerOn methods, does not use standard QScrollBar because of it's fast value overflow. Using manual offset for all scene items instead of standard scrolling.
2016-07-31 13:13:48 +03:00
Victor Zarubkin
ac484a1ae4 unnecessary include 2016-07-27 23:12:05 +03:00
Victor Zarubkin
5b7364b0bd Flicker functionality for profiler gui on QWidgets 2016-07-27 22:52:13 +03:00
Victor Zarubkin
03fb3f271f Scene paint fixes and optimization 2016-07-27 21:50:11 +03:00
Victor Zarubkin
f734104280 (GraphicsView) New draw method with one GraphicsItem for the whole scene (testing) 2016-07-10 01:31:29 +03:00
Victor Zarubkin
fa270ea3f2 (GraphicsView) More effective memory consumption 2016-06-30 03:45:11 +03:00
Victor Zarubkin
5ca4158abf Highly optimized painting algorithm and memory consumption for Profiler GraphicsView 2016-06-30 02:57:57 +03:00