docs: add gprof usage documentation
Signed-off-by: yinshengkai <yinshengkai@xiaomi.com> g 请为您的变更输入提交说明。以 '#' 开始的行将被忽略,而一个空的提交
This commit is contained in:
parent
d375a09c0a
commit
b8670e905a
1 changed files with 81 additions and 0 deletions
81
Documentation/applications/system/gprof/index.rst
Normal file
81
Documentation/applications/system/gprof/index.rst
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
=============================
|
||||
``gprof`` GNU Profile tool
|
||||
=============================
|
||||
|
||||
GNU Profile (gprof) is a performance analysis tool that helps developers
|
||||
identify code bottlenecks and optimize their programs.
|
||||
It provides detailed information about the execution time and call
|
||||
frequency of functions within a program.
|
||||
|
||||
gprof can be used to:
|
||||
|
||||
1. Detect performance bottlenecks in your code
|
||||
2. Identify which functions consume the most execution time
|
||||
3. Analyze the call graph of your program
|
||||
4. Help prioritize optimization efforts
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
Build
|
||||
-----
|
||||
|
||||
Enable the following configuration in NuttX::
|
||||
|
||||
CONFIG_SYSTEM_GPROF
|
||||
|
||||
Using in NuttX
|
||||
--------------
|
||||
|
||||
1. Start profiling::
|
||||
|
||||
nsh> gprof start
|
||||
|
||||
2. Stop profiling::
|
||||
|
||||
nsh> gprof stop
|
||||
|
||||
3. Dump profiling data::
|
||||
|
||||
nsh> gprof dump /tmp/gmon.out
|
||||
|
||||
Analyzing on Host
|
||||
-----------------
|
||||
|
||||
1. Pull the profiling data to host::
|
||||
|
||||
adb pull /tmp/gmon.out ./gmon.out
|
||||
|
||||
2. Analyze the data using gprof tool::
|
||||
|
||||
The saved file format complies with the standard gprof format.
|
||||
For detailed instructions on gprof command usage, please refer to the GNU gprof manual:
|
||||
https://ftp.gnu.org/old-gnu/Manuals/gprof-2.9.1/html_mono/gprof.html
|
||||
|
||||
arm-none-eabi-gprof ./nuttx/nuttx gmon.out -b
|
||||
|
||||
Example output:
|
||||
|
||||
```
|
||||
arm-none-eabi-gprof nuttx/nuttx gmon.out -b
|
||||
Flat profile:
|
||||
|
||||
Each sample counts as 0.001 seconds.
|
||||
% cumulative self self total
|
||||
time seconds seconds calls s/call s/call name
|
||||
66.41 3.55 3.55 43 0.08 0.08 sdelay
|
||||
33.44 5.34 1.79 44 0.04 0.04 delay
|
||||
0.07 5.34 0.00 up_idle
|
||||
0.04 5.34 0.00 nx_start
|
||||
0.02 5.34 0.00 fdtdump_main
|
||||
0.02 5.34 0.00 nxsem_wait
|
||||
0.00 5.34 0.00 1 0.00 5.34 hello_main
|
||||
0.00 5.34 0.00 1 0.00 0.00 singal_handler
|
||||
|
||||
```
|
||||
|
||||
This output shows the performance profile of the program,
|
||||
including execution time and call counts for each function.
|
||||
The flat profile table provides a quick overview of where the program spends most of its time.
|
||||
In this example, `sdelay` and `delay` functions consume the majority of execution time.
|
||||
This information can be used to identify performance bottlenecks and optimize critical parts of the code.
|
||||
Loading…
Add table
Reference in a new issue