我目前剖析我的代码,这是C99标准,使用gprof。 我的计划是递归定义 。 我用gcc与启用了一些警告,并没有优化标志的-pg标志进行编译。 然后我运行的代码,然后命令:
gprof ./myProgram > outputFile.txt
我以什么输出告诉我很困惑,虽然。 这是说,我花了很多时间在这我知道一个事实,我没有花很多时间的函数。有问题的功能有内循环和执行任务的时间定数。 这是一个很小的任务,不过,通过增加时间的任务,比如说,从完成5-100我得到的时间采取我的程序执行总量没有明显变化的数量。 然而,gprof的告诉我,我已经在这个函数花费的执行时间近50%。
我不知道是什么问题就在这里。 有没有人遇到这样的事情之前? 我能解决这个我自己? 我使用的Linux CentOS的分布。 我曾试图安装OProfile的为不同的探查,但没有到/ usr /本地写访问,所以make install的失败,所以不知道这是只与gprof的问题
以下是输出文件的相关部分。 怪异的输出是功能nl_jacobi_to_converge
:
从平面型材我有
% cumulative self self total
time seconds seconds calls s/call s/call name
49.02 7.50 7.50 1562 0.00 0.01 calculate_resid_numeric_jac_diags_tc41
16.41 10.01 2.51 323878716 0.00 0.00 c
14.97 12.30 2.29 323878716 0.00 0.00 b
6.01 13.22 0.92 89 0.01 0.02 calculate_resid_tc41
5.69 14.09 0.87 10967082 0.00 0.00 rhs_function
1.11 14.26 0.17 1562 0.00 0.00 single_nl_jacobi
...
0.00 15.30 0.00 11 0.00 0.76 nl_jacobi_to_converge
并从粒度我有
index % time self children called name
0.00 8.32 11/11 nl_multigrid [3]
[5] 54.4 0.00 8.32 11 nl_jacobi_to_converge [5]
5.28 2.92 1100/1562 calculate_resid_numeric_jac_diags_tc41 [4]
0.12 0.00 1100/1562 single_nl_jacobi [17]