mirror of
https://github.com/yse/easy_profiler.git
synced 2024-12-26 16:11:02 +08:00
Update README.md
This commit is contained in:
parent
c56acf50ed
commit
fd856478e5
66
README.md
66
README.md
@ -10,8 +10,10 @@
|
|||||||
# About
|
# About
|
||||||
Lightweight profiler library for c++
|
Lightweight profiler library for c++
|
||||||
|
|
||||||
You can profile any function in you code. Furthermore this library provide measuring time of any block of code. Also the library can capture system's context switch.
|
You can profile any function in you code. Furthermore this library provide measuring time of any block of code.
|
||||||
You can see the results of measuring in simple gui application which provide full statistic and render beautiful timeline.
|
Also the library can capture system's context switch events between threads. Captured information includes duration,
|
||||||
|
target thread id, thread owner process id, thread owner process name.
|
||||||
|
You can see the results of measuring in simple GUI application which provides full statistics and renders beautiful time-line.
|
||||||
|
|
||||||
# Build
|
# Build
|
||||||
|
|
||||||
@ -24,7 +26,7 @@ For core:
|
|||||||
For GUI:
|
For GUI:
|
||||||
* Qt 5.3.0 or later
|
* Qt 5.3.0 or later
|
||||||
|
|
||||||
## linux
|
## Linux
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ mkdir build
|
$ mkdir build
|
||||||
@ -33,50 +35,78 @@ $ cmake ..
|
|||||||
$ make
|
$ make
|
||||||
```
|
```
|
||||||
|
|
||||||
## windows
|
## Windows
|
||||||
|
|
||||||
If you use qtcreator IDE you can just open `CMakeLists.txt` file in root directory.
|
If you are using QtCreator IDE you can just open `CMakeLists.txt` file in root directory.
|
||||||
|
If you are using Visual Studio you can generate solution by cmake generator command.
|
||||||
|
|
||||||
If you use Visual Studio you can generate solution by cmake command. In this case you should specify path to cmake scripts in Qt5 dir (usually in lib/cmake subdir), for example:
|
### Way 1
|
||||||
|
Specify path to cmake scripts in Qt5 dir (usually in lib/cmake subdir), for example:
|
||||||
```batch
|
```batch
|
||||||
$ mkdir build
|
$ mkdir build
|
||||||
$ cd build
|
$ cd build
|
||||||
$ cmake -DCMAKE_PREFIX_PATH="C:\Qt\5.3\msvc2013_64\lib\cmake" ..
|
$ cmake -DCMAKE_PREFIX_PATH="C:\Qt\5.3\msvc2013_64\lib\cmake" .. -G "Visual Studio 12 2013 Win64"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Way 2
|
||||||
|
Create system variable "Qt5Widgets_DIR" and set it's value to "[path-to-Qt5-binaries]\lib\cmake\Qt5Widgets".
|
||||||
|
For example, "C:\Qt\5.3\msvc2013_64\lib\cmake\Qt5Widgets".
|
||||||
|
And then run cmake generator as follows:
|
||||||
|
```batch
|
||||||
|
$ mkdir build
|
||||||
|
$ cd build
|
||||||
|
$ cmake .. -G "Visual Studio 12 2013 Win64"
|
||||||
```
|
```
|
||||||
|
|
||||||
# Usage
|
# Usage
|
||||||
|
|
||||||
First of all you can specify path to include directory which contains `include/profiler` directory. For linking with ease_profiler you can specify path to library.
|
First of all you can specify path to include directory which contains `include/profiler` directory.
|
||||||
|
For linking with easy_profiler you can specify path to library.
|
||||||
|
|
||||||
Example of usage.
|
Example of usage.
|
||||||
|
|
||||||
This code snippet will generate block with function name and grouped it in Magenta group:
|
This code snippet will generate block with function name and Magenta color:
|
||||||
```cpp
|
```cpp
|
||||||
#include <profiler/profiler.h>
|
#include <profiler/profiler.h>
|
||||||
|
|
||||||
void frame(){
|
void frame() {
|
||||||
EASY_FUNCTION(profiler::colors::Magenta);
|
EASY_FUNCTION(profiler::colors::Magenta);
|
||||||
prepareRender();
|
prepareRender();
|
||||||
calculatePhysics();
|
calculatePhysics();
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
To profile any block you may do this as following. You can specify these blocks also with Google material design color or just set name of block (in this case color will be OrangeA100):
|
|
||||||
|
To profile any block you may do this as following.
|
||||||
|
You can specify these blocks also with Google material design colors or just set name of the block
|
||||||
|
(in this case it will have default color which is Amber100):
|
||||||
```cpp
|
```cpp
|
||||||
#include <profiler/profiler.h>
|
#include <profiler/profiler.h>
|
||||||
|
|
||||||
void frame(){
|
void frame() {
|
||||||
//some code
|
// some code
|
||||||
EASY_BLOCK("Calculating summ");
|
EASY_BLOCK("Calculating sum");
|
||||||
for(int i = 0; i < 10; i++){
|
int sum = 0;
|
||||||
|
for (int i = 0; i < 10; ++i)
|
||||||
sum += i;
|
sum += i;
|
||||||
}
|
|
||||||
EASY_END_BLOCK;
|
EASY_END_BLOCK;
|
||||||
|
|
||||||
EASY_BLOCK("Calculating multiplication", profiler::colors::Blue50);
|
EASY_BLOCK("Calculating multiplication", profiler::colors::Blue50);
|
||||||
for(int i = 0; i < 10; i++){
|
int mul = 1;
|
||||||
|
for (int i = 1; i < 11; ++i)
|
||||||
mul *= i;
|
mul *= i;
|
||||||
}
|
|
||||||
EASY_END_BLOCK;
|
EASY_END_BLOCK;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
You can also use your color set. EasyProfiler is using standard 32-bit ARGB color format.
|
||||||
|
Example:
|
||||||
|
```cpp
|
||||||
|
#include <profiler/profiler.h>
|
||||||
|
|
||||||
|
void foo() {
|
||||||
|
EASY_FUNCTION(0xfff080aa);
|
||||||
|
// some code
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
[![Analytics](https://ga-beacon.appspot.com/UA-82899176-1/easy_profiler/readme)](https://github.com/yse/easy_profiler)
|
[![Analytics](https://ga-beacon.appspot.com/UA-82899176-1/easy_profiler/readme)](https://github.com/yse/easy_profiler)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user