【问题标题】:Performance analysis for Algorithms on Embedded Devices嵌入式设备算法的性能分析
【发布时间】:2011-01-08 03:27:02
【问题描述】:

我正在一个具有 ARM926Ej-S 处理器的嵌入式设备上做一个项目。我需要对设备上的算法进行性能分析。我是嵌入式环境的新手,不太了解什么是嵌入式设备的性能分析。

有人能告诉我应该考虑哪些参数进行分析吗? 又该如何实施?

谢谢大家

【问题讨论】:

    标签: performance embedded analysis


    【解决方案1】:

    你有什么样的调试环境?您有在线仿真器 (ICE) 吗?我建议您有一个调试环境,以便您可以在随机时间手动停止执行并检查程序的状态,包括调用堆栈 (stackshots)。以这种方式手动采样调用堆栈将揭示代码中占用大量时间的位置,以便您可以优化它们。 Here is a longer explanation.

    这可能与您所考虑的有所不同。许多人认为要找到需要优化的东西,您需要计时代码,但事实并非如此。计时是确定您所做的事情是否有所作为的好方法,但堆栈采样是,有些人认为,找出要做什么以有所作为的最佳方式。

    【讨论】:

    • 嗨,迈克,我没有调试环境。我计划通过 JTAG 为该设备。我不知道它是否可以用于此设备。现在,我正在使用串行端口与设备通信。我忘了通知 Linux 2.6.20 内核正在设备上运行最少的 GUI 应用程序。所以,我使用 gdb 来调试我的程序。请让我知道我是否可以使用 gdb 做同样的事情。谢谢
    • @sravan:是的,如果你可以在 gdb 下运行你的程序,control-C 是一种中断它的方法,这样你就可以检查调用堆栈。另一种方法是让程序运行,并在运行时使用 pstack 或 lsstack 程序。您可能需要在您的程序周围包裹一个循环,以使其“运行”足够长的时间来获取您的样本。
    【解决方案2】:

    我的方法是阅读参考手册 (http://www.arm.com/miscPDFs/5499.pdf),它应该涵盖您需要的所有内容。这将告诉您是否有浮点单元,FPU 中存在哪些缺点,使用 DMA 时必须记住的事项、缓存和内存布局以及内存总线速度和许多其他的东西如果您想正确高效地对该设备进行编程,这一点至关重要。

    不幸的是,我从未使用过这个特定的设备,所以我不能指出任何具体的东西,但你一定会在 RefManual 中找到你需要的一切。如果您了解硬件,则可以分析算法特定部分的性能影响。但是您必须了解硬件内部结构。

    【讨论】:

    • 感谢 darthcoder。我将通过参考手册。您能否通过我的回复对上述答案中的 Mike 发表评论并做出相应的回应。再次感谢
    • 如果您已经在使用 gdb 进行调试,则可以使用 gprof 进行分析。分析有两种方式,一种是 mike 喜欢的(sample-profile),另一种是时间配置文件。您可以使用 gprof,而不是手动检查调用堆栈,它已经支持示例分析。 gprof 只是自动获取 callstack-samples 并为您提供一个包含被调用函数的列表以及它们所花费的执行时间百分比。在某些情况下,时序配置文件会更有用,但我不知道 gprof 是否支持这一点。对于整体性能概述,sample-prof 就足够了。
    • 嗨 Darthcoder,我从未使用过 gprog 其他任何其他分析技术。但是,我会通过谷歌搜索来了解它们。如果您之前进行过分​​析,您能否向我推荐一些有关此的文档。同时,我将阅读有关示例分析以及如何使用 gdb 实现这些的信息。我也想做时间分析。
    • 开始使用 gprof 所需了解的一切都应该在这里:cs.utah.edu/dept/old/texinfo/as/gprof.html#SEC6。这将向您展示如何编译、运行和收集数据。
    猜你喜欢
    • 1970-01-01
    • 2012-03-30
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    相关资源
    最近更新 更多