我写了一个简单的测试c ++代码,这是我第一次尝试在我的mac中使用Time Profiler:
#include <iostream> // std::cout
int frank() { return 0; }
int main () {
int a = frank();
std::cout << a << std::endl;
return 0;
}
然后我编译了它:
g++ test.cpp -o test0
我使用时间配置文件来分析我的可执行文件test0
:
我以为我可以在frank()
中找到我的功能Call Tree
,但我没有。
另一个问题是如何将参数传递给Time Profiler中的可执行文件。
答案 0 :(得分:1)
仪器是一种采样分析器,其采样频率太低,无法检测到您对frank()的调用。要么在函数内执行一些计算成本昂贵的计算,要么只是调用它足够多次。
将代码调整为以下(C ++ 11),其中在循环中调用稍微复杂的函数:
#include <iostream> // std::cout
long frank(const unsigned int n) { return n*n; }
int main () {
const auto nr_iterations = 1000000u;
long a;
for (auto n = 0u; n < nr_iterations; ++n)
{
a = frank(n);
}
std::cout << a << std::endl;
return 0;
}
在我的机器上的仪器中得到以下结果:
要通过Instruments传递参数,请单击记录按钮旁边的目标名称。在显示的上下文菜单中,点击&#39;编辑目标'其中'target'是您的可执行文件的名称。例如:
出现一个对话窗口,您可以在其中输入参数。