使用循环计数进行吞吐量计算

时间:2010-06-17 18:05:31

标签: c embedded processor rtos throughput

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

4 个答案:

答案 0 :(得分: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() man page

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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