【发布时间】:2012-02-19 09:52:38
【问题描述】:
我正在 Keil Board 中编程,并试图计算 C 函数内的代码块执行所需的时钟周期数。
有没有办法在代码块之前和之后获得精确到微秒的时间,以便我可以得到差异并将其除以每微秒的时钟周期数来计算块消耗的时钟周期?
time.h 中的 clock() 函数以秒为单位给出时间,这将使 diff 为 0,因为它是一个小代码块,我正在尝试获取时钟周期。
如果这不是解决此问题的好方法,是否有替代方法?
【问题讨论】:
-
您是否尝试过使用各种时钟选项的clock_gettime()? CLOCK_MONOTONIC_RAW 或 CLOCK_PROCESS_CPUTIME_ID。但是为了准确起见,您需要在内核中启用高分辨率计时器(在常规发行版中,默认情况下已启用它,但它们并未完全嵌入)
-
clock_gettime() 仅在 linux 中可用。 Keil MicroVision IDE 附带的库 (time.h) 中没有它...
-
@EdwardH:rutxkl 未能准确说明他使用的是什么板/芯片,但大多数 Keil 板是低端 ARM 微控制器,不太可能运行 Linux,或者实际上除了一个简单的实时内核。我想你可能假设太多了!
-
@Clifford:确实有,帖子上的 Embedded-linux 标签让我很困惑。
-
@Edward:我没注意到!您的假设可能是有效的,但 rutxkl 响应表明它被错误标记。删除它。