相关疑难解决方法(0)

gprof图书馆 - 问题

我需要在我们的系统中gprof一个库来检查函数调用,看看我们是否可以再优化它.基本上,我拥有的是

可执行文件A使用共享库myLib.so

我想gprof myLib.so.当我使用-pg选项编译myLib.so源时,它会生成一个.so文件.

但是,针对该库重新编译可执行文件A不会因某种原因生成*.gmon文件.需要做什么?我应该静态链接myLib吗?如果是这样,请告诉我如何.我是新手,所以请原谅我的无知.我每天都在学习

提前致谢.

profiling gprof

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

使用带套接字的gprof

我有一个我想用gprof配置的程序.问题(看似)是它使用套接字.所以我得到这样的事情:

::select(): Interrupted system call
Run Code Online (Sandbox Code Playgroud)

我不久就遇到了这个问题,放弃了,继续前进.但我真的希望能够使用gprof来描述我的代码,如果可能的话.我能做什么?我缺少一个gprof选项吗?套接字选项?在存在这些类型的系统调用时,gprof是完全无用的吗?如果是这样,有可行的替代方案吗?

编辑:平台:

  • Linux 2.6(x64)
  • GCC 4.4.1
  • gprof 2.19

c++ sockets profiling gprof

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

C++主要使用〜20%的时间说gprof

我尝试用gprof分析我的C++程序.程序本身运行了大约53秒,所以我不明白为什么它说,主要只运行了大约8.29秒.对此有何解释?

这是一段摘录:

index % time    self  children    called     name
                                                 <spontaneous>
[2]     20.5    0.00    8.29                 main [2]
                0.00    8.28       1/1           MPQS::start(std::basic_ofstream<char, std::char_traits<char> >&) [3]
                0.00    0.01       1/1           MPQS::MPQS(NTL::ZZ, long) [36]
                0.00    0.00       1/1           MPQS::~MPQS() [78]
-----------------------------------------------
                0.00    8.28       1/1           main [2]
[3]     20.5    0.00    8.28       1         MPQS::start(std::basic_ofstream<char, std::char_traits<char> >&) [3]
                7.15    1.08     801/801         MPQS::sieve() [4]
                0.00    0.04     801/801         MPQS::find_smooth_vals() [23]
                0.01    0.00       1/1           MPQS::try_solutions(NTL::mat_GF2&) [35]
                0.00    0.00     801/801         MPQS::compute_coeffecients() [59]
-----------------------------------------------
                7.15    1.08     801/801         MPQS::start(std::basic_ofstream<char, std::char_traits<char> >&) [3]
[4]     20.4    7.15 …
Run Code Online (Sandbox Code Playgroud)

c++ gprof

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

分析嵌入式应用程序

我有一个在嵌入式处理器(ARM)上运行的应用程序,我想分析应用程序,以了解它在哪里使用系统资源,如CPU,内存,IO等.应用程序运行在Linux,所以我假设有许多可用的分析应用程序.有没有人有什么建议?

谢谢!

编辑:我还应该添加我们使用的Linux版本有些旧(2.6.18).不幸的是,我现在没有很多控制权.

c++ linux embedded profiling

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

如何在C中分析openMPI程序的内存使用和性能

我正在寻找一种用C语言描述我的openMPI程序的方法,我正在使用带有Linux Ubuntu 9.10的openMPI 1.3,我的程序是在Intel Duo T1600下运行的.

我想要的是在程序的任何部分中的缓存未命中,内存使用和执行时间.

谢谢你的答复

profiling memory-management mpi

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

可以显示原始样品计数吗?

我想PERF到输出的原始样本数,而不是百分比.这对于确定我是否加快了我正在尝试优化的功能非常有用.

要清楚,我想做点什么

perf record ./a.out
perf report
Run Code Online (Sandbox Code Playgroud)

并查看在a.out中对每个函数进行多少次采样.

Shark可以在Mac上做到这一点,我相信Xperf.这是否可以在Linux上使用perf?

linux profiling

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

为什么gprof明显低估了程序的运行时间?

我有这个程序需要2.34秒才能运行,gprof表示它只需要1.18秒.我已经在其他地方读过答案,建议如果例如程序受I/O限制,gprof可能会出错,但这个程序显然不是.

这也适用于我试图描述的有用程序.这不是特定于这个琐碎的测试用例.

(同样在这种情况下,gprof表示main()占用了程序运行时间的100%以上,这是一个非常愚蠢的错误但不会给我带来麻烦.)

$ cat test.c
int main() {
    int i;
    for (i=0;i<1000000000;i++);
}

$ gcc test.c -o test

$ time ./test

real    0m2.342s
user    0m2.340s
sys 0m0.000s

$ gcc test.c -o test -pg

$ time ./test

real    0m2.342s
user    0m2.340s
sys 0m0.000s

$ gprof test |head
Flat profile:

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls  Ts/call  Ts/call  name    
101.33      1.18     1.18                             main

 %         the percentage of the total running time of …
Run Code Online (Sandbox Code Playgroud)

c profiling gprof

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

简单的Python代码需要很长时间才能运行,Hotshot错误报告

我正在尝试使用hotshot优化一些代码,我希望它很好,因为它是高性能的分析器和所有.但由于某种原因,我得到了非常不准确的结果.在我最近的分析运行中,hotshot报告了我称之为7.946秒的顶级函数的累积时间.但是,如果没有计时,我可以告诉它需要更长的时间.使用time.time()自己定时运行时间给我一个42.465秒的运行时间.我猜这是因为hotshot不计算系统IO时间或其他什么,我的程序是批量处理大量的二进制文件?

但是,使用更多time.time()块我将大部分额外时间使用(hotshot未注意到)缩小到不执行任何IO的较低级别处理功能.hotshot报告该功能的总时间和累计时间分别为4.414和6.185秒.但是,再次使用time.time()语句我发现它的累积时间超过30秒.在一个相对简单的代码块中花费的累积时间是7.32秒,比在整个函数中花费的热点更长.该块看起来像这样:

format = element[1]
if isinstance(format, tuple):
    format, operator, operand = format
else:
    operator, operand = (None, None)
Run Code Online (Sandbox Code Playgroud)

而已.这个区块运行了900多万次,所以也许我不应该感到惊讶的是花了这么多时间.但显然没有IO在这里完成.为什么热点如此低估了这个功能(以及整个程序)的时间?

在你问之前,不,我没有使用多线程或类似的东西.

python optimization profiling

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

如何编写一个简单的代码分析器?

我想知道像 quantify 这样的产品如何在不修改代码的情况下测量函数/方法中花费的时间。有人知道吗?

您是否有描述如何开始编写自己的工具的网页?

c++ profiling visual-studio

5
推荐指数
0
解决办法
2613
查看次数

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
查看次数