多个平台的性能分析[关闭]

Posted

技术标签:

【中文标题】多个平台的性能分析[关闭]【英文标题】:performance analysis of multiple platforms [closed] 【发布时间】:2013-05-06 10:05:46 【问题描述】:

我编写了一个程序,它以两种模式运行,顺序和多线程,目的是在多个处理器架构上运行它,然后分析处理器的性能并进行比较。

有什么工具可以帮助我做到这一点吗?查找执行时间,跟踪线程及其抢占,查找哪个处理器执行了哪个线程(如果在多核系统上),上下文切换开销和其他内容。

我已经具备使用 gprof 进行代码分析的基本知识,但我认为这还不够。我正在寻找具有相同想法但功能更强大的东西! 有什么帮助吗??

【问题讨论】:

【参考方案1】:

要获得有关执行时间、缓存行为等的更多信息,有多种方法。确保首先创建一个稳定的计算环境。锁定处理器频率以获得可​​靠的测量结果,例如在 Bios 中禁用 Intel SpeedStep;避免任何后台进程等。

低级性能计数器:

您可以使用高分辨率计数器检测您的代码并测量性能。看看PAPI interface for performance measurement。

高级分析器:

Perf,开源。 Perf 进行基于样本的测量并显示各种分析信息,完全支持多线程。例如,Perf Flamegraph 可以很好地概述代码中的热点。 英特尔 VTune,商业。将向您显示来自硬件计数器的详细缓存统计信息、每个线程的性能等。需要对硬件有一定的了解才能解释数据。

请注意,以上所有方法也可以测量功耗。

或者,您可以通过在操作系统中创建线程切换跟踪来查看程序随时间的行为。看看 Eclipse 的 LTTng 集成。

如果您想查看有关代码实际并行行为的更多信息,例如可能抑制并行性的数据依赖性、线程开销和缓存争用,您可以从 Vector Fabrics 访问 Pareon(免责声明:我是其中之一Vector Fabrics 的创始人)。这不是分析器,而是用于并行化的更多代码分析。

【讨论】:

以上是关于多个平台的性能分析[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

声音分析库? [关闭]

在 Node.js 同步/异步性能和速度中移动 100.000 多个文件 [关闭]

如果多个线程使用同一个对象,性能会受到影响吗? [关闭]

多个小型 spritesheet 或一个巨大的 spritesheet 以提高性能? ---(java游戏开发)[关闭]

RK3399平台开发系列讲解(内核入门篇)1.52printk函数分析 - 其函数调用时候会关闭中断

RK3399平台开发系列讲解(内核入门篇)1.52printk函数分析 - 其函数调用时候会关闭中断