标签: gprof

在gprof中配置单个功能

是否可以使用gprof在C++中对单个函数进行换行?

就像是:

gprof -l -F function_name ...
Run Code Online (Sandbox Code Playgroud)

,这似乎不起作用.

c++ gprof

6
推荐指数
1
解决办法
3452
查看次数

在Linux中分析部分程序

我有一个程序,其中花费了大量的时间来加载和保存数据.现在我想知道每个函数在总运行时间百分比方面花费了多少时间.但是,我想从分析器考虑的总时间中排除加载和保存函数所花费的时间.有没有办法使用gprof或任何其他流行的探查器?

linux profiler gprof

6
推荐指数
2
解决办法
433
查看次数

用<spontaneous>解释gprof输出

我试图在我的程序中找到性能问题,从而通过分析对代码进行检测.gprof创建一个像这样的平面轮廓:

Flat profile:

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls  ms/call  ms/call  name    
 27.97      4.10     4.10                             std::_Deque_iterator<char, char&, char*>::_Deque_iterator(std::_Deque_iterator<char, char&, char*> const&)
  6.96      5.12     1.02                             std::_Deque_iterator<char, char&, char*>::difference_type std::operator-<char, char&, char*>(std::_Deque_iterator<char, char&, char*> const&, std::_Deque_iterator<char, char&, char*> const&)
  5.12      5.87     0.75                             std::__deque_buf_size(unsigned int)
  4.23      6.49     0.62                             std::_Deque_iterator<char, char&, char*>::operator+=(int)
  3.41      6.99     0.50                             std::deque<char, std::allocator<char> >::begin()
  1.91      7.27     0.28     7896     0.04     0.04  std::vector<MyClass, std::allocator<MyClass> >::_M_insert_aux(__gnu_cxx::__normal_iterator<MyClass*, std::vector<MyClass, MyClasst> > >, MyClassconst&)
  1.91      7.55     0.28 …
Run Code Online (Sandbox Code Playgroud)

c++ optimization gprof

6
推荐指数
1
解决办法
2142
查看次数

gprof命令没有创建正确的out.txt

首先,我正在运行MacOSX 10.7.1.我安装了所有正确的Xcode 4和所有库,以使用C语言.

我在shell中运行gprof命令时遇到了麻烦.我将逐步解释我正在做的事情以及我收到的输出.

步骤1:

~ roger$ cd Path/to/my/workspace
~ roger$ ls
Run Code Online (Sandbox Code Playgroud)

输出(步骤1):

queue.c         queue.h         testqueue.c
Run Code Online (Sandbox Code Playgroud)

第2步:

~ roger$ gcc -c -g -pg queue.c
~ roger$ ls
Run Code Online (Sandbox Code Playgroud)

输出(第2步):

queue.c         queue.h         queue.o         testqueue.c
Run Code Online (Sandbox Code Playgroud)

第3步:

~ roger$ gcc -o testqueue -g -pg queue.o testqueue.c
~ roger$ ls
Run Code Online (Sandbox Code Playgroud)

输出(步骤3):

queue.c         queue.h         queue.o         testqueue       testqueue.c
Run Code Online (Sandbox Code Playgroud)

第4步:

~ roger$ ./testqueue
~ roger$ ls
Run Code Online (Sandbox Code Playgroud)

输出(步骤4):

enqueue element 16807
head=0,tail=1
enqueue element 282475249
head=0,tail=2
enqueue element 1622650073
head=0,tail=3
enqueue element 984943658
head=0,tail=4
enqueue element 1144108930
head=0,tail=5
enqueue …
Run Code Online (Sandbox Code Playgroud)

c unix macos bash gprof

6
推荐指数
1
解决办法
1655
查看次数

在特定情况下,为什么gccgo比gc慢?

我敢肯定,每个人都知道golang知道,博客文章在这里.

再次阅读,我想知道是否使用gccgo而不是go build会增加速度.在我的典型用例(科学计算)中,gccgo生成的二进制文件总是比生成的二进制文件更快go build.

所以,只需抓住这个文件:havlak6.go并编译它:

go build havlak6.go -O havlak6_go
gccgo -o havlak6_gccgo -march=native -Ofast havlak6.go
Run Code Online (Sandbox Code Playgroud)

惊喜!

$/usr/bin/time ./havlak6_go
5.45user 0.06system 0:05.54elapsed 99%CPU

$/usr/bin/time ./havlak6_gccgo
11.38user 0.16system 0:11.74elapsed 98%CPU
Run Code Online (Sandbox Code Playgroud)

