3

是否可以根据应用程序消耗的周期计数(处理器指令周期)确定处理器上应用程序的吞吐量?如果是,如何计算?

4

4 回答 4

4

如果该进程完全受 CPU 限制,则您将处理器速度除以周期数以获得吞吐量。

实际上,很少有进程完全受 CPU 限制,在这种情况下,您必须考虑其他因素(磁盘速度、内存速度、序列化等)。

于 2010-06-17T18:09:40.367 回答
2

简单的:

#include <time.h>
clock_t c;
c = clock(); // c holds clock ticks value
c = c / CLOCKS_PER_SEC; // real time, if you need it

请注意,您获得的值是一个近似值,有关更多信息,请参见clock()手册页

于 2010-06-17T18:08:31.633 回答
0

一些 CPU 具有内部性能寄存器,使您能够收集各种有趣的统计数据,例如指令周期(有时甚至基于每个执行单元)、缓存未命中、缓存/内存读取/写入数等。您可以访问这些直接,但根据您使用的 CPU 和操作系统,可能有现有的工具可以通过 GUI 为您管理所有细节。一个好的分析工具通常会支持性能寄存器,并允许您使用它们收集统计数据。

于 2010-06-17T18:35:11.060 回答
0

如果您使用 TI/Luminary Micro 的Cortex-M3,您可以使用 TI/Luminary Micro 提供的驱动程序库。使用 SysTick 函数,您可以将 SysTickPeriod 设置为 1 个处理器周期:因此您在中断之间有 1 个处理器时钟。通过计算中断的数量,您应该对功能或功能块花费多少时间获得“足够接近的估计”。

于 2010-07-13T08:47:18.930 回答