在Solaris上计算函数调用

时间:2016-06-17 07:49:38

标签: c++ profiling solaris

我目前正在使用Frame rootFrame = Window.Current.Content as Frame; rootFrame.Navigate(typeof(Your Page Name)); collect在Solaris上分析C ++应用程序,但我只看到每个函数花费的秒数。

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

我是否应该在命令行中添加任何选项以启用计数器?或者我应该使用不同的工具?

1 个答案:

答案 0 :(得分:2)

collect命令不起作用 - 它示例正在运行的可执行文件以获取它收集的调用堆栈数据。

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

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

countfuncs.d:

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

然后运行:

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

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