计数 Solaris 上的函数调用

Count function calls on Solaris

我目前正在使用 collectanalyser 在 Solaris 上分析 C++ 应用程序,但我只能看到每个函数花费的秒数。

如何查看每个函数被调用的次数?

我应该在命令行中添加任何选项来启用计数器吗?还是我应该使用不同的工具?

collect 命令不会那样工作 - 它 采样 运行ning 可执行文件以获取它收集的调用堆栈数据。

您需要compile with -xpg并在生成的输出数据文件上使用profgprof

像这样的 dtrace 脚本也会收集函数调用计数:

countfuncs.d:

pid$target:::entry
{
    @[ probefunc ] = count();
}

然后 运行 即:

dtrace -s countfuncs.d -c your_program ...

根据我的经验,计算一个函数被调用的次数并不重要——重要的是 time(CPU 或挂钟)是多少花费在任何重要的功能上。如果一个函数占用了你 90% 的执行时间,那就是你花精力优化性能的地方,无论该函数被调用一次还是数十亿次。如果一个函数占用了0.001%的执行时间,那么无论调用多少次你都不会理会它。