我正在使用Keil Board进行编程,并且正在尝试计算C函数内代码块执行的时钟周期数.
有没有办法在代码块之前和之后获得精确到微秒的时间,这样我就可以得到diff并将其除以每微秒的时钟周期数来计算块所消耗的时钟周期?
time.h中的clock()函数以秒为单位给出时间,这将使diff为0,因为它是一个小代码块,我正在尝试获取时钟周期.
如果这不是解决这个问题的好方法,还有其他选择吗?
阅读芯片中的定时器,找到您正在使用的操作系统/环境尚未消耗并直接使用它.这需要一些练习,你需要使用volatiles不让编译器重新安排你的代码或不重新读取计时器.并且您需要调整计时器上的预分频器,以便在不翻转的情况下获得最实用的分辨率.因此,从一个大的预分频除数开始,说服自己它没有滚动,然后使预分频器除数更短,直到你达到除以1或达到所需的精度.如果除以1并不能给你足够的话,那么你必须在循环中多次调用该函数并在该循环中调用时间.请记住,每当您更改代码以添加这些度量时,您都可以并且将更改代码的性能,有时小到不注意,有时10% - 20%或更多.如果您使用缓存,那么您添加或删除的任何代码行都可以按两位数百分比更改性能,您必须了解有关此时代码计时的更多信息.
| 归档时间: |
|
| 查看次数: |
1315 次 |
| 最近记录: |