我很好奇并且想知道为什么"优化"编译器会产生较慢的代码.

我试图gprofgccgo生成的二进制文件上使用:

gccgo -pg -march=native -Ofast havlak6.go
./a.out
gprof a.out gmon.out
Run Code Online (Sandbox Code Playgroud)

没有运气:

Flat profile:

Each sample counts as 0.01 seconds.
 no time accumulated
Run Code Online (Sandbox Code Playgroud)

如您所见,代码尚未实际分析.

当然,我读过这篇文章,但正如你所看到的,程序执行需要10多秒......样本数应该> 1000.

我也尝试过:

rm a.out gmon.out
LDFLAGS='-g …
Run Code Online (Sandbox Code Playgroud)

go gprof

6
推荐指数
1
解决办法
1833
查看次数

如何使用cmake设置g ++的标志,这样gprof可以解码?

如何在CMakeLists.txt中为GNU g ++的编译器和链接器设置gprof标志?

我目前的做法,

set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -pg")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -pg")
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} -pg")
Run Code Online (Sandbox Code Playgroud)

不允许gprof对C++函数进行解码.有任何想法吗?(我正在使用C++ 11)

g++ cmake gprof demangler

6
推荐指数
1
解决办法
4346
查看次数

如何使用 gprof 来分析守护进程而不优雅地终止它?

需要分析用 C++ 编写的守护进程,gprof 说它需要终止进程以获取 gmon.out。我想知道有人有使用 ctrl-c 获取 gmon.out 的想法吗?我想找出cpu周期的热点

c++ gprof

5
推荐指数
1
解决办法
5676
查看次数

gprof - 文件缺少调用图数据

我刚开始使用 gprof 并试图生成调用图。我正在使用 cmake 来设置我的 makefile,我正在设置 CMAKE_EXE_LINKER_FLAGS = -gp 以启用分析。我唯一启用的 cxx 标志是 -g。

然后我简单地在我的 gmon.out 文件上调用 gprof。

生成的输出文件只有一个平面配置文件,其中的调用、自身 ts/call 和总 ts/call 都是空的。

更重要的是,它不会生成调用图。如果我尝试在运行 gprof 时显式提供 -q 以生成调用图,它会显示“文件缺少调用图数据”。

我不确定我在这里做错了什么,希望得到解决这个问题的指示。

谢谢。

c++ g++ gprof call-graph

5
推荐指数
1
解决办法
3522
查看次数

gprof 不显示调用图

我正在使用 -pg 选项运行我的程序。当我打开输出 gmon.out 时,它只有累积列表,而不是调用图。我该如何解决这个问题?

我知道之前有人问过这个问题:gprof - 文件缺少调用图数据但没有人真正回答这个问题,只给出了 gprof 替代方案的建议。

profiling gprof

5
推荐指数
1
解决办法
2164
查看次数

gprof 不为需要合理时间执行的程序产生任何输出

我知道以前有人问过类似的问题,但是:

  1. 关于gprof 产生空输出,我在 Windows 10 上使用来自 MSYS2 的 GCC 10.2.0,即它是 MingW64 发行版。我还添加-no-pie了链接器参数,但仍然没有结果。GNU Prof 的版本是 2.36.1
  2. 关于gprof 没有给出任何输出,我正在一个明确需要时间执行的程序上执行它。

该程序是本教程中的代码,复制如下:

//test_gprof.c
#include<stdio.h>

void new_func1(void)
{
    printf("\n Inside new_func1()\n");
    int i = 0;

    for(;i<0xffffffee;i++);

    return;
}

void func1(void)
{
    printf("\n Inside func1 \n");
    int i = 0;

    for(;i<0xffffffff;i++);
    new_func1();

    return;
}

static void func2(void)
{
    printf("\n Inside func2 \n");
    int i = 0;

    for(;i<0xffffffaa;i++);
    return;
}

int main(void)
{
    printf("\n Inside main()\n");
    int i = …
Run Code Online (Sandbox Code Playgroud)

gcc gprof mingw32 mingw-w64 msys2

5
推荐指数
1
解决办法
299
查看次数

标签 统计

gprof ×10

c++ ×4

g++ ×2

bash ×1

c ×1

call-graph ×1

cmake ×1

demangler ×1

gcc ×1

go ×1

linux ×1

macos ×1

mingw-w64 ×1

mingw32 ×1

msys2 ×1

optimization ×1

profiler ×1

profiling ×1

unix ×1