Victor Zarubkin
752f0c08a8
Added possibility to build easy_profiler with empty API implementation to avoid whole solution rebuild if you want to build without profiler;
...
* resources.rc changes: proper macro names + copyright sign;
2016-11-20 13:42:05 +03:00
Sergey Yagovtsev
c00cfaa630
Add apache license text to some headers
2016-11-19 19:29:35 +03:00
Sergey Yagovtsev
b1e6bef056
Check connection in GUI
2016-11-18 22:58:44 +03:00
Victor Zarubkin
07b78ea92f
Moved version definition to CMakeLists.txt, added functions for getting profiler version
2016-11-16 22:17:39 +03:00
Victor Zarubkin
493000cef4
v1.0.0
2016-11-13 16:48:50 +03:00
Sergey Yagovtsev
e5041a9b2b
Multi-licensing in source codes
2016-11-13 16:39:59 +03:00
Sergey Yagovtsev
d692234f99
Add apache license text
2016-11-13 16:31:27 +03:00
Sergey Yagovtsev
f8ab7f0d91
Merge remote-tracking branch 'origin/develop' into rename_to_easy
2016-10-21 22:15:32 +03:00
Victor Zarubkin
dc01c49020
Saving network data using temporary cache file + Question box when clicked on "Clear all"
2016-10-02 12:13:12 +03:00
Sergey Yagovtsev
76defe2372
Rename directory profiler to easy
2016-09-29 23:29:57 +03:00
Victor Zarubkin
817083d3ff
Merge branch 'develop' of https://github.com/yse/easy_profiler into develop
2016-09-29 23:20:48 +03:00
Sergey Yagovtsev
477e643040
Disable EasyProfiler by default. For building with profiler define macro BUILD_WITH_EASY_PROFILER
2016-09-29 23:08:20 +03:00
Sergey Yagovtsev
c4e553c4bb
Same interface for win and linux
2016-09-29 22:54:54 +03:00
Victor Zarubkin
3b7266fb37
Prepare for saving profiled data (does not work yet);
...
* Remastered tool-bars and menus;
* Added new painting regime (Settings->View->Hide narrow children)
2016-09-29 22:40:19 +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
Sergey Yagovtsev
fd9a172b9b
Connect by non-blocking socket
2016-09-27 23:00:49 +03:00
Victor Zarubkin
4a05cafab4
Writing signature and version into file to let reader check if file is valid;
...
* Added output messages
2016-09-27 22:28:04 +03:00
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
d6269f17fe
Merge branch 'develop' of https://github.com/yse/easy_profiler into develop
2016-09-20 22:57:52 +03:00
Victor Zarubkin
e49b6179ef
New flexible block statuses instead of ENABLED, DISABLED: OFF, ON, FORCE_ON, OFF_RECURSIVE, ON_WITHOUT_CHILDREN, FORCE_ON_WITHOUT_CHILDREN
2016-09-20 22:57:34 +03:00
Sergey Yagovtsev
4c73886233
common code for linux and windows
2016-09-20 00:57:47 +03:00
Sergey Yagovtsev
38eecc722d
Refactoring of sockets
2016-09-19 23:59:55 +03:00
Sergey Yagovtsev
0ca2a4aef7
Add files
2016-09-18 19:11:22 +03:00
Sergey Yagovtsev
85e7145bf1
Merge commit
2016-09-18 19:02:12 +03:00
Sergey Yagovtsev
2d4e22cc23
Add init and flush functions for EasySocket
2016-09-18 18:08:47 +03:00
Sergey Yagovtsev
6939f053c9
Add checkResult function for socket
2016-09-18 16:43:43 +03:00
Victor Zarubkin
ef7469a880
(profiler_gui) First version of displaying and controlling blocks enable status
2016-09-17 15:39:31 +03:00
Victor Zarubkin
5d95cbd83b
(profiler_core) Added log messages output for Windows event tracer
2016-09-17 12:54:47 +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
c316734e8f
Fix disconnect problem on downloading
2016-09-16 22:51:15 +03:00
Sergey Yagovtsev
4b71a64363
Merge commit
2016-09-16 00:53:27 +03:00
Victor Zarubkin
4a40872183
(profiler_core) Added possibility to control event tracing priority level and to enable/disable event tracing at all.
2016-09-15 23:15:07 +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
Victor Zarubkin
ef310af71d
Colors tweaking
2016-09-13 22:51:06 +03:00
Sergey Yagovtsev
3181b867b1
Windows socket connection
2016-09-12 22:10:45 +03:00
Sergey Yagovtsev
0fe6690545
Add server function for EasySock
2016-09-12 21:28:15 +03:00
Sergey Yagovtsev
542783573d
Linux build
2016-09-11 19:34:01 +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
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
Sergey Yagovtsev
20d3fb47a6
First steps in network. Work on linux
2016-09-08 21:03:40 +03:00
Victor Zarubkin
40a8ee3d16
Material design colors
2016-09-07 22:37:05 +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
cd39507389
Replace tab to whitespaces
2016-09-07 21:32:14 +03:00
Sergey Yagovtsev
d39fecaac1
Clang build
2016-09-07 21:29:37 +03:00
Victor Zarubkin
449610028a
(profiler_core) Linux build: avoid gcc warning about unused variable
2016-09-06 23:16:15 +03:00
Victor Zarubkin
10bb3da45b
(profiler_core) !! Non-blocking API using Thread-Local-Storage (threal_local or __declspec(thread) or __thread)
2016-09-06 23:03:05 +03:00
Victor Zarubkin
33946770bb
(profiler_core) Windows build fix
2016-09-06 00:22:26 +03:00
Sergey Yagovtsev
9521f8ac02
Store context switch timestamp on linux.
...
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
2016-09-05 22:11:03 +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
342a95108c
Merge branch 'new_api' of https://github.com/yse/easy_profiler into new_api
2016-09-01 22:24:59 +03:00
Victor Zarubkin
b90e13509e
small refactoring
2016-09-01 22:24:13 +03:00
Victor Zarubkin
937f7d8fec
(profiler_core) Correcting: checking built-in "_WIN32" instead of compiler dependant "WIN32"
2016-09-01 22:22:58 +03:00
Sergey Yagovtsev
88de665df9
clang warning fix
2016-08-31 21:51:22 +03:00
Sergey Yagovtsev
d8f44ba559
Gcc compile fix
2016-08-31 21:51:00 +03:00
Victor Zarubkin
9560c5b5cf
(profiler_gui) Memory consumption optimization + File reading speed-up.
2016-08-30 22:51:18 +03:00
Victor Zarubkin
eaa79a4c4c
(profiler_core) Fixed logic mistake in base api
2016-08-30 20:46:39 +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
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
3e1b8ce46f
(profiler core) The right way of avoiding static analyzer warnings ^_^ No need to insert unnecessary checks
2016-08-21 14:46:16 +03:00
Sergey Yagovtsev
9f6ca63440
(profiler core) fix clang static analyzer warnings
2016-08-19 00:35:45 +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
13997f6187
(profiler core) revert variables order change (prevois change may affect file read/write)
2016-08-14 16:50:17 +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
b39057049e
(profiler) Proper color names and 6 new colors
2016-08-07 19:31:09 +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
bfe2e44456
(profiler Core fix) Thread-safety fixes
2016-08-02 21:44:11 +03:00
Victor Zarubkin
4b0d8e5e63
(profiler Reader fix) Added thread_name assignment into BlocksTree::makeMove()
2016-08-02 21:20:38 +03:00
Victor Zarubkin
fd67a3d81b
(profiler Optimizations) PROFILER_SET_THREAD_NAME uses static variable, so profiler::setThreadName() will be invoked only once;
...
(profiler Optimizations) removed unnecessary profiler::Block creation from profiler::setThreadName();
(profiler Optimizations) removed statics from getCurrentTime() function - more correct static usage.
2016-08-02 21:18:04 +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
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
82e9920e15
Add dumpBLocksToFile function
2016-07-04 22:53:02 +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
94add93883
const modifiers for const methods
2016-06-26 02:12:27 +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
aa8fde2434
removed unnecessary memory allocation
2016-06-25 23:10:05 +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
dba149c1e6
refactoring: proper types
2016-06-25 17:17:44 +03:00