如何测量ARM Cortex-A8处理器中程序的执行时间?

我正在使用名为i.MX515的基于ARM Cortex-A8的处理器。有Linux Ubuntu 9.10发行版。我正在运行一个用C编写的非常大的应用程序,并且正在使用gettimeofday();函数来衡量应用程序花费的时间。


main()


{


gettimeofday(start);

....

....

....

gettimeofday(end);


}

该方法足以查看我的应用程序的哪些块花费了多少时间。但是,现在,我正在尝试通过计算时间的gettimeofday()方法来彻底优化我的代码,我发现连续运行之间(在优化前后运行)之间有很大的波动,所以我无法确定实际的执行时间,从而确定改进的影响。


谁能建议我该怎么办?


如果通过访问循环计数器(ARM网站上的Cortex-M3上的Idea建议)可以使我指向一些代码,该代码为我提供了访问Cortex-A8上的定时器寄存器所必须遵循的步骤?


如果此方法不太准确,请提出一些替代方案。


谢谢


回首忆惘然
浏览 937回答 3
3回答

慕标琳琳

现在已经过去了两年,以扩大Nils的答案!-访问这些计数器的简单方法是使用gator构建内核。然后,它报告计数器值以与Streamline一起使用,Streamline是ARM的性能分析工具。它将在时间轴上显示每个功能(从总体上概述系统的性能),确切显示执行所需的时间以及已占用的CPU百分比。您可以将其与您设置的每个计数器的图表进行比较,以收集并遵循CPU密集型任务直至源代码级别。Streamline可与所有Cortex-A系列处理器一起使用。
打开App,查看更多内容
随时随地看视频慕课网APP